Start-Process
Start een of meer processen op de lokale computer.
Syntaxis
UseShellExecute
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
De cmdlet Start-Process start een of meer processen op de lokale computer. Standaard maakt Start-Process een nieuw proces dat alle omgevingsvariabelen over neemt die zijn gedefinieerd in het huidige proces.
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 Start-Process het programma dat is gekoppeld aan het bestand, vergelijkbaar met de Invoke-Item cmdlet.
U kunt de parameters van Start-Process gebruiken om opties op te geven, zoals het laden van een gebruikersprofiel, het starten van het proces in een nieuw venster of het gebruik van alternatieve referenties.
Voorbeelden
Voorbeeld 1: Een proces starten dat gebruikmaakt van standaardwaarden
In dit voorbeeld wordt een proces gestart dat gebruikmaakt van het Sort.exe-bestand in de huidige map. De opdracht gebruikt alle standaardwaarden, waaronder 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 te sorteren naar een nieuw bestand
In dit voorbeeld wordt een proces gestart waarmee items in het TestSort.txt bestand worden gesorteerd en de gesorteerde items in de Sorted.txt bestanden worden geretourneerd. Eventuele fouten worden naar het SortError.txt-bestand geschreven. De parameter UseNewEnvironment geeft aan dat het proces wordt uitgevoerd met zijn 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_Splattingvoor 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 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 als administrator.
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 in het proces wordt uitgevoerd.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.Verbs
open
runas
runasuser
In het voorbeeld wordt New-Object gebruikt 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 en RunAs werkwoorden kunt gebruiken met powershell.exeof met een proces waarmee een .exe bestand wordt uitgevoerd.
Voorbeeld 7: Argumenten opgeven voor het proces
Beide opdrachten starten de Windows-opdracht-interpreter, die een dir opdracht uitgeeft in de Program Files map. Omdat deze mapnaam een spatie bevat, moet de waarde tussen escape-aanhalingstekens staan.
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 maken in Linux
In Windows maakt Start-Process een onafhankelijk proces dat onafhankelijk van de startshell wordt uitgevoerd. Op niet-Windows-platforms wordt het zojuist gestarte proces gekoppeld aan de shell die is gestart. Als de startshell is gesloten, wordt het onderliggende proces beëindigd.
Om te voorkomen dat het onderliggende proces op Unix-achtige platforms wordt beëindigd, kunt u Start-Process combineren met nohup. In het volgende voorbeeld wordt een achtergrondexemplaren van PowerShell in Linux gestart, zelfs nadat u de startsessie hebt gesloten. De opdracht nohup 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 voert Start-Process de opdracht Linux nohup uit, waarmee pwsh wordt gestart als een losgekoppeld proces. Zie het artikel nohup op Wikipedia voor meer informatie.
Voorbeeld 9: een omgevingsvariabele voor een proces overschrijven
Wanneer u Start-Processgebruikt, wordt het nieuwe proces standaard gemaakt met dezelfde omgevingsvariabelen als de huidige sessie. U kunt de parameter Environment gebruiken om de waarden van deze variabelen te overschrijven.
In dit voorbeeld wordt de omgevingsvariabele FOO toegevoegd aan de sessie met foo als de waarde.
In het voorbeeld wordt Start-Process drie keer uitgevoerd en wordt elke keer de waarde van FOO geretourneerd. De eerste opdracht overschrijft de omgevingsvariabele niet. In de tweede opdracht is FOO ingesteld op bar. In de derde opdracht is FOO ingesteld op $null, waardoor deze wordt verwijderd.
$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
Parameters
-ArgumentList
Hiermee geeft u parameters of parameterwaarden op 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 met tekenreeksen gescheiden door komma's. De cmdlet koppelt de matrix aan één tekenreeks met elk element van de matrix, 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 worden omgeven door dubbele aanhalingstekens tussen escape-aanhalingstekens. Zie about_Quoting_Rulesvoor meer informatie.
Gebruik voor de beste resultaten één ArgumentList waarde met alle argumenten en eventuele benodigde aanhalingstekens.
Parametereigenschappen
| Type: | String[] |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | Argumenten |
Parametersets
(All)
| Position: | 1 |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Confirm
Voordat u de cmdlet uitvoert, vraagt het systeem om bevestiging.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | Cf |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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.
Opmerking
Zie voor meer informatie over SecureString gegevensbeveiliging Hoe veilig is SecureString?.
Parametereigenschappen
| Type: | PSCredential |
| Default value: | Current user |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | RunAs |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Environment
Hiermee geeft u een of meer omgevingsvariabelen op die moeten worden overschreven voor het proces als een hash-tabel. Geef de naam van een omgevingsvariabele op als sleutel in de hash-tabel en de gewenste waarde. Als u een omgevingsvariabele wilt opheffen, geeft u de waarde op als $null.
De opgegeven variabelen worden in het proces vervangen. Wanneer u de omgevingsvariabele PATH opgeeft, wordt deze vervangen door de waarde van $PSHOME gevolgd door de opgegeven waarde uit deze parameter. In Windows voegt de opdracht de waarden voor PATH toe in de bereiken Machine en Gebruiker na de nieuwe waarde.
Deze parameter is toegevoegd in PowerShell 7.4.
Parametereigenschappen
| Type: | Hashtable |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-FilePath
Hiermee geeft u het optionele pad en de bestandsnaam van het programma dat in het proces wordt uitgevoerd. Voer de naam in van een uitvoerbaar bestand of van een document, zoals een .txt of .doc bestand, dat is gekoppeld aan een programma op de computer. Deze parameter is vereist.
Als u alleen een bestandsnaam opgeeft die niet overeenkomt met een systeemopdracht, gebruikt u de parameter WorkingDirectory om het pad op te geven.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | PSPath, Path |
Parametersets
(All)
| Position: | 0 |
| Verplicht: | True |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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_Profilesvoor meer informatie.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | Lup |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-NoNewWindow
Start het nieuwe proces in het huidige consolevenster. PowerShell opent standaard een nieuw venster in Windows. Op niet-Windows-systemen krijgt u nooit een nieuw venster.
U kunt de parameters NoNewWindow en WindowStyle niet gebruiken in dezelfde opdracht.
De parameter is niet van toepassing op niet-Windows-systemen.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | nnw |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-PassThru
Retourneert een procesobject voor elk proces dat door de cmdlet is gestart. Deze cmdlet genereert standaard geen uitvoer.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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. Standaard worden de fouten weergegeven in de console.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | RSE |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | 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 haalt het proces de invoer van het toetsenbord op.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | RSI |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-RedirectStandardOutput
Hiermee geeft u een bestand. Met deze cmdlet wordt de uitvoer die door het proces wordt gegenereerd, verzonden naar een bestand dat u opgeeft. Voer het pad en de bestandsnaam in. Standaard wordt de uitvoer weergegeven in de console.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | RSO |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-UseNewEnvironment
Geeft aan dat deze cmdlet nieuwe omgevingsvariabelen gebruikt die zijn opgegeven voor het proces. Het gestarte proces wordt standaard uitgevoerd met de omgevingsvariabelen die zijn overgenomen van het bovenliggende proces.
Wanneer u in Windows UseNewEnvironmentgebruikt, wordt het nieuwe proces alleen gestart met de standaardomgevingsvariabelen die zijn gedefinieerd voor het bereik Machine. Dit heeft het neveneffect dat de $Env:USERNAME is ingesteld op SYSTEM. Geen van de variabelen uit het bereik Gebruiker zijn opgenomen.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
Default
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Verb
Hiermee geeft u een werkwoord op dat moet worden gebruikt 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 enkele veelvoorkomende procesbestandstypen.
| Bestandstype | Werkwoorden |
|---|---|
| .cmd |
Edit
Print, Open, RunAsRunAsUser |
| .exe |
Open, , RunAsRunAsUser |
| .txt |
Open, , PrintPrintTo |
| .wav |
Open, Play |
Als u de werkwoorden wilt vinden die kunnen worden gebruikt met het bestand dat in een proces wordt uitgevoerd, gebruikt u de cmdlet New-Object 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.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
UseShellExecute
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-Wait
Geeft aan dat deze cmdlet wacht tot het opgegeven proces en de onderliggende waarden zijn voltooid voordat er meer invoer wordt geaccepteerd. Deze parameter onderdrukt de opdrachtprompt of behoudt het venster totdat de processen zijn voltooid.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-WhatIf
Toont wat er zou gebeuren wanneer de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.
Deze parameter is geïntroduceerd in PowerShell 6.0.
Parametereigenschappen
| Type: | SwitchParameter |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
| Aliassen: | Wi |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-WindowStyle
Hiermee geeft u de status op van het venster dat wordt gebruikt voor het nieuwe proces. De standaardwaarde is Normal.
De acceptabele waarden voor deze parameter zijn:
NormalHiddenMinimizedMaximized
U kunt de parameters WindowStyle en NoNewWind ow niet gebruiken in dezelfde opdracht.
De parameter is niet van toepassing op niet-Windows-systemen. Wanneer u niet-Windows-systemen gebruikt, krijgt u nooit een nieuw venster.
Parametereigenschappen
| Type: | ProcessWindowStyle |
| Default value: | None |
| Geaccepteerde waarden: | Normal, Hidden, Minimized, Maximized |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
-WorkingDirectory
Hiermee geeft u de locatie op waarin het nieuwe proces moet beginnen.
Wanneer deze niet is opgegeven, wordt de cmdlet standaard ingesteld op de volledig gekwalificeerde locatie die is opgegeven in de parameter FilePath. Als de waarde van de parameter FilePath niet volledig is gekwalificeerd, wordt deze standaard ingesteld op de huidige werkmap van het aanroepproces.
Wildcards worden niet ondersteund. Het pad mag geen tekens bevatten die als jokertekens worden geïnterpreteerd.
Parametereigenschappen
| Type: | String |
| Default value: | None |
| Ondersteunt jokertekens: | False |
| DontShow: | False |
Parametersets
(All)
| Position: | Named |
| Verplicht: | False |
| Waarde uit pijplijn: | False |
| Waarde uit pijplijn op eigenschapsnaam: | False |
| Waarde van resterende argumenten: | False |
CommonParameters
Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.
Invoerwaarden
None
U kunt geen objecten doorsluisen naar deze cmdlet.
Uitvoerwaarden
None
Deze cmdlet retourneert standaard geen uitvoer.
Process
Wanneer u de parameter PassThru gebruikt, retourneert deze cmdlet een Process-object.
Notities
PowerShell bevat de volgende aliassen voor Start-Process:
- Alle platforms
saps
- Windows
start
Systeemeigen opdrachten zijn uitvoerbare bestanden die zijn geïnstalleerd in het besturingssysteem. Deze uitvoerbare bestanden kunnen worden uitgevoerd vanuit elke opdrachtregelshell, zoals PowerShell. Meestal voert u de opdracht precies zo uit als in bash of cmd.exe. De Start-Process cmdlet kan worden gebruikt om systeemeigen opdrachten uit te voeren, maar moet alleen worden gebruikt wanneer u wilt bepalen hoe de opdracht wordt uitgevoerd.
Start-Process is handig voor het uitvoeren van GUI-programma's op niet-Windows-platforms. Voer bijvoorbeeld Start-Process gedit uit om de grafische teksteditor te starten die gemeenschappelijk is voor de BUREAUBLADomgevingen VAN KABOUT.
Standaard start Start-Process een proces asynchroon. Control wordt direct teruggezet 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 opdracht
Start-Process. Daarom kunt uStart-Processniet gebruiken in een externe sessie die verwacht dat het gestarte proces de sessie overleeft.
Als u Start-Process in een externe sessie moet gebruiken, 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, wacht Start-Process totdat de processtructuur (het proces en alle bijbehorende afstammelingen) wordt afgesloten voordat de controle wordt geretourneerd. Dit verschilt van het gedrag van de Wait-Process cmdlet, die alleen wacht tot de opgegeven processen zijn afgesloten.
In Windows is het meest voorkomende gebruiksvoorbeeld voor Start-Process het gebruik van de parameter Wait om de voortgang te blokkeren totdat het nieuwe proces wordt afgesloten. In het 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 methode Start van de klasse System.Diagnostics.Process. Zie Process.Start Methodvoor meer informatie over deze methode.