2010-01-09 45 views
489

¿Cómo ejecuto un script de PowerShell?¿Cómo ejecutar un script de PowerShell?

  • Tengo un script llamado MyScript.ps1
  • He instalado todos los marcos necesarios
  • puse que execution policy cosa
  • he seguido las instrucciones de this MSDN help page y estoy tratando de ejecutarlo como por lo que: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (con o withot --noexit)

que devuelve exactamente nada, excepto que el el nombre del archivo es de salida. Sin error, sin mensaje, nada. Oh, 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 dependiendo de la salida de ese programa. Pero estoy bastante seguro de que aún no estoy llegando allí.

¿Qué estoy haciendo mal?

+0

inicio del 'powershell' como lo habría comenzado' cmd'. Ahora puede ejecutar el script 'myscript.ps1' como cualquier ejecutable allí (en la ventana de powershell), es decir'. \ Myscript.ps1' – parasrish

Respuesta

499
  1. lanzamiento de Windows PowerShell, y esperar un momento para que el símbolo del sistema PS a aparecer
  2. Vaya al directorio donde el guión vive

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

    PS> .\run_import_script.ps1 (enter) 
    

¿Qué me estoy perdiendo?

O: puede ejecutar el script de PowerShell desde cmd.exe así:

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

de acuerdo con esta blog post here

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

Asynchronously execute PowerShell scripts from your C# application

+0

Esto de hecho funciona, pero necesito hacer esto desde dentro de un archivo por lotes. Obviamente, mi manera de llamar a 'powershell.exe' y luego al archivo de script está algo estropeada. ¿Tienes alguna idea de cómo modificarlo? –

+14

Tu enlace de publicación de blog lo hizo. Tengo que usar 'powershell -noexit" y "C: \ yada_yada \ run_import_script.ps1" '(fíjate en las * tres * comillas dobles) Realmente no entiendo por qué, pero en este punto, realmente no me importa:) ¡Muchas gracias! –

+11

¿Qué significa '' & 'hacer exactamente? –

160

Si usa PowerShell 2.0, use el parámetro -File de PowerShell.exe para invocar un script desde otro entorno, como por ejemplo cmd.exe:

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

¿Hay alguna forma de agregar parámetros a dicha invocación? –

+8

Debería ser capaz de rastrear los argumentos después de la ruta del archivo de script. Del uso de PowerShell.exe - [-File ] –

+0

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

24

que he tenido el mismo problema, y ​​lo intentó una y otra ... Finalmente he utilizado:

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

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

18

Si sólo tiene PowerShell 1.0, esto parece hacer el truco bastante bien:

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

Canaliza el archivo de secuencia de comandos para la línea de comandos de PowerShell.

+3

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

128

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

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

Además, incluya la opción '-nologo' para deshacerse del banner de inicio – swdev

5
  • Dale la ruta del script, es decir, configuración de la ruta por cmd:

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

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

    Por ejemplo, $> add or entry_func or main

6

usando el archivo cmd (MTD):

@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. crear un acceso directo señaló el símbolo del sistema (lo he denominado 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 esté junto a " Ejecutar este programa como administrador" está marcada
35

Tipo:

powershell -executionpolicy bypass -File .\Test.ps1

NOTA: Aquí Test.ps1 es el script de PowerShell.

+0

Esto debe ejecutarse en un powershell como' powershell -executionpolicy bypass -File. \ Test.ps1' suponiendo que el directorio de trabajo actual contiene Test.ps1 –

3

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

+0

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

2

Si su secuencia de comandos recibe el nombre con la extensión .ps1 y está en una ventana de PowerShell, simplemente ejecute ./myscript.ps1 (suponiendo que el archivo esté en su directorio de trabajo).

Esto es cierto para mí de todos modos en Windows 10 con la versión 5.1 de PowerShell de todos modos, y no creo que haya hecho nada para hacerlo posible.

+1

¿Cómo responde esto la pregunta? –

+0

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

6

Una forma sencilla es utilizar PowerShell ISE, guión abierto, correr y que invoque el script, la función ...

Enter image description here

Cuestiones relacionadas