Condividi tramite


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.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

String[]

Output

Object

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.