Freigeben über


Start-Process

Startet Prozesse auf dem lokalen 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>]

Beschreibung

Das Start-Process Cmdlet startet einen oder mehrere Prozesse auf dem lokalen Computer. Erstellt standardmäßig einen neuen Prozess, Start-Process der alle Umgebungsvariablen erbt, die im aktuellen Prozess definiert sind.

Geben Sie zum Angeben des Programms, das im Prozess ausgeführt wird, eine ausführbare Datei, eine Skriptdatei oder eine Datei an, die mit einem Programm auf dem Computer geöffnet werden kann. Wenn Sie eine nicht ausführbare Datei angeben, Start-Process startet das Programm, das der Datei zugeordnet ist, ähnlich dem Invoke-Item Cmdlet.

Sie können die Parameter von Start-Process verwenden, um Optionen anzugeben, z. B. das Laden eines Benutzerprofils, das Starten des Prozesses in einem neuen Fenster oder die Verwendung alternativer Anmeldeinformationen.

Beispiele

Beispiel 1: Starten eines Prozesses, der Standardwerte verwendet

In diesem Beispiel wird ein Prozess gestartet, der die Sort.exe Datei im aktuellen Ordner verwendet. Der Befehl verwendet alle Standardwerte, einschließlich des Standardfensterstils, des Arbeitsordners und der Anmeldeinformationen.

Start-Process -FilePath "sort.exe"

Beispiel 2: Drucken einer Textdatei

In diesem Beispiel wird ein Prozess gestartet, der die C:\PS-Test\MyFile.txt Datei druckt.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Beispiel 3: Starten eines Prozesses zum Sortieren von Elementen in einer neuen Datei

In diesem Beispiel wird ein Prozess gestartet, der Elemente in der Testsort.txt Datei sortiert und die sortierten Elemente in den Sorted.txt Dateien zurückgibt. Alle Fehler werden in die SortError.txt Datei geschrieben.

Start-Process -FilePath "Sort.exe" -RedirectStandardInput "Testsort.txt" -RedirectStandardOutput "Sorted.txt" -RedirectStandardError "SortError.txt" -UseNewEnvironment

Der Parameter UseNewEnvironment gibt an, dass der Prozess mit eigenen Umgebungsvariablen ausgeführt wird.

Beispiel 4: Starten eines Prozesses in einem maximierten Fenster

In diesem Beispiel wird der Notepad.exe Prozess gestartet. Das Fenster wird maximiert und beibehalten, bis der Prozess abgeschlossen wurde.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Beispiel 5: Starten von PowerShell als Administrator

In diesem Beispiel wird PowerShell mit der Option Als Administrator ausführen gestartet.

Start-Process -FilePath "powershell" -Verb RunAs

Beispiel 6: Verwenden verschiedener Verben zum Starten eines Prozesses

In diesem Beispiel wird gezeigt, wie Sie die Verben finden, die beim Starten eines Prozesses verwendet werden können. Die verfügbaren Verben werden durch die Dateinamenerweiterung der Datei bestimmt, die im Prozess ausgeführt wird.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args PowerShell.exe
$startExe.verbs

open
runas
runasuser

Im Beispiel wird New-Object ein System.Diagnostics.ProcessStartInfo-Objekt für PowerShell.exeerstellt, die Datei, die im PowerShell-Prozess ausgeführt wird. Die Verbs-Eigenschaft des ProcessStartInfo-Objekts zeigt, dass Sie die Verben Open und RunAs mit PowerShell.exeoder mit einem beliebigen Prozess verwenden können, der eine .exe Datei ausführt.

Beispiel 7: Angeben von Argumenten für den Prozess

Beide Befehle starten den Windows-Befehlsinterpreter und geben einen dir Befehl für den Program Files Ordner aus. Da dieser Ordnername ein Leerzeichen enthält, muss der Wert mit Escapezeichen umgeben sein. Beachten Sie, dass der erste Befehl eine Zeichenfolge als ArgumentList angibt. Der zweite Befehl ist ein Zeichenfolgenarray.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""

Beispiel 8: Create eines getrennten Prozesses unter Linux

Erstellt unter Windows einen unabhängigen Prozess, Start-Process der unabhängig von der Startshell ausgeführt wird. Auf Nicht-Windows-Plattformen wird der neu gestartete Prozess an die Shell angefügt, die gestartet wurde. Wenn die Startshell geschlossen ist, wird der untergeordnete Prozess beendet.

Um das Beenden des untergeordneten Prozesses auf Unix-ähnlichen Plattformen zu vermeiden, können Sie mit nohupkombinierenStart-Process. Im folgenden Beispiel wird eine Hintergrund-instance von PowerShell unter Linux gestartet, die auch nach dem Schließen der Startsitzung am Leben bleibt. Der nohup Befehl erfasst die Ausgabe in der Datei nohup.out im aktuellen Verzeichnis.

# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'

In diesem Beispiel Start-Process wird der Linux-Befehl nohup ausgeführt, der als getrennter Prozess gestartet pwsh wird. Weitere Informationen finden Sie auf der Manpage für nohup.

Parameter

-ArgumentList

Gibt Parameter oder Parameterwerte an, die verwendet werden sollen, wenn dieses Cmdlet den Prozess startet. Argumente können als einzelne Zeichenfolge akzeptiert werden, wobei die Argumente durch Leerzeichen getrennt sind, oder als array von Zeichenfolgen, die durch Kommas getrennt sind.

Wenn Parameter oder Parameterwerte ein Leerzeichen enthalten, müssen sie mit doppelten Anführungszeichen mit Escapezeichen umgeben werden. Weitere Informationen finden Sie unter about_Quoting_Rules.

Type:String[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Standardmäßig verwendet das Cmdlet die Anmeldeinformationen des aktuellen Benutzers.

Geben Sie einen Benutzernamen ein, z. B. User01 oder Domain01\User01, oder geben Sie ein vom Get-Credential Cmdlet generiertes PSCredential-Objekt ein. Wenn Sie einen Benutzernamen eingeben, werden Sie aufgefordert, das Kennwort einzugeben.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.

Hinweis

Weitere Informationen zum Schutz von SecureString-Daten finden Sie unter Wie sicher ist SecureString?.

Type:PSCredential
Aliases:RunAs
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Gibt den optionalen Pfad und Dateinamen des Programms an, das im Prozess ausgeführt wird. Geben Sie den Namen einer ausführbaren Datei oder eines Dokuments ein, z. B. einer oder .doc einer .txt Datei, die einem Programm auf dem Computer zugeordnet ist. Dieser Parameter ist erforderlich.

Wenn Sie nur einen Dateinamen angeben, verwenden Sie den WorkingDirectory-Parameter , um den Pfad anzugeben.

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

Gibt an, dass dieses Cmdlet das Windows-Benutzerprofil lädt, das HKEY_USERS im Registrierungsschlüssel für den aktuellen Benutzer gespeichert ist. Der Parameter gilt nicht für Nicht-Windows-Systeme.

Dieser Parameter wirkt sich nicht auf die PowerShell-Profile aus. Weitere Informationen finden Sie unter about_Profiles.

Type:SwitchParameter
Aliases:Lup
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewWindow

Startet den neuen Prozess im aktuellen Konsolenfenster. Unter Windows öffnet PowerShell standardmäßig ein neues Fenster. Auf Nicht-Windows-Systemen erhalten Sie nie ein neues Terminalfenster.

Der NoNewWindow-Parameter und der WindowStyle-Parameter können nicht im selben Befehl verwendet werden.

Der Parameter gilt nicht für Nicht-Windows-Systeme.

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Gibt ein Prozessobjekt für jeden Prozess zurück, der vom Cmdlet gestartet wurde. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardError

Gibt eine Datei an. Dieses Cmdlet sendet alle vom Prozess generierten Fehler an eine von Ihnen angegebene Datei. Geben Sie den Pfad und den Dateinamen ein. Standardmäßig werden die Fehler in der Konsole angezeigt.

Type:String
Aliases:RSE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardInput

Gibt eine Datei an. Dieses Cmdlet liest Eingaben aus der angegebenen Datei. Geben Sie den Pfad und den Dateinamen der Eingabedatei ein. Standardmäßig ruft der Prozess die Eingabe von der Tastatur ab.

Type:String
Aliases:RSI
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardOutput

Gibt eine Datei an. Dieses Cmdlet sendet die vom Prozess generierte Ausgabe an eine von Ihnen angegebene Datei. Geben Sie den Pfad und den Dateinamen ein. Standardmäßig wird die Ausgabe in der Konsole angezeigt.

Type:String
Aliases:RSO
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseNewEnvironment

Gibt an, dass dieses Cmdlet neue Umgebungsvariablen verwendet, die für den Prozess angegeben sind. Standardmäßig wird der gestartete Prozess mit den Umgebungsvariablen ausgeführt, die vom übergeordneten Prozess geerbt wurden.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Verb

Gibt ein Verb an, das verwendet werden soll, wenn dieses Cmdlet den Prozess startet. Die verfügbaren Verben werden durch die Dateinamenerweiterung der Datei bestimmt, die im Prozess ausgeführt wird.

Die folgende Tabelle enthält die Verben für einige allgemeine Prozessdateitypen:

Dateityp Verben
.cmd Bearbeiten, Öffnen, Drucken, RunAs, RunAsUser
.exe Open, RunAs, RunAsUser
.txt Öffnen, Drucken, Drucken
WAV Öffnen, Wiedergeben

Um die Verben zu finden, die mit der Datei verwendet werden können, die in einem Prozess ausgeführt wird, verwenden Sie das New-Object Cmdlet, um ein System.Diagnostics.ProcessStartInfo-Objekt für die Datei zu erstellen. Die verfügbaren Verben befinden sich in der Verbs-Eigenschaft des ProcessStartInfo-Objekts . Weitere Informationen finden Sie in den Beispielen.

Der Parameter gilt nicht für Nicht-Windows-Systeme.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Gibt an, dass dieses Cmdlet wartet, bis der angegebene Prozess und seine untergeordneten Elemente abgeschlossen sind, bevor weitere Eingaben akzeptiert werden. Dieser Parameter unterdrückt die Eingabeaufforderung oder behält das Fenster bei, bis die Prozesse abgeschlossen sind.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WindowStyle

Gibt den Status des für den neuen Prozess verwendeten Fensters an. Die zulässigen Werte für diesen Parameter sind : Normal, Ausgeblendet, Minimiert und Maximiert. Der Standardwert ist Normal.

Der WindowStyle-Parameter und der NoNewWindow-Parameter können nicht im selben Befehl verwendet werden.

Der Parameter gilt nicht für Nicht-Windows-Systeme.

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

Gibt den Speicherort an, an dem der neue Prozess gestartet werden soll. Der Standardwert ist der Speicherort der ausführbaren Datei oder des dokuments, die gestartet wird. Platzhalter werden nicht unterstützt. Der Pfadname darf keine Zeichen enthalten, die als Feldhalter interpretiert werden.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

None

Eingaben können nicht an dieses Cmdlet weitergereicht werden.

Ausgaben

None, System.Diagnostics.Process

Dieses Cmdlet generiert ein System.Diagnostics.Process-Objekt , wenn Sie den PassThru-Parameter angeben. Andernfalls wird von diesem Cmdlet keine Ausgabe zurückgegeben.

Hinweise

  • Dieses Cmdlet wird mithilfe der Start-Methode der System.Diagnostics.Process-Klasse implementiert. Weitere Informationen zu dieser Methode finden Sie unter Process.Start-Methode.

  • Wenn Sie unter Windows UseNewEnvironment verwenden, beginnt der neue Prozess nur mit den Standardumgebungsvariablen, die für den Bereich Computer definiert sind. Dies hat den Nebeneffekt, dass auf $env:USERNAMESYSTEM festgelegt ist. Keine der Variablen aus dem Benutzerbereich ist enthalten.

  • Unter Windows besteht der häufigste Anwendungsfall darin Start-Process , den Wait-Parameter zu verwenden, um den Fortschritt zu blockieren, bis der neue Prozess beendet wird. Auf Einem Nicht-Windows-System ist dies selten erforderlich, da das Standardverhalten für Befehlszeilenanwendungen entspricht Start-Process -Wait.

  • Bei Verwendung Start-Process auf Nicht-Windows-Systemen erhalten Sie nie ein neues Terminalfenster.