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]
     [<CommonParameters>]
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-WorkingDirectory <string>]
     [-PassThru]
     [-Verb <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [<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.

Um das Programm anzugeben, das im Prozess ausgeführt wird, geben Sie eine ausführbare Datei oder Skriptdatei oder eine Datei ein, 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 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 eine neue 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. Der Parameter UseNewEnvironment gibt an, dass der Prozess mit eigenen Umgebungsvariablen ausgeführt wird.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

In diesem Beispiel wird das Splatting verwendet, um Parameter an das Cmdlet zu übergeben. Weitere Informationen finden Sie unter about_Splatting.

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.exedie Datei erstellt, die im PowerShell-Prozess ausgeführt wird. Die Verbs-Eigenschaft des ProcessStartInfo-Objekts zeigt, dass Sie die Open - und RunAs Verben 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-Befehlsdolmetscher und geben einen dir Befehl im Program Files Ordner aus. Da dieser Ordnername ein Leerzeichen enthält, muss der Wert in Escapezeichen eingeschlossen 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`""

Parameter

-ArgumentList

Gibt Parameter oder Parameterwerte an, die verwendet werden sollen, wenn dieses Cmdlet den Prozess startet. Argumente können als einzelne Zeichenfolge mit den durch Leerzeichen getrennten Argumenten oder als Array von Zeichenfolgen akzeptiert werden, die durch Kommas getrennt sind. Das Cmdlet verknüpft das Array mit einer einzelnen Zeichenfolge mit jedem Element des Arrays, das durch ein einzelnes Leerzeichen getrennt ist.

Die äußeren Anführungszeichen der PowerShell-Zeichenfolgen sind nicht enthalten, wenn die ArgumentList-Werte an den neuen Prozess übergeben werden. Wenn Parameter oder Parameterwerte ein Leerzeichen oder Anführungszeichen enthalten, müssen sie mit escaped doppelten Anführungszeichen umgeben sein. Weitere Informationen finden Sie unter about_Quoting_Rules.

Verwenden Sie für optimale Ergebnisse einen einzelnen ArgumentList-Wert , der alle Argumente und alle erforderlichen Anführungszeichen enthält.

Typ:String[]
Aliase:Args
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 Cmdlet generiertes Get-Credential 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 finden Sie unter "Wie sicher ist SecureString?".

Typ:PSCredential
Aliase:RunAs
Position:Named
Standardwert:Current user
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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. eine oder .doc eine .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.

Typ:String
Aliase:PSPath
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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.

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

Typ:SwitchParameter
Aliase:Lup
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-NoNewWindow

Startet den neuen Prozess im aktuellen Konsolenfenster. Unter Windows öffnet PowerShell standardmäßig ein neues Fenster.

Sie können die Parameter "NoNewWindow " und "WindowStyle " nicht im selben Befehl verwenden.

Typ:SwitchParameter
Aliase:nnw
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-PassThru

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

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 dateinamen ein. Standardmäßig werden die Fehler in der Konsole angezeigt.

Typ:String
Aliase:RSE
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-RedirectStandardInput

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

Typ:String
Aliase:RSI
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 dateinamen ein. Standardmäßig wird die Ausgabe in der Konsole angezeigt.

Typ:String
Aliase:RSO
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 Edit, , OpenPrint, , RunAsRunAsUser
.exe Open, RunAsRunAsUser
.txt Open, PrintPrintTo
.wav Open, Play

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.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Wait

Gibt an, dass dieses Cmdlet auf den angegebenen Prozess und dessen Nachfolger wartet, bevor weitere Eingaben akzeptiert werden. Dieser Parameter unterdrückt die Eingabeaufforderung oder behält das Fenster bei, bis die Prozesse abgeschlossen sind.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WindowStyle

Gibt den Status des Fensters an, das für den neuen Prozess verwendet wird. Der Standardwert ist Normal. Zulässige Werte für diesen Parameter:

  • Normal
  • Hidden
  • Minimized
  • Maximized

Sie können die Parameter "WindowStyle " und "NoNewWindow " nicht im selben Befehl verwenden.

Typ:ProcessWindowStyle
Zulässige Werte:Normal, Hidden, Minimized, Maximized
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WorkingDirectory

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

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

None

Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.

Process

Wenn Sie den PassThru-Parameter verwenden, gibt dieses Cmdlet ein Process-Objekt zurück.

Hinweise

Windows PowerShell enthält die folgenden Aliase für Start-Process:

  • saps
  • start

Systemeigene Befehle sind ausführbare Dateien, die im Betriebssystem installiert sind. Diese ausführbaren Dateien können über jede Befehlszeilenshell wie PowerShell ausgeführt werden. In der Regel führen Sie den Befehl genau wie in bash oder cmd.exe aus. Das Start-Process Cmdlet kann verwendet werden, um systemeigene Befehle auszuführen, sollte jedoch nur verwendet werden, wenn Sie steuern müssen, wie der Befehl ausgeführt wird.

Startet standardmäßig Start-Process asynchron einen Prozess. Die Steuerung wird sofort an PowerShell zurückgegeben, auch wenn der neue Prozess noch ausgeführt wird.

  • Im lokalen System lebt der gestartete Prozess unabhängig vom Aufrufprozess.
  • Auf einem Remotesystem wird der neue Prozess beendet, wenn die Remotesitzung endet, unmittelbar nach dem Start-Process Befehl. Daher können Sie in einer Remotesitzung nicht verwenden Start-Process , dass der gestartete Prozess die Sitzung überdauert.

Wenn Sie in einer Remotesitzung verwenden Start-Process müssen, rufen Sie sie mit dem Wait-Parameter auf. Sie können auch andere Methoden verwenden, um einen neuen Prozess auf dem Remotesystem zu erstellen.

Wenn Sie den Wait-Parameter verwenden, Start-Process wartet die Prozessstruktur (der Prozess und alle untergeordneten Elemente) vor dem Zurückgeben des Steuerelements auf das Beenden. Dies unterscheidet sich vom Verhalten des Wait-Process Cmdlets, das nur auf das Beenden der angegebenen Prozesse wartet.

Unter Windows besteht der am häufigsten verwendete Anwendungsfall darin Start-Process , den Status mithilfe des Wait-Parameters zu blockieren, bis der neue Prozess beendet wird. Auf nicht-Windows-Systemen ist dies selten erforderlich, da das Standardverhalten für Befehlszeilenanwendungen gleichbedeutend Start-Process -Waitist.

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