Cómo ejecutar un script de PowerShell


712

¿Cómo ejecuto un script de PowerShell?

  • Tengo un script llamado myscript.ps1
  • Tengo todos los marcos necesarios instalados
  • Me puse de que la política de ejecución cosa
  • He seguido las instrucciones en esta página de ayuda de MSDN y estoy tratando de ejecutarlo así: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(con o sin --noexit)

que no devuelve exactamente nada, excepto que se muestra el nombre del archivo.

Sin error, sin mensaje, nada. Ah, cuando agrego -noexit, sucede lo mismo, pero permanezco dentro de PowerShell y tengo que salir manualmente.

Se supone que el archivo .ps1 ejecuta un programa y devuelve el nivel de error dependiente de la salida de ese programa. Pero estoy bastante seguro de que ni siquiera estoy llegando allí todavía.

¿Qué estoy haciendo mal?


2
Comience powershellcomo lo habría hecho cmd. Ahora puede ejecutar el myscript.ps1script como cualquier ejecutable allí en (en la ventana de .\myscript.ps1
PowerShell

Respuestas:


733
  1. Inicie Windows PowerShell y espere un momento PSa que aparezca el símbolo del sistema
  2. Navegue al directorio donde vive el script

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Ejecute el script:

    PS> .\run_import_script.ps1 (enter)

¿¿Qué me estoy perdiendo??

O: puede ejecutar el script de PowerShell de cmd.exeesta manera:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

de acuerdo con esta publicación de blog aquí

O incluso podría ejecutar su script de PowerShell desde su aplicación C # :-)

Ejecute asíncronamente los scripts de PowerShell desde su aplicación C #


19
El enlace de tu publicación de blog lo hizo. Tengo que usar powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(observe las tres comillas dobles) Realmente no entiendo por qué, pero en este punto, realmente no me importa :) ¡Muchas gracias!
Pekka

16
¿Qué hace exactamente el "&?
BlueRaja - Danny Pflughoeft

16
De acuerdo con technet.microsoft.com/en-us/library/ee176949.aspx , el '&' es para "Si realmente desea ejecutar ese valor de cadena (es decir, si desea ejecutar el script cuya ruta está encerrada en comillas dobles) debe prefacio de la ruta con el operador de llamada (el signo ")".
Doug Dawson

29
ninguno de estos funcionó para mí hasta que pasé por alto la política de ejecución predeterminada de powershell para mi script sin firmar recién creado. Entre otras cosas, esto requería reiniciar PowerShell como administrador. Totalmente de acuerdo con @LukePuplett: es genial hacer que el caso de uso más simple tome 20 minutos buscando en Google y vagando por ahí. Y los mensajes de error! Aparentemente, estos tipos trabajaban en IBM ... en los años 70.
Spike0xff

15
Como se indica en un comentario a continuación, se debe omitir la política de ejecución. Uno de los elementos que no se trata aquí es cómo ejecutar un script de PowerShell desde una línea de comando que pasa un parámetro. Para hacer esto: escribapowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman

230

Si está utilizando PowerShell 2.0, use el -Fileparámetro PowerShell.exe para invocar un script desde otro entorno, como cmd.exe. Por ejemplo:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

55
¿Hay alguna manera de agregar parámetros a dicha invocación?
Alexander Groß

11
Debería poder seguir los argumentos después de la ruta del archivo de script. Del uso de PowerShell.exe - [-File <filePath> <args>]
Keith Hill

"no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema. Consulte" get-help about_signing "para obtener más detalles".
Pavel Vlasov

77
Si no ha habilitado la ejecución del script de PowerShell en su sistema, agregue el parámetro-ExecutionPolicy Bypass
Keith Hill el

44
Para su información, esto también funciona para PowerShell 1.0 en mi experiencia (Windows 2012 Server)
llamado el

189

Si desea ejecutar un script sin modificar la directiva de ejecución de secuencias de comandos predeterminado, puede utilizar la derivación de interruptor cuando el lanzamiento de Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
Además, incluya la -nologoopción para deshacerse del banner de inicio
swdev

73

Tipo:

powershell -executionpolicy bypass -File .\Test.ps1

NOTA: Aquí Test.ps1está el script de PowerShell.


Esto debería ejecutarse en un PowerShell ya que powershell -executionpolicy bypass -File .\Test.ps1suponiendo que su directorio de trabajo actual contiene Test.ps1
Yeow_Meng

29

Tuve el mismo problema y lo intenté y lo intenté ... Finalmente utilicé:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

Y ponga esta línea en un archivo por lotes, y esto funciona.


22

Si solo tiene PowerShell 1.0 , esto parece funcionar bastante bien:

powershell -command - < c:\mypath\myscript.ps1

Canaliza el archivo de script a la línea de comandos de PowerShell.


3
Truco útil cuando las políticas de seguridad no permiten la ejecución de scripts.
Aron Lorincz

17

Muy fácil. Haga clic derecho en el archivo .ps1 en Windows y en el menú de shell haga clic en Ejecutar con PowerShell .


Esto funciona para ejecutar rápidamente un script sin tener que habilitar la ejecución de scripts con la política de ejecución. ¡Gracias!
b01

Esto es lo que estaba buscando, gracias!
Aamol

11

Usando el archivo cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Si necesita ejecutar como administrador :

  1. Haga un acceso directo señalado al símbolo del sistema (lo llamé Símbolo del sistema administrativo)
  2. Abra las propiedades del acceso directo y vaya a la pestaña Compatibilidad
  3. En la sección Nivel de privilegio, asegúrese de que la casilla de verificación junto a "Ejecutar este programa como administrador" esté marcada


10

Si su secuencia de comandos se nombra con la .ps1extensión y está en una ventana de PowerShell, simplemente ejecuta ./myscript.ps1(suponiendo que el archivo esté en su directorio de trabajo).

De todos modos, esto es cierto para mí en Windows 10 con PowerShell versión 5.1, y no creo que haya hecho nada para que sea posible.


2
¿Cómo responde esto a la pregunta?
Peter Mortensen

44
responde absolutamente la pregunta: ¿cómo ejecuto un script de PowerShell? respuesta: inicie la consola powershell, luego ejecute el script. fácil. simple. Funciona en Linux también.
Thufir

44
Esto responde absolutamente la pregunta, y era exactamente lo que estaba buscando. como myscript.ps1no funcionó, arrojó un error, pero con ./su ejecución.
Jeff

7
  • Indique la ruta de la secuencia de comandos, es decir, la configuración de ruta por cmd:

    $> . c:\program file\prog.ps1

  • Ejecute la función de punto de entrada de PowerShell:

    Por ejemplo, $> add or entry_func or main


Ejecutando sus comandos desde un indicador de cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.y>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

Use el -Fileparámetro delante del nombre del archivo. Las citas hacen que PowerShell piense que es una cadena de comandos.


1

Tengo una respuesta muy simple que funciona:

  1. Abra PowerShell en modo administrador
  2. Correr: set-executionpolicy unrestricted
  3. Abra una ventana normal de PowerShell y ejecute su script.

Encontré esta solución siguiendo el enlace que se proporcionó como parte del mensaje de error: Acerca de las políticas de ejecución

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.