Udostępnij za pośrednictwem


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-Processelement . 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

Object

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.