Ce face Start-Process
Start-Process pornește un proces nou pe computerul local. -FilePath poate fi un executabil, un script sau un document: pentru un fișier care nu e executabil (.txt, .pdf), se deschide programul asociat, ca la dublu-clic. Procesul nou moștenește variabilele de mediu ale sesiunii, iar din PowerShell 7.4 le poți suprascrie cu -Environment.
Implicit comanda este asincronă: PowerShell îți dă imediat promptul înapoi. Cu -Wait aștepți ca procesul și toți descendenții lui să se termine, iar cu -PassThru primești obiectul Process, din care citești de exemplu ExitCode. Argumentele din -ArgumentList sunt lipite într-un singur șir, separate prin spațiu; o valoare care conține spații trebuie înconjurată cu ghilimele duble escapate (`").
Pentru programele de consolă obișnuite nu ai nevoie de Start-Process: le rulezi direct (git status) și primești ieșirea în pipeline. Start-Process e util când vrei control: altă fereastră, alt utilizator (-Credential), drepturi de administrator (-Verb RunAs). Parametrii -Verb, -WindowStyle, -NoNewWindow și -LoadUserProfile nu se aplică pe Linux și macOS; acolo procesul pornit rămâne legat de shell și se închide odată cu el. Aliasuri: saps peste tot, start doar pe Windows.
Parametri
| Parametru | Descriere |
|---|---|
-FilePath |
Programul sau documentul de deschis (aliasuri -Path, -PSPath). Obligatoriu. |
-ArgumentList |
Argumentele pentru program, ca un singur șir sau ca tablou de șiruri (alias -Args). |
-WorkingDirectory |
Folderul în care pornește procesul. |
-Wait |
Așteaptă ca procesul și descendenții lui să se termine. |
-PassThru |
Întoarce obiectul Process al procesului pornit. |
-Verb |
Acțiunea din meniul Windows pentru tipul de fișier: RunAs (ca administrator, cu fereastra UAC), Print, Open. Doar pe Windows. |
-WindowStyle |
Starea ferestrei: Normal, Hidden, Minimized, Maximized. Nu se combină cu -NoNewWindow. |
-NoNewWindow |
Rulează procesul în fereastra de consolă curentă (doar Windows). |
-RedirectStandardOutput / -RedirectStandardError |
Scrie ieșirea, respectiv erorile procesului, într-un fișier. |
-Credential |
Pornește procesul cu alt cont de utilizator. |
-Environment |
Tabel hash cu variabile de mediu de suprascris; valoarea $null șterge variabila. Din PowerShell 7.4. |
Ce returnează
Nimic, implicit; cu -PassThru, un obiect System.Diagnostics.Process.
Exemple
Exemplul 1: Deschiderea unui fișier text în Notepad
Programul pornește în fereastra lui, iar promptul revine imediat.
Start-Process -FilePath notepad.exe -ArgumentList 'C:\Proiecte\facturi\note.txt'
Exemplul 2: O fereastră PowerShell nouă, ca administrator
Windows afișează fereastra de confirmare UAC; după acceptare se deschide un pwsh cu drepturi ridicate. În terminal nu apare nimic.
Start-Process -FilePath pwsh -Verb RunAs
Exemplul 3: Arhivare cu 7-Zip și verificarea codului de ieșire
-Wait așteaptă terminarea, -WindowStyle Hidden ascunde fereastra, iar ExitCode 0 înseamnă succes la 7-Zip.
$p = Start-Process -FilePath 'C:\Program Files\7-Zip\7z.exe' -ArgumentList 'a', 'C:\Arhive\facturi.zip', 'C:\Proiecte\facturi' -Wait -PassThru -WindowStyle Hidden
$p.ExitCode
Ieșire în terminal
0
Greșeli frecvente
- Dai în
-ArgumentListo cale cu spații fără ghilimele escapate ('C:\Proiecte noi\a.txt'): programul primește două argumente; scrie"`"C:\Proiecte noi\a.txt`"". - Aștepți ca
$x = Start-Process ...să conțină textul afișat de program:Start-Processnu întoarce ieșirea; rulează programul direct sau folosește-RedirectStandardOutput. - Uiți
-Waitîntr-un script și pasul următor folosește un fișier pe care programul încă nu l-a creat. - Combini
-Verb RunAscu-NoNewWindow,-Credentialsau redirecționări: sunt în seturi de parametri diferite și comanda dă eroare.
Comenzi înrudite
Get-Process: Afișează procesele care rulează pe computerul local, cu memoria folosită, timpul de procesor și ID-ul (PID) fiecăruia.Stop-Process: Oprește unul sau mai multe procese locale, după nume, după ID sau primite prin pipeline de la Get-Process.Start-Service / Stop-Service: Pornesc, opresc și repornesc servicii Windows; cer o sesiune PowerShell deschisă ca administrator.