¿Cómo ejecutar múltiples comandos en una línea en PowerShell y CMD?

En esta nota rápida, le mostraré cómo ejecutar varios comandos cmd o PowerShell en una línea. A veces, debe hacer esto cuando invoca los comandos de PowerShell desde programas externos, el Programador de tareas de Windows, los scripts de inicio de sesión, cuando necesita omitir la política de ejecución de PowerShell o cuando tiene que pasar rápidamente un fragmento de código a un usuario para diagnosticar o solucionar problemas. en su computadora.

Ejecutar múltiples comandos en una línea en Windows CMD

Puedes usar el & operador cmd para ejecutar varios comandos uno tras otro en una línea. Por ejemplo:

net stop wuauserv & net start wuauserv & wuauclt /detectnow

ejecutar múltiples comandos uno tras otro en cmd

Si desea que el segundo comando se ejecute solo si el anterior fue exitoso, use el && formato:

ipconfig /flushdns && ipconfig /renew

Puede usar una condición inversa: el segundo comando se ejecutará solo si el primero devolvió un error:

net stop wuauserv6 || net start wuauserv

Ejecute múltiples comandos de PowerShell en una línea

Si usa un símbolo de ampersand para separar los comandos en una línea, aparece el siguiente error:

 The ampersand (&) character is not allowed. The & operator is reserved for future use.

En vez de &un punto y coma ( ; ) se usa en PowerShell para separar los comandos en una línea:

restart-service wuauserv -verbose; get-process notepad

encadenar múltiples comandos de PowerShell en una línea

Este comando de PowerShell de una sola línea reiniciará el servicio de Windows y, una vez que se complete el primer comando, mostrará la información sobre el proceso de Windows.

Un ejemplo popular de abreviatura de comando en PowerShell es una canalización, que le permite pasar el resultado de un comando al siguiente mediante una canalización. En PowerShell, el “|El símbolo ” se utiliza como operador de tubería. Este es un ejemplo de un comando de canalización:

Get-Service -Name wususerv | Stop-Service

El mismo código se puede escribir completamente en varias líneas:

$service = Get-Service -Name wususerv
$serviceName = $service.Name
Stop-Service -Name $serviceName

La tubería permite reducir el tamaño del código y el código se volvió más simple y legible.

Para ejecutar múltiples comandos de PowerShell usando el menú Inicio -> Ejecutar, use el siguiente formato:

powershell -command &"{ipconfig /all; ping woshub.com; pause "Press any key to continue"}"

Si ejecuta los mismos comandos a través de la consola de PowerShell, use la siguiente sintaxis:

powershell -command {ipconfig /all; ping woshub.com; pause "Press any key to continue"}

Cuando ejecuta varios comandos de PowerShell a través del Programador de tareas de Windows, puede usar este formato:

c:windowsSystem32WindowsPowerShellv1.0powershell.exe -Command {Get-EventLog -LogName security; ipconfig /all ; get-service servicename}"

Nuevo && y || Los operadores están disponibles en la versión moderna de PowerShell Core 7.x. Funcionan igual que en cmd.

los && El operador ejecuta los comandos de PowerShell a la derecha si el comando de la izquierda ha tenido éxito:

Write-host "Hello!" && Write-host "World!"

&& operador powershell: ejecutará la canalización de la derecha si la de la izquierda tuvo éxito

los || El operador se usa cuando desea ejecutar un comando si el comando anterior devolvió un error:

get-service servicename || write-host "missing service"

tubería de cadena condicional en powershell 7

Artículos Interesantes