Switch-Process
In Linux e macOS il cmdlet chiama la execv()
funzione per fornire un comportamento simile a quello delle shell POSIX.
Sintassi
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Descrizione
Alcuni comandi Unix nativi eseguono una shell per eseguire qualcosa (ad esempio ssh) e usano il bash
comando exec
predefinito per generare un nuovo processo che sostituisce quello corrente. Per impostazione predefinita, exec
non è un comando valido in PowerShell. Questo influisce su alcuni script noti come copy-ssh-id
e alcuni sottocomandi di AzCLI.
Il Switch-Process
cmdlet chiama la funzione nativa execv()
per fornire un comportamento simile a quello delle shell POSIX. Questo cmdlet e il relativo alias, exec
, sono stati aggiunti in PowerShell 7.3.0.
PowerShell 7.3.1 ha modificato l'alias in una funzione che esegue il exec
wrapping di Switch-Process
. La funzione consente di passare parametri al comando nativo che potrebbe avere erroneamente associato al parametro WithCommand .
Questo cmdlet è disponibile solo per sistemi non Windows.
Esempio
Esempio 1: eseguire un comando che dipende da 'exec'
In questo esempio si presuppone che PowerShell sia la shell predefinita in un sistema non Windows. ssh-copy-id
è uno script bash comune per distribuire chiavi pubbliche nei computer di destinazione per l'autenticazione basata su chiavi. Lo script dipende dal comando bash, exec
.
ssh-copy-id user@host
Con la PSExec
funzionalità abilitata, lo ssh-copy-id
script ha esito positivo.
Parametri
-WithCommand
Specifica l'eseguibile nativo (ed eventuali parametri) da eseguire. Tutti i valori aggiuntivi passati come argomenti vengono passati come matrice di stringhe da eseguire con il primo comando.
Il comando di destinazione deve essere un eseguibile nativo, non un comando di PowerShell.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
String[]
Output
Note
Il Switch-Process
cmdlet è stato creato per garantire exec
la compatibilità è costituito da altre shell POSIX. In condizioni normali, il cmdlet non deve essere usato negli script di PowerShell. Switch-Process
non ha parità di funzionalità con la funzione predefinita exec
nelle shell POSIX, ad esempio come vengono gestiti i descrittori di file, ma deve coprire la maggior parte dei casi.