Partilhar via


Switch-Process

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

Sintaxe

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

Description

Alguns comandos Unix nativos shell out para executar algo (como ssh) e usar o bash built-in comando exec para gerar um novo processo que substitui 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 do AzCLI.

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

O PowerShell 7.3.1 alterou o alias de exec para uma função que encapsula Switch-Process. A função permite que você passe parâmetros para o comando nativo que pode ter erroneamente ligado ao parâmetro WithCommand.

Este cmdlet só está disponível para sistemas que não sejam Windows.

Exemplos

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

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

ssh-copy-id user@host

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

Parâmetros

-WithCommand

Especifica o executável nativo (e quaisquer parâmetros) a ser executado. Todos os valores adicionais passados como argumentos são passados como uma matriz de cadeias de caracteres 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[]
Position:0
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

String[]

Saídas

Object

Notas

O cmdlet Switch-Process foi criado para fornecer compatibilidade exec são 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 recursos com a função exec interna em shells POSIX, como a forma como os descritores de arquivo são manipulados, mas deve cobrir a maioria dos casos.