Starten von Prozessen mit Windows PowerShell

  1. Das Start-Process Cmdlet in PowerShell
  2. Die Cmdlet-Parameter Start-Process
  3. Die Vorteile von PowerShell Start-Prozess
Starten von Prozessen mit Windows PowerShell

Das Cmdlet Start-Process ist ein PowerShell-Befehl, mit dem einzelne oder mehrere Prozesse kontrolliert und verwaltet gestartet werden können. Standardmäßig erbt der gestartete Prozess alle aktuellen PowerShell-Umgebungen.

Das Cmdlet Start-Process kann eine ausführbare Datei, ein Batch-Skript, MS-DOS- und PowerShell-Befehle und sogar eine Java-Anwendung ausführen oder ausführen. Darüber hinaus kann Windows PowerShell das Cmdlet Start-Process verwenden, um Benutzerprofil, Windows-Status und Anmeldeinformationen usw. anzugeben.

In diesem Artikel wird erläutert, wie das Cmdlet Start-Process funktioniert und wie es beim Schreiben unserer Skripts verwendet wird.

Das Start-Process Cmdlet in PowerShell

Das Cmdlet Start-Process führt einen oder mehrere Prozesse, ausführbare oder Skriptdateien oder beliebige Dateien aus, die eine installierte Software auf dem Computer öffnen kann.

Das Cmdlet Start-Process hat eine grundlegende Syntax, die unten gezeigt wird, wenn Windows PowerShell verwendet wird.

Start-Process <string>

Die Cmdlet-Parameter Start-Process

Das Cmdlet Start-Process kann Parameter verwenden, um dem Cmdlet mehr Leistung, Funktionalität und Flexibilität hinzuzufügen.

Neuen Prozess oder ausführbare Datei starten

Wie bereits erwähnt, besteht die grundlegendste Verwendung des Befehls Start-Process darin, die ausführbare Datei, Batch- oder Skriptdatei oder einen Befehl wie die folgende Syntax bereitzustellen. Beispielsweise wird eine Notepad-Anwendung geöffnet, wenn sie mit der folgenden Syntax aufgerufen wird.

Start-Process notepad.exe

Alternativ kann das Cmdlet den Parameter -FilePath verwenden, um den Dateispeicherort anzugeben, den wir ausführen möchten.

Start-Process -FilePath notepad.exe

Wir können auch den vollständigen Pfad der ausführbaren Datei oder Batch-Datei unten angeben. Im folgenden Beispiel führen wir eine Batchdatei aus, die sich im folgenden Beispiel im Verzeichnis D:\scripts befindet.

Start-Process -FilePath "D:\scripts\backup.bat"

Standardeingabe als Datei festlegen

Wir können eine Prozesseingabe mit der Standardeingabe angeben, wobei bereitgestellte Standardeingabeinhalte in den angegebenen Prozess umgeleitet werden. In diesem Fall kann der Parameter -RedirectStandardInput eine Datei als Input in den neu erstellten Prozess setzen.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt

In der obigen Beispielsyntax stammt die ausführbare Eingabe backup.bat aus der Datei test.txt.

Standardausgabe als Datei festlegen

Wenn ein Prozess ausgeführt wird, kann er eine Ausgabe erzeugen, die wir auf dem Terminal, Bildschirm oder in einer Datei ausgeben können. Wir können den Parameter -RedirectStandardOutput verwenden, um die Ausgabe in eine Datei zu spezifizieren.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt

Die ausführbare Ausgabe backup.bat stammt aus der Datei test.txt in der Beispielsyntax oben.

Standardfehlerausgabe als Datei festlegen

Während der Ausführung eines Prozesses können Fehler auftreten, und Informationen zu diesen Fehlern werden standardmäßig in die Konsole oder das Terminal gedruckt. Mit dem Parameter -RedirectStandardError kann die Ausgabe in eine Datei wie unten umgeleitet werden.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt

Wenn in der obigen Beispielsyntax beim Ausführen der ausführbaren Datei backup.bat Fehler aufgetreten sind, werden die Fehler in der Datei errors.txt gedruckt.

Arbeitsverzeichnis festlegen

Standardmäßig wird ein neuer Prozess im aktuellen Arbeitsverzeichnis ausgeführt, was normalerweise das Systemlaufwerk C: ist. Wir können jedoch unten mit dem Parameter -WorkingDirectory ein neues Arbeitsverzeichnis festlegen.

Start-Process notepad.exe -WorkingDirectory "D:\"

Für dieses Beispiel

Neue Umgebung erstellen

Zusammen mit unseren vorherigen Parametern, die im Artikel besprochen wurden, können wir sie zu einem Skriptblock zusammenführen.

Der Parameter -UseNewEnvironment gibt an, dass der Prozess mit seinen Umgebungsvariablen läuft.

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

Start-Process im maximierten Fenster

Der Befehl Start-Process kann einen Befehlszeilenprozess oder einen GUI-Prozess starten, der möglicherweise eine GUI hat.

Das Skript kann die Größe des GUI-Fensters mit dem Parameter -WindowStyle festlegen. Dieser Parameter kann auf Maximiert eingestellt werden, um das neue Prozessfenster zu maximieren.

Start-Process notepad.exe -WindowStyle Maximized

Start-Prozess mit einem anderen Benutzer

Standardmäßig wird der gestartete Prozess mit den aktuellen Benutzerrechten ausgeführt. Das Cmdlet Start-Process kann jedoch die Berechtigungen des Prozesses mit dem Parameter -Credential ändern, indem es den neuen Benutzer angibt, mit dem wir den Prozess ausführen möchten.

Wenn Sie Ihren Benutzernamen eingeben, werden Sie aufgefordert, ein Passwort einzugeben.

Start-Process notepad.exe -Credential <username>

Start-Process als Administrator

Wir können die Anwendung als Administrator mit dem Parameter - Verb ausführen.

Start-Process notepad.exe -Verb RunAs
Hinweis
PowerShell muss aufgrund der Benutzerkontensteuerung (UAC) Ihres lokalen Computers möglicherweise nach Ihrer Bestätigung fragen, obwohl es als Administrator ausgeführt wird. Wir empfehlen, UAC aus Sicherheitsgründen nicht vollständig zu deaktivieren.

Start-Prozess mit angegebenen Argumenten

Befehle, Prozesse oder Batch-dateien können einzelne oder mehrere Argumente akzeptieren, um Eingabedaten zu erhalten.

Diese Eingabedaten werden als Argument bezeichnet, und der Befehl Start-Process kann dem gestarteten Prozess mit der -ArgumentList Argumente liefern. Bereitgestellte Argumentliste, die als Argumente an die Prozesse übergeben wird.

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

Die Vorteile von PowerShell Start-Prozess

  • Skriptdateien können nur lokal geöffnet werden. Es handelt sich um eine Sicherheitstechnik, die Remoteangriffe mithilfe von Windows PowerShell-Skripts verhindert.
    – Das Cmdlet wird in einer von Microsoft unterstützten Skriptumgebung ausgeführt. Solange Windows PowerShell unterstützt wird, stellt Microsoft Ressourcen bereit, um die Sprache mit Update-Revisionen auf dem neuesten Stand zu halten.
  • Eine große Entwickler-Community teilt bereitwillig ihr Wissen speziell mit dem Cmdlet Start-Process.
  • Die Cmdlets und Systemdatenspeicher verwenden standardisierte, konsistente Syntax und Namenskonventionen, um Daten einfach gemeinsam zu nutzen.
  • Mit diesem Cmdlet wird die Navigation des Betriebssystems vereinfacht, wodurch Benutzer sich mit dem Dateisystem, der Registrierung und anderen Daten vertraut machen können.
  • Objekte können einfach direkt manipuliert oder an andere Tools oder Datenbanken gesendet werden.
  • Softwareanbieter und -entwickler können benutzerdefinierte Tools erstellen.
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn