Búsqueda de sitios web

Ejecute el script de PowerShell desde un archivo por lotes


Tenemos que seguir algunos pasos que se detallan a continuación para ejecutar el script de PowerShell especificado desde un archivo por lotes.

  1. Cree un script de PowerShell.
  2. Cree un archivo por lotes.
  3. Ejecute el archivo por lotes para ejecutar el script de PowerShell desde él (archivo por lotes).

Crear una secuencia de comandos de PowerShell

Cree un archivo de script .ps1 que contenga el siguiente comando.

Generar el script en computadora:

write-output  "Script generated"

Guardamos el script anterior en un archivo de texto con la extensión .ps1 y lo llamamos Script.ps1; en este caso, puedes nombrarlo como quieras pero con la extensión .ps1.

NOTA: Los scripts de PowerShell son archivos de texto simples con la extensión .ps1. Se puede ejecutar a través del programa PowerShell ISE. Un archivo de texto con el sufijo .BAT es un archivo por lotes. Para ejecutar el archivo por lotes específicamente, utilice el símbolo del sistema. Sin embargo, puede haber casos en los que sea necesario utilizar el archivo por lotes en lugar del script de PowerShell para ejecutar el script.

Crear un archivo por lotes

Inicie Bloc de notas e ingrese las siguientes líneas de código para crear un archivo por lotes. No olvide guardar este archivo con la extensión .bat; lo guardamos como Script.bat.

Cree un archivo por lotes:

@echo off
powershell.exe  "F:\Sara\Downloads\Script.ps1"
pause

El comando echo off se utilizó en programas por lotes; dejará de repetir directorios y comandos. Es útil al escribir programas por lotes y crear una interfaz de usuario ejemplar. Luego escribiremos el siguiente comando con la ruta del archivo de script de PowerShell entre comillas dobles. Finalmente, el comando pause apagará la consola del símbolo del sistema después de presionar una tecla del teclado.

Diferentes formas de ejecutar secuencias de comandos de PowerShell desde un archivo por lotes

Creamos el script de PowerShell y un archivo por lotes en el primer y segundo paso. Ahora es el momento de ejecutar el script de PowerShell especificado desde un archivo por lotes. Podemos ejecutarlo de las siguientes maneras:

  • Usando el parámetro -File
  • Usando RemoteSigned como -ExecutionPolicy
  • Usando el interruptor Bypass
  • Ejecutar como administrador

Para cada método, guardaremos el fragmento de código proporcionado en el archivo .bat que creamos en la sección anterior. Después de eso, podemos ejecutar este archivo .bat haciendo doble clic en él o ejecutándolo como .\Script.bat en PowerShell.

Utilice el parámetro -File

Utilice el parámetro -File para ejecutar un script de PowerShell desde un archivo .bat.

Utilice el parámetro -File:

@echo off
powershell -File F:\Sara\Downloads\Script.ps1
pause

PRODUCCIÓN :

Script generated
Press any key to continue . . .

Ejecutamos un script de PowerShell desde un archivo .bat usando el parámetro -File. Tenga en cuenta que el código anterior se guarda en un archivo .bat. El comando @echo off evita que el contenido del archivo por lotes se muestre o se haga eco. El comando pause detiene la ejecución de un archivo por lotes hasta que presione cualquier tecla aparte de Shift y Ctrl; cualquier comando que le dé al intérprete de comandos de Windows se repite automáticamente.

Como resultado, cuando se ejecuta un archivo por lotes, la salida contendrá cada línea incluida en el archivo por lotes. Con el comando echo off, puede detener este comportamiento. Además, no se devolverá ningún eco si utiliza un signo de arroba (@) antes del comando echo off. Ejecutamos un script de PowerShell usando el parámetro -File y obtuvimos el script de salida generado como se muestra en el resultado anterior.

Utilice RemoteSigned como -ExecutionPolicy con el parámetro -File

Para ejecutar un script de PowerShell desde un archivo por lotes, establezca RemoteSigned como -ExecutionPolicy. La opción -ExecutionPolicy especifica la política de ejecución de PowerShell.

Utilice RemoteSigned como -ExecutionPolicy:

@echo off
powershell -ExecutionPolicy RemoteSigned -File F:\Sara\Downloads\Script.ps1
pause

PRODUCCIÓN :

Script generated
Press any key to continue . . .

-ExecutionPolicy de PowerShell permite restringir la ejecución de todos los scripts y solo permite scripts firmados. La política de ejecución predeterminada es firmada remota. Los scripts se pueden ejecutar bajo esta política para su ejecución.

La ejecución de scripts y archivos de configuración descargados de Internet requiere firmas digitales. Sin embargo, las firmas digitales no son necesarias para ejecutar archivos creados en un sistema local.

Se requiere un cmdlet unlock-File para ejecutar archivos sin firma digital. Puede resultar fatal ejecutar scripts sin una firma digital. En este caso, ejecutamos un script de PowerShell desde un archivo por lotes configurando RemoteSigned como -Executionpolicy en nuestra máquina local. Ejecutamos con éxito el archivo por lotes anterior usándolo.

Utilice Bypass como -ExecutionPolicy con el parámetro -File

Utilice el modificador -Bypass para ejecutar un script de PowerShell.

Utilice el interruptor de derivación:

@echo off
powershell -ExecutionPolicy Bypass -File F:\Sara\Downloads\Script.ps1
pause

PRODUCCIÓN :

Script generated
Press any key to continue . . .

Cuando se habilitó el comando anterior pause, se mostró el mensaje Presione cualquier tecla para continuar... y el comando esperó a que el usuario presionara cualquier tecla. Al modificar la política de ejecución temporalmente durante una única ejecución de Powershell.exe, se debe utilizar Bypass. De esta manera, ejecutamos con éxito un script de PowerShell usando el interruptor Bypass de arriba.

Ejecutar como administrador

Para ejecutar un script de PowerShell desde un archivo .bat, use el siguiente comando para iniciar PowerShell como administrador. El resultado se verá en Windows PowerShell cuando abra un archivo por lotes y elija Sí.

Ejecutar como administrador:

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -File F:\Sara\Downloads\Script.ps1 -Verb RunAs
pause

PRODUCCIÓN :

Script generated
Press any key to continue . . .

Se trata de cómo ejecutar un script de PowerShell desde un archivo por lotes.

Artículos relacionados