Switch-Process

En Linux y macOS, el cmdlet llama a la execv() función para proporcionar un comportamiento similar al de los shells POSIX.

Syntax

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

Description

Algunos comandos nativos de Unix aplican un shell para ejecutar algo (como ssh) y utilizan el comando integrado de bashexec para generar un nuevo proceso que sustituya 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 Switch-Process cmdlet llama a la función nativa execv() para proporcionar un comportamiento similar a los shells POSIX. Este cmdlet y su alias, exec, se agregaron en PowerShell 7.3.0.

PowerShell 7.3.1 cambió el alias exec a una función que encapsula Switch-Process. La función permite pasar parámetros al comando nativo que podría haber enlazado erróneamente con el 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 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 PSExec característica habilitada, el ssh-copy-id script 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.

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

Entradas

String[]

Salidas

Object

Notas

El Switch-Process cmdlet 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 integrada en shells POSIX, como el modo en exec que se controlan los descriptores de archivo, pero debe abarcar la mayoría de los casos.