Compartilhar via


Switch-Process

No Linux e no macOS, o cmdlet chama a execv() função para fornecer um comportamento semelhante aos shells POSIX.

Sintaxe

Switch-Process
      [[-WithCommand] <String[]>]
      [<CommonParameters>]

Description

Alguns comandos Unix nativos usam shell externo para executar algo (como SSH) e o bash comando interno exec para gerar um novo processo que substitua o atual. Por padrão, exec não é um comando válido no PowerShell. Isso está afetando alguns scripts conhecidos, como copy-ssh-id, e alguns subcomandos de AzCLI.

O Switch-Process cmdlet chama a função nativa execv() para fornecer um comportamento semelhante aos shells POSIX. Esse cmdlet e seu alias, exec, foram adicionados no PowerShell 7.3.0.

O PowerShell 7.3.1 alterou o alias exec para uma função que encapsula Switch-Process. A função permite que você passe parâmetros a um comando nativo que possa ter uma associação incorreta ao parâmetro WithCommand.

Esse cmdlet só está disponível para sistemas não Windows.

Exemplos

Exemplo 1 – Executar um comando que depende de 'exec'

Este exemplo pressupõe que o PowerShell é o shell padrão em um sistema não Windows. ssh-copy-id é um script bash popular para implantar chaves públicas em computadores de destino para autenticação baseada em chave. O script depende do comando bash, exec.

ssh-copy-id user@host

Com o PSExec recurso habilitado, o ssh-copy-id script é bem-sucedido.

Parâmetros

-WithCommand

Especifica o executável nativo (e todos os parâmetros) a serem executados. Todos os valores adicionais passados como argumentos são passados como uma matriz de strings a serem executadas com o primeiro comando.

O comando de destino deve ser um executável nativo, não um comando do PowerShell.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

String[]

Saídas

Object

Observações

O Switch-Process cmdlet foi criado para fornecer exec compatibilidade com outros shells POSIX. Em condições normais, o cmdlet não se destina a ser usado em scripts do PowerShell. Switch-Process não tem paridade de exec recursos com a função embutida em shells POSIX, como a forma como os descritores de arquivo são tratados, mas deve cobrir a maioria dos casos.