Switch-Process
No Linux e no macOS, o cmdlet chama a função execv() para fornecer um comportamento semelhante ao dos shells POSIX.
Sintaxe
Default (Padrão)
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Description
Alguns comandos nativos do Unix desembolsam para executar algo (como ssh) e usam o comando interno bashexec 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 da AzCLI.
O cmdlet Switch-Process chama a função de execv() nativa para fornecer um comportamento semelhante ao dos shells POSIX. Esse cmdlet e seu alias, exec, foram adicionados ao PowerShell 7.3.0.
O PowerShell 7.3.1 alterou o alias do 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 associado erroneamente ao parâmetro WithCommand.
Esse cmdlet só está disponível para sistemas que não são do 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 recurso PSExec habilitado, 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.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
String
Saídas
Object
Observações
O cmdlet Switch-Process foi criado para fornecer exec compatibilidade 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 como os descritores de arquivo são tratados, mas devem abranger a maioria dos casos.