Switch-Process
W systemach Linux i macOS polecenie cmdlet wywołuje funkcję execv()
, aby zapewnić podobne zachowanie jak powłoki POSIX.
Składnia
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Opis
Niektóre natywne polecenia systemu Unix są w powłoce uruchamiane (na przykład ssh) i używają wbudowanego polecenia bash
exec
, aby zduplikować nowy proces, który zastępuje bieżący. Domyślnie exec
nie jest prawidłowym poleceniem w programie PowerShell. Ma to wpływ na niektóre znane skrypty, takie jak copy-ssh-id
i niektóre podpolecenia azCLI.
Polecenie cmdlet Switch-Process
wywołuje natywną funkcję execv()
, aby zapewnić podobne zachowanie jak powłoki POSIX. To polecenie cmdlet i jego alias exec
zostały dodane w programie PowerShell 7.3.0.
Program PowerShell 7.3.1 zmienił alias exec
na funkcję, która opakowuje Switch-Process
. Funkcja umożliwia przekazywanie parametrów do natywnego polecenia, które może być błędnie powiązane z parametrem WithCommand.
To polecenie cmdlet jest dostępne tylko dla systemów innych niż Windows.
Przykłady
Przykład 1 — wykonywanie polecenia zależnego od polecenia "exec"
W tym przykładzie przyjęto założenie, że program PowerShell jest domyślną powłoką w systemie spoza systemu Windows.
ssh-copy-id
to popularny skrypt powłoki bash służący do wdrażania kluczy publicznych na maszynach docelowych na potrzeby uwierzytelniania opartego na kluczach. Skrypt zależy od polecenia powłoki bash, exec
.
ssh-copy-id user@host
Po włączeniu funkcji PSExec
skrypt ssh-copy-id
zakończy się pomyślnie.
Parametry
-WithCommand
Określa natywny plik wykonywalny (i wszystkie parametry), które mają być uruchamiane. Wszystkie dodatkowe wartości przekazywane jako argumenty są przekazywane jako tablica ciągów do wykonania za pomocą pierwszego polecenia.
Polecenie docelowe musi być natywnym plikiem wykonywalnym, a nie poleceniem programu PowerShell.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
String[]
Dane wyjściowe
Uwagi
Polecenie cmdlet Switch-Process
zostało utworzone w celu zapewnienia zgodności exec
to inne powłoki POSIX. W normalnych warunkach polecenie cmdlet nie jest przeznaczone do użycia w skryptach programu PowerShell.
Switch-Process
nie ma parzystości funkcji wbudowanej exec
w powłokach POSIX, takich jak obsługa deskryptorów plików, ale powinna obejmować większość przypadków.