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]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-Environment <hashtable>]
[-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 Start-Process
köras 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 att 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önsterformatet, arbetsmappen och autentiseringsuppgifterna.
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
Det här exemplet använder 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 är klar.
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 någon process 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: Skapa en frånkopplad process i Linux
I Windows Start-Process
skapar en oberoende process som fortfarande körs oberoende av startgränssnittet. På plattformar som inte är 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 håller sig vid liv ä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ör du Linux-kommandot nohup
, som startas pwsh
som en frånkopplad process. Mer information finns i nohup-artikeln på Wikipedia.
Exempel 9: Åsidosätta en miljövariabel för en process
När du använder Start-Process
skapas den nya processen som standard med samma miljövariabler som den aktuella sessionen. Du kan använda miljöparametern för att åsidosätta värdena för dessa variabler.
I det här exemplet läggs miljövariabeln FOO
till i sessionen med foo
som värde.
Exemplet körs Start-Process
tre gånger och returnerar värdet FOO
för varje gång. Det första kommandot åsidosätter inte miljövariabeln. I det andra kommandot FOO
är inställt på bar
. I det tredje kommandot FOO
är inställt på $null
, vilket tar bort det.
$env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = 'bar'
}
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = $null
}
foo
bar
Parametrar
-ArgumentList
Anger parametrar eller parametervärden som ska användas när den här cmdleten startar processen. Argument kan accepteras som en enskild sträng med argument avgränsade med blanksteg eller som en matris med strängar avgränsade med kommatecken. Cmdleten sammanfogar matrisen till en enda sträng med varje element i matrisen avgränsat med ett enda blanksteg.
De yttre citatteckna för PowerShell-strängarna ingår 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 citattecken som behövs.
Typ: | String[] |
Alias: | Args |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Kommentar
Mer information om SecureString-dataskydd finns i Hur säker är SecureString?.
Typ: | PSCredential |
Alias: | RunAs |
Position: | Named |
Standardvärde: | Current user |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Environment
Anger en eller flera miljövariabler som ska åsidosättas för processen som en hash-tabell. Ange namnet på en miljövariabel som en nyckel i hash-tabellen och önskat värde. Om du vill ta bort en miljövariabel anger du dess värde som $null
.
De angivna variablerna ersätts i processen. När du anger PATH
miljövariabeln ersätts den med värdet följt av $PSHOME
det angivna värdet från den här parametern. I Windows lägger kommandot till värdena för PATH
i dator- och användaromfången efter det nya värdet.
Den här parametern lades till i PowerShell 7.4.
Typ: | Hashtable |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-FilePath
Anger den valfria sökvägen och filnamnet för programmet som körs i processen. Ange namnet på en körbar fil eller ett dokument, till exempel en eller .doc
en .txt
fil, som är associerad med ett program på datorn. Den här parametern krävs.
Om du bara anger ett filnamn som inte motsvarar ett systemkommando använder du parametern WorkingDirectory för att ange sökvägen.
Typ: | String |
Alias: | PSPath, Path |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Typ: | SwitchParameter |
Alias: | Lup |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-NoNewWindow
Starta den nya processen i det aktuella konsolfönstret. Som standard i Windows öppnar PowerShell ett nytt fönster. På 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.
Typ: | SwitchParameter |
Alias: | nnw |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-PassThru
Returnerar ett processobjekt för varje process som cmdleten startade. Som standard genererar den här cmdleten inga utdata.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Typ: | String |
Alias: | RSE |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 sina indata från tangentbordet.
Typ: | String |
Alias: | RSI |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Typ: | String |
Alias: | RSO |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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:USERNAME
SYSTEM. Ingen av variablerna från användaromfånget ingår.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 ProcessStartInfo-objektet. Mer information finns i exemplen.
Parametern gäller inte för icke-Windows-system.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Wait
Anger att denna cmdlet 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.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 på icke-Windows-system får du aldrig ett nytt fönster.
Typ: | ProcessWindowStyle |
Godkända värden: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-WorkingDirectory
Anger den plats som den nya processen ska starta i.
När den inte har angetts används cmdleten som standard på den fullständigt kvalificerade plats som anges i parametern FilePath . Om värdet för FilePath-parametern inte är fullständigt kvalificerat, är det som standard den aktuella arbetskatalogen för anropsprocessen.
Jokertecken stöds inte. Sökvägen får inte innehålla tecken som skulle tolkas som jokertecken.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka objekt till den här cmdleten.
Utdata
None
Som standard returnerar den här cmdleten inga utdata.
När du använder parametern PassThru returnerar den här cmdleten ett processobjekt .
Kommentarer
PowerShell innehåller följande alias för Start-Process
:
- Alla plattformar
saps
- Windows
start
Interna kommandon är körbara filer som är installerade i operativsystemet. Dessa körbara filer kan köras från valfritt kommandoradsgränssnitt, till exempel PowerShell. Vanligtvis kör du kommandot exakt 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-Process 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 lever den lanserade processen på oberoende av samtalsprocessen.
- I ett fjärrsystem avslutas den nya processen när fjärrsessionen avslutas, omedelbart efter
Start-Process
kommandot . Därför kan du inte användaStart-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 . Du kan också använda andra metoder för att skapa en ny process i fjärrsystemet.
När du använder parametern Start-Process
Vänta 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 hjälp av startmetoden för klassen System.Diagnostics.Process . Mer information om den här metoden finns i Process.Start-metoden.