Switch-Process
W systemach Linux i macOS polecenie cmdlet wywołuje execv()
funkcję, aby zapewnić podobne zachowanie jak powłoki POSIX.
Składnia
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Opis
Niektóre natywne polecenia systemu Unix są wyświetlane w powłoce, aby uruchomić coś (na przykład ssh) i użyć wbudowanego bash
polecenia 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 Switch-Process
cmdlet wywołuje funkcję natywną 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ł exec
alias na funkcję, która opakowuje Switch-Process
element . 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 PSExec
ssh-copy-id
tej funkcji skrypt 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 Switch-Process
cmdlet zostało utworzone w celu zapewnienia exec
zgodności z innymi powłokami POSIX. W normalnych warunkach polecenie cmdlet nie jest przeznaczone do użycia w skryptach programu PowerShell. Switch-Process
Nie ma parzystości funkcji z wbudowaną exec
funkcją w powłokach POSIX, takich jak sposób obsługi deskryptorów plików, ale powinna obejmować większość przypadków.