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łuszczane, 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 założono, że program PowerShell jest domyślną powłoką w systemie spoza systemu Windows. ssh-copy-id
to popularny skrypt powłoki Bash 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
funkcji skrypt zakończy się powodzeniem.
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.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.