Cómo ejecutar un script de PowerShell

¿Cómo ejecuto un script de PowerShell?

  • Tengo un script llamado myscript.ps1
  • Tengo todos los frameworks necesarios instalados
  • Yo configuré eso política de ejecución cosa
  • He seguido las instrucciones de 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 emite el nombre del archivo.

Sin error, sin mensaje, nada. Oh, cuando agrego -noexit, sucede lo mismo, pero me quedo 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 ni siquiera voy a llegar allí todavía.

¿Qué estoy haciendo mal?

preguntado el 09 de enero de 10 a las 19:01

Iniciar el powershell como habrías comenzado cmd. Ahora puede ejecutar el myscript.ps1 script como cualquier ejecutable allí en (en la ventana de PowerShell), es decir .\myscript.ps1 -

15 Respuestas

  1. Inicie Windows PowerShell y espere un momento a que PS símbolo del sistema para que aparezca
  2. Navegue hasta el 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 desde cmd.exe Me gusta esto:

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

de acuerdo a esto publicación de blog aquí

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

Ejecute de forma asincrónica scripts de PowerShell desde su aplicación C #

Respondido 05 Oct 19, 15:10

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

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

Según 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á entre comillas dobles), debe anteponer la ruta con el operador de llamada (el signo comercial) . " - doug dawson

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 requirió reiniciar powershell como administrador. Totalmente de acuerdo con @LukePuplett: es genial hacer que el caso de uso más simple requiera 20 minutos de búsqueda en Google y búsqueda. ¡Y los mensajes de error! Al parecer, estos tipos trabajaron en IBM ... en los años 70. - Spike0xff

Como se indica en un comentario a continuación, la política de ejecución debe omitirse. Uno de los elementos que no se discute aquí es cómo ejecutar un script de PowerShell desde una línea de comando pasando un parámetro. Para hacer esto: escriba powershell -executionpolicy bypass ".\myscript.ps1 yadayadayada" - jim lahman

Si está en PowerShell 2.0, use PowerShell.exe -File parámetro para invocar un script de otro entorno, como cmd.exe. Por ejemplo:

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

Respondido 05 Oct 19, 15:10

¿Hay alguna forma de agregar parámetros a dicha invocación? - Alexander Gross

Debería poder seguir los argumentos después de la ruta del archivo de secuencia de comandos. Desde el uso de PowerShell.exe - [-File ] - 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

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

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

Si desea ejecutar un script sin modificar la política de ejecución de script predeterminada, puede utilizar el evitar cambiar al iniciar windows PowerShell.

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

Respondido el 30 de enero de 11 a las 22:01

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

Tipo:

powershell -executionpolicy bypass -File .\Test.ps1

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

respondido 26 mar '16, 19:03

Esto debe ejecutarse en un PowerShell como powershell -executionpolicy bypass -File .\Test.ps1 asumiendo que su directorio de trabajo actual contiene Test.ps1 - Yeow_Meng

Tuve el mismo problema, y ​​lo intenté y lo intenté ... Finalmente usé:

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

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

respondido 30 nov., 14:23

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

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

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

respondido 30 nov., 14:23

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

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

respondido 02 mar '17, 10:03

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

Así de fácil debería ser. ¡Gracias! - ben_mj

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 usted necesita Ejecutar como administrador:

  1. Haga un acceso directo que apunte 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.

respondido 17 nov., 14:09

Una forma sencilla es utilizar ISE de PowerShell, abrir script, ejecutar e invocar su script, función ...

Ingrese la descripción de la imagen aquí

respondido 02 mar '17, 10:03

Si su secuencia de comandos se nombra con el .ps1 extensión y estás en una ventana de PowerShell, simplemente ejecuta ./myscript.ps1 (asumiendo 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 de todos modos, y no creo que haya hecho nada para que sea posible.

respondido 02 mar '17, 10:03

¿Cómo responde esto a la pregunta? - Pedro Mortensen

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

Esto responde absolutamente a la pregunta, y era exactamente lo que estaba buscando. como myscript.ps1 no funcionó, arrojó un error, pero con ./ está ejecutando. - Jeff

En caso de que desee ejecutar un script de PowerShell con el Programador de tareas de Windows, siga los pasos a continuación:

  1. Crear una tarea

  2. Kit Program/Script a Powershell.exe

  3. Kit Arguments a -File "C:\xxx.ps1"

Es de otra respuesta ¿Cómo ejecuto un script de PowerShell automáticamente usando el programador de tareas de Windows?.

respondido 11 nov., 18:06

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

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

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

    Por ejemplo, los servicios administrativos de $> add or entry_func or main

respondido 30 nov., 14:23

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

Tengo una respuesta muy simple que funciona:

  1. Abra PowerShell en modo administrador
  2. Ejecutar: 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

Respondido 05 Oct 19, 15:10

Asegúrate de correr set-ExecutionPolicy default una vez que haya terminado, o estará expuesto a riesgos de seguridad. - Anónimo

Puede ejecutar desde cmd de esta manera:

type "script_path" | powershell.exe -c -

Respondido 23 ago 20, 08:08

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

respondido 11 nov., 18:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.