Udostępnij za pośrednictwem


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 bashexec, 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 execzostał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

Object

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.