Te traemos la respuesta a este enigma, o por lo menos eso creemos. Si continuas con alguna duda puedes escribirlo en el apartado de preguntas y sin pensarlo
Solución:
Use un punto y coma para encadenar comandos en PowerShell:
ipconfig /release; ipconfig /renew
Un punto y coma vinculará los comandos como se indicó en la respuesta anterior, aunque hay un key diferencia en el comportamiento con el &
operador en el intérprete de comandos de estilo MS-DOS.
En el intérprete de comandos, la sustitución de variables tiene lugar cuando se lee la línea. Esto permite algunas posibilidades claras, como el intercambio de variables sin un intermedio:
set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%
Daría como resultado:
2
1
Que yo sepa, no hay forma de replicar este comportamiento en PowerShell. Algunos pueden argumentar que eso es algo bueno.
De hecho, hay una manera de hacer esto en PowerShell:
$b, $a = $a, $b
Dará como resultado un intercambio de una sola línea de los valores de las variables.
En PowerShell 7, tenemos Pipeline chain operators
que le permite agregar algún elemento condicional a sus comandos secuenciales de una línea
Los operadores son:
&&
esto ejecutará el segundo comando solo si el primero tiene éxito.||
esto ejecutará el segundo comando solo si el primero falla.
ejemplos:
PS Z:Powershell-Scripts> Write-Host "This will succeed" && Write-Host "So this will run too"
This will succeed
So this will run too
PS Z:Powershell-Scripts> Write-Error "This is an error" && Write-Host "So this shouldn't run"
Write-Error "This is an error" && Write-Host "So this shouldn't run": This is an error
PS Z:Powershell-Scripts> Write-Host "This will succeed" || Write-Host "This won't run"
This will succeed
PS Z:Powershell-Scripts> Write-Error "This is an error" || Write-Host "That's why this runs"
Write-Error "This is an error" || Write-Host "That's why this runs": This is an error
That's why this runs
por supuesto, puedes encadenarlos aún más como x && y || z
etc.
esto también funciona para comandos antiguos tipo cmd como ipconfig
PS Z:Powershell-Scripts> ipconfig && Write-Error "abc" || ipconfig
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: xxx
Verbindungslokale IPv6-Adresse . : xxx
IPv4-Adresse . . . . . . . . . . : xxx
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : xxx
ipconfig && Write-Error "abc" || ipconfig: abc
Windows-IP-Konfiguration
Ethernet-Adapter Ethernet:
Verbindungsspezifisches DNS-Suffix: xxx
Verbindungslokale IPv6-Adresse . : xxx
IPv4-Adresse . . . . . . . . . . : xxx
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : xxx
Estos operadores usan el $? y $LASTEXITCODE variables para determinar si una canalización falló. Esto le permite usarlos con comandos nativos y no solo con cmdlets o funciones.
Fuente: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-70?view=powershell-7
valoraciones y comentarios
Agradecemos que desees añadir valor a nuestro contenido participando con tu veteranía en las explicaciones.