Switch-Process

Unter Linux und macOS ruft das Cmdlet die execv() Funktion auf, um ein ähnliches Verhalten wie POSIX-Shells bereitzustellen.

Syntax

Switch-Process
      [[-WithCommand] <String[]>]
      [<CommonParameters>]

Beschreibung

Einige native Unix-Befehle führen eine Shell aus, um etwas auszuführen (z. B. SSH), und verwenden den integrierten bash-Befehl exec, um einen neuen Prozess zu erstellen, der den aktuellen ersetzt. Standardmäßig ist exec kein gültiger Befehl in PowerShell. Dies betrifft einige bekannte Skripts wie copy-ssh-id und einige Unterprojekte von AzCLI.

Das Switch-Process Cmdlet ruft die systemeigene execv() Funktion auf, um ein ähnliches Verhalten wie POSIX-Shells bereitzustellen. Dieses Cmdlet und sein Alias execwurden in PowerShell 7.3.0 hinzugefügt.

In PowerShell 7.3.1 wurde das exec-Alias in eine Funktion geändert, die Switch-Process umschließt. Mit der Funktion können Sie Parameter an den nativen Befehl übergeben, die möglicherweise fälschlicherweise an den WithCommand-Parameter gebunden wurden.

Dieses Cmdlet ist nur für Systeme verfügbar, die nicht auf Windows basieren.

Beispiele

Beispiel 1: Ausführen eines Befehls, der von "exec" abhängt

In diesem Beispiel wird davon ausgegangen, dass PowerShell die Standardshell auf einem Nicht-Windows-System ist. ssh-copy-id ist ein beliebtes Bash-Skript zum Bereitstellen öffentlicher Schlüssel auf Zielcomputern für die schlüsselbasierte Authentifizierung. Das Skript hängt vom Bash-Befehl ab. exec

ssh-copy-id user@host

Wenn das PSExec Feature aktiviert ist, wird das ssh-copy-id Skript erfolgreich ausgeführt.

Parameter

-WithCommand

Gibt die systemeigene ausführbare Datei (und alle Parameter) an, die ausgeführt werden sollen. Alle als Argumente übergebenen zusätzlichen Werte werden als Array von Zeichenfolgen übergeben, die mit dem ersten Befehl ausgeführt werden sollen.

Der Zielbefehl muss eine systemeigene ausführbare Datei und kein PowerShell-Befehl sein.

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

Eingaben

String[]

Ausgaben

Object

Hinweise

Das Switch-Process Cmdlet wurde erstellt, um Kompatibilität bereitzustellen exec , sind andere POSIX-Shells. Unter normalen Bedingungen ist das Cmdlet nicht für die Verwendung in PowerShell-Skripts vorgesehen. Switch-Process verfügt nicht über die Featureparität mit der integrierten Funktion in POSIX-Shells exec , z. B. wie Dateideskriptoren behandelt werden, sollten aber die meisten Fälle abdecken.