Switch-Process
En Linux y macOS, el cmdlet llama a la función execv()
para proporcionar un comportamiento similar al de los shells POSIX.
Sintaxis
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Description
Algunos comandos nativos de Unix ejecutan algo (como ssh) y usan el comando integrado bash
exec
para generar un nuevo proceso que reemplace el actual. De forma predeterminada, exec
no es un comando válido en PowerShell. Esto afecta a algunos scripts conocidos como copy-ssh-id
y algunos subcomandos de AzCLI.
El cmdlet Switch-Process
llama a la función execv()
nativa para proporcionar un comportamiento similar al de los shells POSIX. Este cmdlet y su alias, exec
, se agregaron en PowerShell 7.3.0.
PowerShell 7.3.1 cambió el alias de exec
a una función que encapsula Switch-Process
. La función permite pasar parámetros al comando nativo que podría haberse enlazado erróneamente al parámetro WithCommand.
Este cmdlet solo está disponible para sistemas que no son windows.
Ejemplos
Ejemplo 1: Ejecutar un comando que depende de "exec"
En este ejemplo se supone que PowerShell es el shell predeterminado en un sistema que no es Windows.
ssh-copy-id
es un script de Bash popular para implementar claves públicas en las máquinas de destino para la autenticación basada en claves. El script depende del comando bash, exec
.
ssh-copy-id user@host
Con la característica PSExec
habilitada, el script de ssh-copy-id
se realiza correctamente.
Parámetros
-WithCommand
Especifica el ejecutable nativo (y los parámetros) que se van a ejecutar. Todos los valores adicionales pasados como argumentos se pasan como una matriz de cadenas que se ejecutarán con el primer comando.
El comando de destino debe ser un ejecutable nativo, no un comando de PowerShell.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
String[]
Salidas
Notas
El cmdlet Switch-Process
se creó para proporcionar exec
compatibilidad es otros shells POSIX. En condiciones normales, el cmdlet no está pensado para usarse en scripts de PowerShell.
Switch-Process
no tiene paridad de características con la función de exec
integrada en shells POSIX, como el modo en que se controlan los descriptores de archivo, pero debe abarcar la mayoría de los casos.