Delen via


Start-Process

Start een of meer processen op de lokale computer.

Syntaxis

Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-Credential <pscredential>]
     [-WorkingDirectory <string>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <string>]
     [-RedirectStandardInput <string>]
     [-RedirectStandardOutput <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [<CommonParameters>]
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-WorkingDirectory <string>]
     [-PassThru]
     [-Verb <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [<CommonParameters>]

Description

De Start-Process cmdlet start een of meer processen op de lokale computer. Maakt standaard Start-Process 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 is gekoppeld aan het bestand, vergelijkbaar met de Invoke-Item cmdlet.

U kunt de parameters 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 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_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 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 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 een New-Object System.Diagnostics.ProcessStartInfo-object gemaakt voor powershell.exehet bestand dat wordt uitgevoerd in het PowerShell-proces. De eigenschap Werkwoorden van het object ProcessStartInfo laat zien dat u de functie Openen en RunAs werkwoorden kunt gebruiken met powershell.exe, of met elk 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 als ArgumentList wordt opgegeven. 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`""

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_Rules voor meer informatie.

Gebruik voor de beste resultaten één ArgumentList-waarde met alle argumenten en eventuele benodigde aanhalingstekens.

Type:String[]
Aliassen:Args
Position:1
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 SecureString.

Notitie

Zie Hoe veilig is SecureString SecureString?voor meer informatie over SecureString-gegevensbeveiliging.

Type:PSCredential
Aliassen:RunAs
Position:Named
Default value:Current user
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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, gebruikt u de parameter WorkingDirectory om het pad op te geven.

Type:String
Aliassen:PSPath
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Deze parameter heeft geen invloed op de PowerShell-profielen. Zie about_Profiles voor meer informatie.

Type:SwitchParameter
Aliassen:Lup
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-NoNewWindow

Start het nieuwe proces in het huidige consolevenster. PowerShell opent standaard een nieuw venster in Windows.

U kunt de parameters NoNewWindow en WindowStyle niet gebruiken in dezelfde opdracht.

Type:SwitchParameter
Aliassen:nnw
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Type:String
Aliassen:RSE
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Type:String
Aliassen:RSI
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Type:String
Aliassen:RSO
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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 Termen
cmd EditPrint, 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 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.

Type:String
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren: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.

Type:SwitchParameter
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-WindowStyle

Hiermee geeft u de status op van het venster dat wordt gebruikt voor het nieuwe proces. De standaardwaarde is Normal. De aanvaardbare waarden voor deze parameter zijn:

  • Normal
  • Hidden
  • Minimized
  • Maximized

U kunt de parameters WindowStyle en NoNewWindow niet gebruiken in dezelfde opdracht.

Type:ProcessWindowStyle
Geaccepteerde waarden:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-WorkingDirectory

Hiermee geeft u de locatie op waarin het nieuwe proces moet beginnen. De standaardwaarde is de locatie van het uitvoerbare bestand of document dat wordt gestart. Jokertekens worden niet ondersteund. Het pad mag geen tekens bevatten die als jokertekens worden geïnterpreteerd.

Type:String
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

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 procesobject .

Notities

Windows PowerShell bevat de volgende aliassen voor Start-Process:

  • saps
  • 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 Standaard wordt een proces asynchroon gestart. 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 Start-Process opdracht. Daarom kunt u niet gebruiken Start-Process in een externe sessie die 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 wachtparameter gebruikt, Start-Process wacht u tot de processtructuur (het proces en alle onderliggende onderliggende waarden) wordt afgesloten voordat u het besturingselement retourneert. Dit verschilt van het gedrag van de Wait-Process cmdlet, waarbij alleen wordt gewacht totdat de opgegeven processen zijn afgesloten.

In Windows is het meest voorkomende gebruiksvoorbeeld Start-Process om de wachtparameter te gebruiken 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 startmethode van de klasse System.Diagnostics.Process . Zie Process.Start Method voor meer informatie over deze methode.