¿Cómo ejecuto un script de PowerShell?

  • Tengo un script llamado myscript.ps1
  • Tengo todos los frameworks necesarios instalados
  • Puse esa cosa de política de ejecución
  • He seguido las instrucciones de esta página de ayuda de MSDN
    y estoy tratando de ejecutarlo así:
    powershell.exe 'C:my_pathyada_yadarun_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?

1

  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_pathyada_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 como esto:

powershell -noexit "& ""C:my_pathyada_yadarun_import_script.ps1""" (enter)

de acuerdo a esto entrada 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 #

11

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_pathyada_yadarun_import_script.ps1

5

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

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

1

Escribe:

powershell -executionpolicy bypass -File .Test.ps1

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

1

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

powershell.exe -noexit "& 'c:DataScheduledScriptsShutdownVM.ps1'"

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

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

powershell -command - < c:mypathmyscript.ps1

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

1

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

1

Usando el archivo cmd (BAT):

@echo off
color 1F
echo.

C:Windowssystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

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

Si necesitas 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.

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.

3

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

Ingrese la descripción de la imagen aquí

0

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

    $> . c:program fileprog.ps1

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

    Por ejemplo, $> add or entry_func or main

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

Editar: asegúrese de ejecutar set-ExecutionPolicy...