Start-Process

Startar en eller flera processer på den lokala datorn.

Syntax

Start-Process
     [-FilePath] <String>
     [[-ArgumentList] <String[]>]
     [-Credential <PSCredential>]
     [-WorkingDirectory <String>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <String>]
     [-RedirectStandardInput <String>]
     [-RedirectStandardOutput <String>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Process
     [-FilePath] <String>
     [[-ArgumentList] <String[]>]
     [-WorkingDirectory <String>]
     [-PassThru]
     [-Verb <String>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

Cmdleten Start-Process startar en eller flera processer på den lokala datorn. Som standard Start-Process skapar en ny process som ärver alla miljövariabler som definieras i den aktuella processen.

Ange programmet som körs i processen genom att ange en körbar fil eller skriptfil eller en fil som kan öppnas med ett program på datorn. Om du anger en fil som inte kan köras Start-Process startar programmet som är associerat med filen, ungefär som cmdleten Invoke-Item .

Du kan använda parametrarna Start-Process för för att ange alternativ, till exempel läsa in en användarprofil, starta processen i ett nytt fönster eller använda alternativa autentiseringsuppgifter.

Exempel

Exempel 1: Starta en process som använder standardvärden

Det här exemplet startar en process som använder Sort.exe filen i den aktuella mappen. Kommandot använder alla standardvärden, inklusive standardfönstrets format, arbetsmapp och autentiseringsuppgifter.

Start-Process -FilePath "sort.exe"

Exempel 2: Skriv ut en textfil

Det här exemplet startar en process som skriver ut C:\PS-Test\MyFile.txt filen.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Exempel 3: Starta en process för att sortera objekt till en ny fil

Det här exemplet startar en process som sorterar objekt i TestSort.txt filen och returnerar de sorterade objekten Sorted.txt i filerna. Eventuella fel skrivs till SortError.txt filen. Parametern UseNewEnvironment anger att processen körs med egna miljövariabler.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

I det här exemplet används splatting för att skicka parametrar till cmdleten. Mer information finns i about_Splatting.

Exempel 4: Starta en process i ett maximerat fönster

Det här exemplet startar Notepad.exe processen. Det maximerar fönstret och behåller fönstret tills processen har slutförts.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Exempel 5: Starta PowerShell som administratör

Det här exemplet startar PowerShell med alternativet Kör som administratör .

Start-Process -FilePath "powershell" -Verb RunAs

Exempel 6: Använda olika verb för att starta en process

Det här exemplet visar hur du hittar de verb som kan användas när du startar en process. De tillgängliga verben bestäms av filnamnstillägget för filen som körs i processen.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs

open
runas
runasuser

Exemplet använder New-Object för att skapa ett System.Diagnostics.ProcessStartInfo-objekt för powershell.exe, filen som körs i PowerShell-processen. Verbegenskapen för objektet ProcessStartInfo visar att du kan använda Öppna och RunAs verb med powershell.exe, eller med alla processer som kör en .exe fil.

Exempel 7: Ange argument i processen

Båda kommandona startar Windows-kommandotolken och utfärdar ett dir kommando i Program Files mappen . Eftersom det här mappnamnet innehåller ett blanksteg måste värdet omges av undantagna citattecken. Observera att det första kommandot anger en sträng som ArgumentList. Det andra kommandot är en strängmatris.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Exempel 8: Kör ett kommando som administratör med alternativa autentiseringsuppgifter

I Windows kan du köra Start-Process -Verb RunAs för att starta en process med förhöjd behörighet. Detta höjer den aktuella användarens kontext. Med parametern Autentiseringsuppgifter kan du ange ett alternativt användarnamn och lösenord så att du kan starta en process i ett annat användarinnehåll. Parametrarna Credential och Verb kan dock inte användas tillsammans.

Om du vill starta en process med utökade rättigheter med alternativa autentiseringsuppgifter måste du först starta PowerShell med de alternativa autentiseringsuppgifterna och sedan använda Start-Process för att starta processen med utökade rättigheter.

$cred = Get-Credential
$args = '-noprofile -command "Start-Process cmd.exe -Verb RunAs -args /k"'
Start-Process pwsh.exe -Credential $cred -WindowStyle Hidden -ArgumentList $args

Exemplet börjar cmd.exe med förhöjda behörigheter från en PowerShell-session som körs under alternativa autentiseringsuppgifter.

Exempel 9: Skapa en frånkopplad process i Linux

I Windows Start-Process skapar en oberoende process som körs oberoende av startgränssnittet. På andra plattformar än Windows-plattformar är den nyligen startade processen kopplad till gränssnittet som startades. Om startgränssnittet stängs avslutas den underordnade processen.

För att undvika att avsluta den underordnade processen på Unix-liknande plattformar kan du kombinera Start-Process med nohup. I följande exempel startas en bakgrundsinstans av PowerShell på Linux som förblir aktiv även efter att du har stängt startsessionen. Kommandot nohup samlar in utdata i filen nohup.out i den aktuella katalogen.

# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'

I det här exemplet Start-Process körs Linux-kommandot nohup , som startas pwsh som en frånkopplad process. Mer information finns på man-sidan för nohup.

Parametrar

-ArgumentList

Anger parametrar eller parametervärden som ska användas när den här cmdleten startar processen. Argument kan accepteras som en enda sträng med argumenten avgränsade med blanksteg eller som en matris med strängar avgränsade med kommatecken. Cmdleten kopplar matrisen till en enda sträng med varje element i matrisen avgränsat med ett enda blanksteg.

De yttre citattecknarna för PowerShell-strängarna inkluderas inte när ArgumentList-värdena skickas till den nya processen. Om parametrar eller parametervärden innehåller ett blanksteg eller citattecken måste de omges av undantagna dubbla citattecken. Mer information finns i about_Quoting_Rules.

För bästa resultat använder du ett enda ArgumentList-värde som innehåller alla argument och eventuella nödvändiga citattecken.

Type:String[]
Aliases:Args
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Anger ett användarkonto som har behörighet att utföra den här åtgärden. Som standard använder cmdleten den aktuella användarens autentiseringsuppgifter.

Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential-objekt som genereras av cmdleten Get-Credential . Om du skriver ett användarnamn uppmanas du att ange lösenordet.

Autentiseringsuppgifter lagras i ett PSCredential-objekt och lösenordet lagras som en SecureString.

Anteckning

Mer information om SecureString-dataskydd finns i Hur säkert är SecureString?.

Type:PSCredential
Aliases:RunAs
Position:Named
Default value:Current user
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Anger den valfria sökvägen och filnamnet för det program som körs i processen. Ange namnet på en körbar fil eller ett dokument, till exempel en .txt eller .doc en fil, som är associerad med ett program på datorn. Den här parametern krävs.

Om du bara anger ett filnamn använder du parametern WorkingDirectory för att ange sökvägen.

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

Anger att den här cmdleten läser in Windows-användarprofilen som lagras i registernyckeln HKEY_USERS för den aktuella användaren. Parametern gäller inte för icke-Windows-system.

Den här parametern påverkar inte PowerShell-profilerna. Mer information finns i about_Profiles.

Type:SwitchParameter
Aliases:Lup
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-NoNewWindow

Starta den nya processen i det aktuella konsolfönstret. Som standard i Windows öppnar PowerShell ett nytt fönster. I icke-Windows-system får du aldrig ett nytt fönster.

Du kan inte använda parametrarna NoNewWindow och WindowStyle i samma kommando.

Parametern gäller inte för icke-Windows-system.

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Returnerar ett processobjekt för varje process som cmdleten startade. Som standard genererar den här cmdleten inga utdata.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardError

Anger en fil. Den här cmdleten skickar eventuella fel som genereras av processen till en fil som du anger. Ange sökvägen och filnamnet. Som standard visas felen i konsolen.

Type:String
Aliases:RSE
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardInput

Anger en fil. Den här cmdleten läser indata från den angivna filen. Ange sökvägen och filnamnet för indatafilen. Som standard hämtar processen indata från tangentbordet.

Type:String
Aliases:RSI
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardOutput

Anger en fil. Den här cmdleten skickar utdata som genereras av processen till en fil som du anger. Ange sökvägen och filnamnet. Som standard visas utdata i konsolen.

Type:String
Aliases:RSO
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-UseNewEnvironment

Anger att den här cmdleten använder nya miljövariabler som angetts för processen. Som standard körs den startade processen med miljövariablerna som ärvts från den överordnade processen.

När du använder UseNewEnvironment i Windows börjar den nya processen endast innehålla de standardmiljövariabler som definierats för datoromfånget . Detta har den bieffekt som är inställd på $env:USERNAMESYSTEM. Ingen av variablerna från användaromfånget ingår.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Verb

Anger ett verb som ska användas när den här cmdleten startar processen. De verb som är tillgängliga bestäms av filnamnstillägget för filen som körs i processen.

I följande tabell visas verben för några vanliga processfiltyper.

Filtyp Verb
.cmd Edit, Open, Print, RunAs, RunAsUser
.exe Open, RunAs, RunAsUser
.txt Open, Print, PrintTo
.wav Open, Play

Om du vill hitta de verb som kan användas med filen som körs i en process använder du cmdleten New-Object för att skapa ett System.Diagnostics.ProcessStartInfo-objekt för filen. De tillgängliga verben finns i verbegenskapen för objektet ProcessStartInfo . Mer information finns i exemplen.

Parametern gäller inte för icke-Windows-system.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Anger att den här cmdleten väntar på att den angivna processen och dess underordnade ska slutföras innan fler indata accepteras. Den här parametern utelämnar kommandotolken eller behåller fönstret tills processerna har slutförts.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Den här parametern introducerades i PowerShell 6.0.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WindowStyle

Anger tillståndet för fönstret som används för den nya processen. Standardvärdet är Normal. De acceptabla värdena för den här parametern är:

  • Normal
  • Hidden
  • Minimized
  • Maximized

Du kan inte använda parametrarna WindowStyle och NoNewWindow i samma kommando.

Parametern gäller inte för icke-Windows-system. När du använder andra system än Windows får du aldrig ett nytt fönster.

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

Anger den plats som den nya processen ska starta i. Standardinställningen är platsen för den körbara filen eller dokumentet som startas. Jokertecken stöds inte. Sökvägen får inte innehålla tecken som skulle tolkas som jokertecken.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Indata

None

Du kan inte skicka indata till denna cmdlet.

Utdata

None, System.Diagnostics.Process

Den här cmdleten genererar ett System.Diagnostics.Process-objekt om du anger parametern PassThru . Annars returnerar denna cmdlet inga utdata.

Kommentarer

PowerShell innehåller följande alias för Start-Process:

  • Alla plattformar
    • saps
  • Windows
    • start

Interna kommandon är körbara filer som installeras i operativsystemet. Dessa körbara filer kan köras från valfritt kommandoradsgränssnitt, till exempel PowerShell. Vanligtvis kör du kommandot precis som du skulle göra i bash eller cmd.exe. Cmdleten Start-Process kan användas för att köra inbyggda kommandon, men bör endast användas när du behöver styra hur kommandot körs.

Start-Process är användbart för att köra GUI-program på icke-Windows-plattformar. Kör till exempel Start-Proces gedit för att starta den grafiska textredigeraren som är gemensam för GNOME Desktop-miljöerna.

Som standard Start-Process startar en process asynkront. Kontrollen returneras omedelbart till PowerShell även om den nya processen fortfarande körs.

  • I det lokala systemet är den lanserade processen oberoende av samtalsprocessen.
  • På ett fjärrsystem avslutas den nya processen när fjärrsessionen avslutas, omedelbart efter Start-Process kommandot . Därför kan du inte använda Start-Process i en fjärrsession som förväntar sig att den startade processen ska överleva sessionen.

Om du behöver använda Start-Process i en fjärrsession anropar du den med parametern Vänta . Eller så kan du använda andra metoder för att skapa en ny process i fjärrsystemet.

När du använder parametern Start-ProcessWait väntar du på att processträdet (processen och alla underordnade) ska avslutas innan kontrollen returneras. Detta skiljer sig från cmdletens Wait-Process beteende, som bara väntar på att de angivna processerna ska avslutas.

I Windows är det vanligaste användningsfallet för att använda parametern Vänta för Start-Process att blockera förloppet tills den nya processen avslutas. I icke-Windows-system behövs detta sällan eftersom standardbeteendet för kommandoradsprogram motsvarar Start-Process -Wait.

Den här cmdleten implementeras med startmetoden för klassen System.Diagnostics.Process. Mer information om den här metoden finns i Process.Start-metoden.