Ejecutar archivo BAT desde Powershell Script
- Crear y ejecutar un script de PowerShell
- Ejecutar un archivo Batch desde el script de PowerShell
- Ejecutar un archivo Batch desde el script de PowerShell con argumentos
- Ejecutar comandos Batch desde PowerShell
- Conclusión
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.
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 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
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'
Producción:
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
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
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;
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
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.