Switch-Process
Unter Linux und macOS ruft das Cmdlet die execv() Funktion auf, um ein ähnliches Verhalten wie POSIX-Shells bereitzustellen.
Syntax
Default (Standard)
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Beschreibung
Einige native Unix-Befehle werden aus der Shell ausgeführt (z. B. ssh), und verwenden Sie den bash integrierten Befehl exec , um einen neuen Prozess zu erstellen, der den aktuellen Ersetzt. Standardmäßig exec ist kein gültiger Befehl in PowerShell vorhanden. Dies wirkt sich auf einige bekannte Skripts wie copy-ssh-id und einige Unterbefehle von AzCLI aus.
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.
PowerShell 7.3.1 änderte den exec Alias zu einer Funktion, die umschließt Switch-Process. Die Funktion erlaubt es dir, Parameter an den nativen Befehl zu übergeben, die möglicherweise fälschlicherweise an den WithCommand-Parameter gebunden wurden.
Dieses Cmdlet ist nur für Systeme ohne Windows verfügbar.
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.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
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.