Ejecutar comandos CMD en PowerShell

  1. Uso del operador de invocación de PowerShell &
  2. Ejecutar comandos CMD usando cmd.exe
  3. Canalización a CMD usando PowerShell
Ejecutar comandos CMD en PowerShell

Muchos comandos heredados del símbolo del sistema (CMD) funcionan en el entorno de secuencias de comandos de Windows PowerShell. El entorno de PowerShell transmite estos comandos desde los comandos más utilizados como ping hasta los comandos más informativos como tracert del entorno heredado que usa alias.

Sin embargo, algunos comandos que se ejecutan en el terminal del símbolo del sistema no funcionarán en el entorno de secuencias de comandos de Windows PowerShell. Este artículo discutirá cómo podemos transcribirlos correctamente a Windows PowerShell.

Uso del operador de invocación de PowerShell &

El CMD heredado funcionará con éxito cuando ejecutemos programas de línea de comandos con un formato de archivo ejecutable (.exe) ubicado en una ruta específica, seguido del comando real.

Si tomamos la sintaxis de ejemplo a continuación, podemos realizar un escaneo rápido utilizando el escáner de línea de comandos de Avast si ejecutamos el script dentro de CMD, y funcionará con éxito.

Código de ejemplo:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

Sin embargo, si tomamos la misma sintaxis y la ejecutamos en Windows PowerShell, obtendremos un error de excepción. El motivo del error es que Windows PowerShell ve las comillas dobles "" como un valor de cadena literal, y el parámetro /Quick que acompaña a la sintaxis no está disponible en ninguna de las bibliotecas nativas.

Además, ejecutar solo la ruta citada en Windows PowerShell solo generará el valor de la cadena en lugar de ejecutar el archivo ejecutable en sí.

Código de ejemplo:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe"

Producción :

C:\Program Files\AVAST Software\Avast\ashCmd.exe

Para remediar este problema, podemos llamar al operador Invocación o al signo & al comienzo de la línea de comandos para ejecutar correctamente la ruta del ejecutable en Windows PowerShell.

& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

El uso del operador de invocación en el entorno de PowerShell tratará la ruta de la cadena como una ruta real al archivo ejecutable. Por lo tanto, ejecutará el script directamente con el parámetro de comando que lo acompaña.

Ejecutar comandos CMD usando cmd.exe

Otro ejemplo de ejecución de comandos CMD es mediante el uso de cmd.exe. Podemos agregar cmd.exe dentro de Windows PowerShell como nuestro método anterior.

Una vez agregado y ejecutado, llamará a la interfaz de línea de comandos dentro del símbolo del sistema de Windows PowerShell.

cmd.exe /c where python

El parámetro /c ejecutará cualquier comando que se haya ingresado y finalizará el intérprete de línea de comandos cmd.exe.

Puede ejecutar la siguiente sintaxis para abrir la documentación de ayuda del comando cmd.exe para obtener más información sobre otros parámetros. Además, puede ejecutar el siguiente comando en las interfaces de línea de comandos de PowerShell y CMD.

cmd.exe /?

Canalización a CMD usando PowerShell

En Windows PowerShell, también podemos enviar comandos al terminal del símbolo del sistema canalizando el cmdlet cmd al comando que desea enviar.

En la siguiente sintaxis de ejemplo, la solicitud para consultar las configuraciones de IP de su computadora local se envía a la interfaz de línea de comandos de CMD. Después de ejecutar el código, el terminal CMD finaliza y el usuario regresa al terminal PowerShell indicado por PS al comienzo de la línea.

Código de ejemplo:

"Ipconfig /all" | cmd
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn