Start-Process în PowerShell

Procese și servicii Windows PowerShell 2.0

Pornește un program sau deschide un fișier cu aplicația asociată, opțional ca administrator, într-o fereastră nouă sau așteptând să se termine.

Sintaxă
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-Wait] [-PassThru]
Start-Process [-FilePath] <string> -Verb <string> [-WindowStyle <ProcessWindowStyle>]

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 -ArgumentList o 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-Process nu î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 RunAs cu -NoNewWindow, -Credential sau 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.