Dela via


Start-Process

Startar en eller flera processer på den lokala datorn.

Syntax

Default (Standard)

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>]

UseShellExecute

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 skapar Start-Process en ny process som ärver alla miljövariabler som definieras i den aktuella processen.

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

Du kan använda parametrarna för Start-Process 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 i Sorted.txt-filerna. Eventuella fel skrivs till filen SortError.txt. 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

I det här exemplet startas PowerShell med hjälp av 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

I exemplet används New-Object för att skapa ett System.Diagnostics.ProcessStartInfo-objekt för PowerShell.exe, filen som körs i PowerShell-processen. Egenskapen Verbs för objektet ProcessStartInfo visar att du kan använda verben Open och RunAs med PowerShell.exe, eller med valfri 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 mappen Program Files. 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 skapar Start-Process 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 kör Start-Process kommandot Linux nohup, som startar pwsh som en frånkopplad process. För mer information, se manualsidan 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 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 citattecknen 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 bör du använda ett enda ArgumentList-värde som innehåller alla argument och eventuella citattecken som behövs.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:Argument

Parameteruppsättningar

(All)
Position:1
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Confirm

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

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:jfr

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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-.

Anmärkning

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

Parameteregenskaper

Typ:PSCredential
Standardvärde:Current user
Stöder jokertecken:False
DontShow:False
Alias:RunAs

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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 .txt or-fil .doc , 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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:PSPath, Väg

Parameteruppsättningar

(All)
Position:0
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-LoadUserProfile

Anger att den här cmdleten läser in Windows-användarprofilen som lagras i HKEY_USERS registernyckeln 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.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:Lup

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:Sydlig

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-PassThru

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

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:RSE

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:RSI

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:RSO

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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 UseNewEnvironmenti Windows börjar den nya processen endast innehålla de standardmiljövariabler som definierats för Machine-omfånget. Detta har sidoeffekten att den är inställd på $env:USERNAMESYSTEM. Ingen av variablerna från omfånget Användare ingår.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

Default
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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 Redigera, Öppna, Skriv ut, RunAs, RunAsUser
.exe Öppna, RunAs, RunAsUser
.txt Öppna, Skriv ut, Skriv utTo
.wav Öppna, Spela upp

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. Tillgängliga verb finns i egenskapen Verbs för objektet ProcessStartInfo. Mer information finns i exemplen.

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

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

UseShellExecute
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-WhatIf

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

Den här parametern introducerades i PowerShell 6.0.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:Wi

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-WindowStyle

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

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.

Parameteregenskaper

Typ:ProcessWindowStyle
Standardvärde:None
Godkända värden:Normal, Hidden, Minimized, Maximized
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-WorkingDirectory

Anger den plats som den nya processen ska starta i. Standardvärdet är platsen för den körbara fil eller dokument som startas. Jokertecken stöds inte. Sökvägsnamnet får inte innehålla tecken som ska tolkas som jokertecken.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

None

Du kan inte skicka indata till den här cmdleten.

Utdata

None, System.Diagnostics.Process

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

Kommentarer

Som standard startar Start-Process 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 kommandot Start-Process. Därför kan du inte använda Start-Process i en fjärrsession och förvänta dig att den startade processen ska överleva sessionen.

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

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

I Windows är det vanligaste användningsfallet för Start-Process att använda parametern Wait för 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 metoden Start för klassen System.Diagnostics.Process. Mer information om den här metoden finns i Process.Start-metoden.