Ejecutar archivo BAT desde Powershell Script

Siddharth Bishnoi 30 enero 2023
  1. Crear y ejecutar un script de PowerShell
  2. Ejecutar un archivo Batch desde el script de PowerShell
  3. Ejecutar un archivo Batch desde el script de PowerShell con argumentos
  4. Ejecutar comandos Batch desde PowerShell
  5. Conclusión
Ejecutar archivo BAT desde Powershell Script

Un archivo Batch consta de una serie de comandos que se ejecutan línea por línea de manera secuencial. Estos archivos Batch se ejecutan en cmd.exe, un intérprete de línea de comandos lanzado inicialmente para la familia de Windows NT.

De manera similar, un archivo de PowerShell es un archivo de texto que consta de una lista de comandos ejecutados por la interfaz de línea de comandos de PowerShell; se guarda con la extensión .ps1. Es la última herramienta de shell y secuencias de comandos para Windows y una versión cmd más avanzada.

Para ejecutar un archivo .bat desde un script de PowerShell, puede ejecutarlo manualmente desde PowerShell. Sin embargo, agregar un archivo .bat a un script de PowerShell para ejecutarlo automáticamente sin la intervención del usuario a veces puede no ejecutarse debido a algunos errores menores que deben solucionarse.

Este artículo ilustrará diferentes formas de ejecutar un archivo Batch desde un script de PowerShell.

Crear y ejecutar un script de PowerShell

Para crear un script de PowerShell, abra el Bloc de notas y agregue los comandos que se ejecutarán. Guarde el archivo con la extensión .ps1 para guardarlo como un archivo de PowerShell.

Puede utilizar cualquier editor de texto para crear un archivo.

Crear un script de PowerShell

Para ejecutar un script de PowerShell, haga clic derecho en el archivo de PowerShell y haga clic en Ejecutar con PowerShell. También puede editar el archivo en PowerShell ISE.

Ejecutar un script de PowerShell

Ejecutar un archivo Batch desde el script de PowerShell

Para ejecutar un archivo .bat desde el script de PowerShell, agregue la siguiente línea al script de PowerShell:

& .\testfile1.bat

Ejecutar un archivo BAT desde el script de PowerShell

Pero esto solo funciona cuando testfolder es la ruta relativa o cuando se usa la letra de la unidad en la ruta. Se puede hacer un enfoque más estable.

Por ejemplo, tenemos un archivo .bat llamado testfile.bat, que consta de comandos que envían la salida a un archivo de texto llamado opt.txt. Agregue el archivo Batch a un script de PowerShell para que se ejecute automáticamente cuando se ejecute el script de PowerShell.

Agregue la siguiente línea al script de PowerShell para ejecutar el archivo Batch:

cmd.exe /c 'testfile1.bat'

Ejecute un archivo BAT desde el script de PowerShell usando CMD

Producción:

Ejecutar un archivo BAT desde la salida del script de PowerShell

Otra forma de ejecutar un archivo Batch desde el script de PowerShell es utilizando el cmdlet Start-Process. Para ejecutar el archivo Batch, agregue la siguiente línea de código al script de PowerShell:

Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -NoNewWindow

Ejecute un archivo BAT desde el script de PowerShell mediante el proceso de inicio

Dónde:

  • -Filepath especifica la ruta del archivo Batch.
  • -NoNewWindow inicia el proceso en la ventana actual.

Para ejecutar el archivo Batch como administrador, agregue -verb runas en el código anterior:

Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -Verbose Runas -NoNewWindow

Ejecute un archivo BAT desde el script de PowerShell como administrador

Este comando es útil cuando su archivo .bat contiene comandos que requieren privilegios de administrador para ejecutarse.

Ejecutar un archivo Batch desde el script de PowerShell con argumentos

Para ejecutar un archivo Batch desde el script de PowerShell que contiene argumentos, puede hacerlo utilizando el parámetro -ArgumentList y especificando cada argumento en una matriz de cadenas. Tomando el ejemplo anterior, agregue la siguiente línea de código en el script de PowerShell:

Start-Process -FilePath "cmd.exe" -ArgumentList @("/B", "/C", "`"", "^`"testfile1.bat^`"", "^`"$inputFilePath^`"", "`"") -NoNewWindow;

Ejecute un archivo BAT desde un script de PowerShell con argumentos

Ejecutar comandos Batch desde PowerShell

En lugar del archivo Batch, también puede ejecutar comandos Batch directamente desde el script de PowerShell. Agregue la siguiente línea de código para ejecutar el comando echo para imprimir la salida como hello world.

Start-Process "cmd.exe" '/c echo helloworld' -NoNewWindow

Ejecute comandos CMD directamente desde PowerShell

Conclusión

Entonces, discutimos cómo ejecutar un archivo Batch desde el script de PowerShell de la manera más segura posible. También discutimos cómo ejecutar comandos Batch directamente desde PowerShell en lugar de un script de PowerShell sin la intervención del usuario.