Start-Process
Start een of meer processen op de lokale computer.
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
De Start-Process
cmdlet start een of meer processen op de lokale computer. Start-Process
Standaard maakt u een nieuw proces dat alle omgevingsvariabelen over neemt die in het huidige proces zijn gedefinieerd.
Als u het programma wilt opgeven dat in het proces wordt uitgevoerd, voert u een uitvoerbaar bestand of scriptbestand in, of een bestand dat kan worden geopend met behulp van een programma op de computer. Als u een niet-uitvoerbaar bestand opgeeft, Start-Process
start u het programma dat aan het bestand is gekoppeld, vergelijkbaar met de Invoke-Item
cmdlet.
U kunt de parameters van gebruiken om opties op te geven, zoals het laden van Start-Process
een gebruikersprofiel, het starten van het proces in een nieuw venster of het gebruik van alternatieve referenties.
Voorbeelden
Voorbeeld 1: Een proces starten dat standaardwaarden gebruikt
In dit voorbeeld wordt een proces gestart dat gebruikmaakt van het Sort.exe
bestand in de huidige map. De opdracht gebruikt alle standaardwaarden, inclusief de standaardvensterstijl, de werkmap en referenties.
Start-Process -FilePath "sort.exe"
Voorbeeld 2: Een tekstbestand afdrukken
In dit voorbeeld wordt een proces gestart waarmee het C:\PS-Test\MyFile.txt
bestand wordt afgedrukt.
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
Voorbeeld 3: Een proces starten om items naar een nieuw bestand te sorteren
In dit voorbeeld wordt een proces gestart dat items in het Testsort.txt
bestand sorteert en de gesorteerde items in de Sorted.txt
bestanden retourneert. Eventuele fouten worden naar het SortError.txt
bestand geschreven. De parameter UseNewEnvironment geeft aan dat het proces wordt uitgevoerd met eigen omgevingsvariabelen.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
In dit voorbeeld wordt splatting gebruikt om parameters door te geven aan de cmdlet. Zie about_Splatting voor meer informatie.
Voorbeeld 4: Een proces starten in een gemaximaliseerd venster
In dit voorbeeld wordt het Notepad.exe
proces gestart. Het venster wordt gemaximaliseerd en het venster blijft behouden totdat het proces is voltooid.
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
Voorbeeld 5: PowerShell starten als beheerder
In dit voorbeeld wordt PowerShell gestart met behulp van de optie Als administrator uitvoeren .
Start-Process -FilePath "powershell" -Verb RunAs
Voorbeeld 6: Verschillende werkwoorden gebruiken om een proces te starten
In dit voorbeeld ziet u hoe u de werkwoorden kunt vinden die kunnen worden gebruikt bij het starten van een proces. De beschikbare werkwoorden worden bepaald door de bestandsnaamextensie van het bestand dat tijdens het proces wordt uitgevoerd.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args PowerShell.exe
$startExe.verbs
open
runas
runasuser
In het voorbeeld wordt gebruikt New-Object
om een System.Diagnostics.ProcessStartInfo-object te maken voor PowerShell.exe, het bestand dat wordt uitgevoerd in het PowerShell-proces. De eigenschap Werkwoorden van het object ProcessStartInfo geeft aan dat u de woorden Openen en Uitvoeren als kunt gebruiken met PowerShell.exe
, of met elk proces waarmee een .exe
bestand wordt uitgevoerd.
Voorbeeld 7: Argumenten voor het proces opgeven
Met beide opdrachten wordt de Windows-opdrachtinterpreter gestart, met een dir
opdracht in de Program Files
map. Omdat deze mapnaam een spatie bevat, moet de waarde tussen aanhalingstekens worden geplaatst.
Houd er rekening mee dat met de eerste opdracht een tekenreeks wordt opgegeven als ArgumentList. De tweede opdracht is een tekenreeksmatrix.
Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""
Voorbeeld 8: een losgekoppeld proces Creatie in Linux
In Windows Start-Process
maakt u een onafhankelijk proces dat onafhankelijk van het starten van de shell wordt uitgevoerd. Op niet-Windows-platforms wordt het zojuist gestarte proces gekoppeld aan de shell die is gestart. Als de startshell wordt gesloten, wordt het onderliggende proces beëindigd.
Als u wilt voorkomen dat het onderliggende proces op Unix-achtige platforms wordt beëindigd, kunt u combineren Start-Process
met nohup
. In het volgende voorbeeld wordt een achtergrondexemplaar van PowerShell op Linux gestart dat actief blijft, zelfs nadat u de startsessie hebt gesloten. De nohup
opdracht verzamelt uitvoer in bestand nohup.out
in de huidige map.
# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'
In dit voorbeeld Start-Process
wordt de Linux-opdracht nohup
uitgevoerd, die wordt gestart pwsh
als een losgekoppeld proces. Zie de man-pagina voor nohup voor meer informatie.
Parameters
-ArgumentList
Hiermee geeft u parameters of parameterwaarden die moeten worden gebruikt wanneer deze cmdlet het proces start. Argumenten kunnen worden geaccepteerd als één tekenreeks met de argumenten gescheiden door spaties of als een matrix van tekenreeksen gescheiden door komma's. De cmdlet voegt de matrix samen in één tekenreeks waarbij elk element van de matrix wordt gescheiden door één spatie.
De buitenste aanhalingstekens van de PowerShell-tekenreeksen worden niet opgenomen wanneer de ArgumentList-waarden worden doorgegeven aan het nieuwe proces. Als parameters of parameterwaarden een spatie of aanhalingstekens bevatten, moeten deze tussen dubbele aanhalingstekens worden geplaatst. Zie about_Quoting_Rules voor meer informatie.
Voor de beste resultaten gebruikt u één ArgumentList-waarde die alle argumenten en eventueel benodigde aanhalingstekens bevat.
Type: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Hiermee geeft u een gebruikersaccount op dat gemachtigd is om deze actie uit te voeren. De cmdlet gebruikt standaard de referenties van de huidige gebruiker.
Typ een gebruikersnaam, zoals User01 of Domain01\User01, of voer een PSCredential-object in dat is gegenereerd door de Get-Credential
cmdlet. Als u een gebruikersnaam typt, wordt u gevraagd het wachtwoord in te voeren.
Referenties worden opgeslagen in een PSCredential-object en het wachtwoord wordt opgeslagen als een SecureString.
Notitie
Zie Hoe veilig is SecureString? voor meer informatie over SecureString-gegevensbeveiliging.
Type: | PSCredential |
Aliases: | RunAs |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Hiermee geeft u het optionele pad en de bestandsnaam van het programma dat wordt uitgevoerd in het proces. Voer de naam in van een uitvoerbaar bestand of van een document, zoals een .txt
bestand of .doc
bestand, dat is gekoppeld aan een programma op de computer. Deze parameter is vereist.
Als u alleen een bestandsnaam opgeeft, gebruikt u de parameter WorkingDirectory om het pad op te geven.
Type: | String |
Aliases: | PSPath, Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LoadUserProfile
Geeft aan dat met deze cmdlet het Windows-gebruikersprofiel wordt geladen dat is opgeslagen in de HKEY_USERS
registersleutel voor de huidige gebruiker. De parameter is niet van toepassing op niet-Windows-systemen.
Deze parameter heeft geen invloed op de PowerShell-profielen. Zie about_Profiles voor meer informatie.
Type: | SwitchParameter |
Aliases: | Lup |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewWindow
Start het nieuwe proces in het huidige consolevenster. In Windows opent PowerShell standaard een nieuw venster. Op niet-Windows-systemen krijgt u nooit een nieuw venster.
U kunt de parameters NoNewWindow en WindowStyle niet in dezelfde opdracht gebruiken.
De parameter is niet van toepassing op niet-Windows-systemen.
Type: | SwitchParameter |
Aliases: | nnw |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Retourneert een procesobject voor elk proces dat door de cmdlet is gestart. Deze cmdlet genereert standaard geen uitvoer.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardError
Hiermee geeft u een bestand. Met deze cmdlet worden eventuele fouten die door het proces worden gegenereerd, verzonden naar een bestand dat u opgeeft. Voer het pad en de bestandsnaam in. De fouten worden standaard weergegeven in de console.
Type: | String |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardInput
Hiermee geeft u een bestand. Deze cmdlet leest invoer uit het opgegeven bestand. Voer het pad en de bestandsnaam van het invoerbestand in. Standaard krijgt het proces de invoer van het toetsenbord.
Type: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardOutput
Hiermee geeft u een bestand. Deze cmdlet verzendt de uitvoer die door het proces wordt gegenereerd naar een bestand dat u opgeeft. Voer het pad en de bestandsnaam in. De uitvoer wordt standaard weergegeven in de console.
Type: | String |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseNewEnvironment
Geeft aan dat deze cmdlet nieuwe omgevingsvariabelen gebruikt die zijn opgegeven voor het proces. Standaard wordt het gestarte proces uitgevoerd met de omgevingsvariabelen die zijn overgenomen van het bovenliggende proces.
Wanneer u in Windows UseNewEnvironment gebruikt, wordt het nieuwe proces alleen gestart met de standaardomgevingsvariabelen die zijn gedefinieerd voor het machinebereik . Dit heeft de nevenwerking dat de $env:USERNAME
is ingesteld op SYSTEM. Geen van de variabelen uit het gebruikersbereik worden opgenomen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Verb
Hiermee geeft u een werkwoord te gebruiken wanneer deze cmdlet het proces start. De beschikbare werkwoorden worden bepaald door de bestandsnaamextensie van het bestand dat in het proces wordt uitgevoerd.
In de volgende tabel ziet u de werkwoorden voor een aantal veelvoorkomende procesbestandstypen.
Bestandstype | Werkwoorden |
---|---|
cmd | Bewerken, Openen, Afdrukken, RunAs, RunAsUser |
.exe | Open, RunAs, RunAsUser |
.txt | Openen, Afdrukken, Afdrukken naar |
.wav | Openen, afspelen |
Als u de werkwoorden wilt vinden die kunnen worden gebruikt met het bestand dat in een proces wordt uitgevoerd, gebruikt u de New-Object
cmdlet om een System.Diagnostics.ProcessStartInfo-object voor het bestand te maken. De beschikbare werkwoorden bevinden zich in de eigenschap Werkwoorden van het object ProcessStartInfo . Zie de voorbeelden voor meer informatie.
De parameter is niet van toepassing op niet-Windows-systemen.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
Geeft aan dat deze cmdlet wacht tot het opgegeven proces en de onderliggende waarden zijn voltooid voordat meer invoer wordt geaccepteerd. Deze parameter onderdrukt de opdrachtprompt of behoudt het venster totdat de processen zijn voltooid.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.
Deze parameter is geïntroduceerd in PowerShell 6.0.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WindowStyle
Hiermee geeft u de status van het venster dat wordt gebruikt voor het nieuwe proces. De acceptabele waarden voor deze parameter zijn: Normaal, Verborgen, Geminimaliseerd en Gemaximaliseerd. De standaardwaarde is Normaal.
U kunt de parameters WindowStyle en NoNewWindow niet in dezelfde opdracht gebruiken.
De parameter is niet van toepassing op niet-Windows-systemen. Wanneer u op niet-Windows-systemen gebruikt, krijgt u nooit een nieuw venster.
Type: | ProcessWindowStyle |
Accepted values: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WorkingDirectory
Hiermee geeft u de locatie op waarop het nieuwe proces moet beginnen. De standaardinstelling is de locatie van het uitvoerbare bestand of document dat wordt gestart. Jokertekens worden niet ondersteund. De padnaam mag geen tekens bevatten die worden geïnterpreteerd als jokertekens.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
None
U kunt geen invoer doorspezen naar deze cmdlet.
Uitvoerwaarden
None, System.Diagnostics.Process
Met deze cmdlet wordt een System.Diagnostics.Process-object gegenereerd als u de parameter PassThru opgeeft. Anders retourneert deze cmdlet geen uitvoer.
Notities
Standaard wordt Start-Process
een proces asynchroon gestart. Beheer wordt direct teruggeleid naar PowerShell, zelfs als het nieuwe proces nog steeds wordt uitgevoerd.
- Op het lokale systeem bevindt het gestarte proces zich onafhankelijk van het aanroepende proces.
- Op een extern systeem wordt het nieuwe proces beëindigd wanneer de externe sessie wordt beëindigd, onmiddellijk na de
Start-Process
opdracht . Daarom kunt u niet gebruikenStart-Process
in een externe sessie als u verwacht dat het gestarte proces de sessie overleeft.
Als u in een externe sessie moet gebruiken Start-Process
, roept u deze aan met de parameter Wait . U kunt ook andere methoden gebruiken om een nieuw proces op het externe systeem te maken.
Wanneer u de parameter Wait gebruikt, Start-Process
wacht u tot de processtructuur (het proces en alle onderliggende items) is afgesloten voordat het besturingselement wordt geretourneerd. Dit is anders dan het gedrag van de Wait-Process
cmdlet, die alleen wacht tot de opgegeven processen zijn afgesloten.
In Windows is de meest voorkomende use case voor Start-Process
het gebruik van de parameter Wait om de voortgang te blokkeren totdat het nieuwe proces wordt afgesloten. Op een niet-Windows-systeem is dit zelden nodig omdat het standaardgedrag voor opdrachtregeltoepassingen gelijk is aan Start-Process -Wait
.
Deze cmdlet wordt geïmplementeerd met behulp van de startmethode van de klasse System.Diagnostics.Process . Zie Process.Start Method voor meer informatie over deze methode.