tutorial script example ejemplos ejecutar desde comandos basicos powershell

example - ¿Cómo ejecuto un script de PowerShell cuando se inicia la computadora?



powershell windows 10 (6)

Copie ps1 en esta carpeta y créela si es necesario. Se ejecutará en cada inicio (antes de que ocurra el inicio de sesión del usuario).

C:/Windows/System32/GroupPolicy/Machine/Scripts/Startup

También se puede hacer a través de GPEDIT.msc si está disponible en la compilación de su sistema operativo (tal vez un sistema operativo de nivel inferior tal vez no).

Tengo un script de PowerShell que supervisa una carpeta de imágenes. Necesito encontrar una manera de ejecutar automáticamente este script una vez que se inicie la computadora.

Ya probé los siguientes métodos, pero no pude hacerlo funcionar.

  1. Use msconfig y agregue el script de PowerShell al inicio, pero no puedo encontrar el script de PowerShell en esa lista.

  2. Crea un acceso directo y suéltalo en la carpeta de inicio. Sin suerte.

    %SystemRoot%/SysWOW64/WindowsPowerShell/v1.0/powershell.exe -File "C:/Doc/Files/FileMonitor.ps1"

    o% SystemRoot% / system32 / WindowsPowerShell / v1.0 / powershell.exe -File "C: / Doc / Files / FileMonitor.ps1"

    Aquí está mi script de PowerShell:

    $folder = "C://Doc//Files" $dest = "C://Doc//Files//images" $filter = "*.jpg" $fsw = new-object System.IO.FileSystemWatcher $folder, $filter -Property @{ IncludeSubDirectories=$false NotifyFilter = [System.IO.NotifyFilters]''FileName, LastWrite'' } $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { Start-Sleep -s 10 Move-Item -Path C:/Doc/Files/*.jpg C:/Doc/Files/images }

  3. También traté de agregar una tarea básica utilizando taskschd.msc. Todavía no está funcionando.

    Esto es lo que encontré, y tal vez eso ayude a depurarlo.

    Si abro una ventana de PowerShell y ejecuto el script allí, funciona. Pero si lo ejecuto en un indicador de CMD,

    powershell.exe -File "C:/Doc/Files/FileMonitor.ps1"

    No funcionará. No estoy seguro de que sea un problema de permiso o algo más.

    Por cierto, tengo PowerShell 3.0 instalado, y si escribo $ host.version, mostrará 3 allí. Pero mi powershell.exe parece que todavía es v1.0.

    %SystemRoot%/system32/WindowsPowerShell/v1.0/powershell.exe


Finalmente conseguí que mi script de PowerShell se ejecutara automáticamente en cada inicio. Necesitará crear dos archivos: el primero es el script de Powershell (por ejemplo, script.ps1 ) y el segundo es un archivo .cmd que contendrá comandos que se ejecutarán en el símbolo del sistema (por ejemplo, startup.cmd ).

El segundo archivo es lo que debe ejecutarse cuando se inicia la computadora, y simplemente copiar y pegar el archivo .ps1 en la carpeta de inicio no funcionará, ya que en realidad no ejecuta el script, solo abre el archivo con el Bloc de notas. Debe ejecutar el archivo .cmd que ejecutará el archivo .ps1 con PowerShell. Ok, basta de balbuceos y de los pasos:

  1. Cree su script .ps1 y colóquelo en una carpeta. Lo puse en mi escritorio por simplicidad. El camino se vería algo así:

C: / Users / <nombre de usuario> / Desktop / script.ps1

  1. Crea un archivo .cmd y colócalo en

C: / Users / <nombre de usuario> / AppData / Roaming / Microsoft / Windows / Start Menu / Programs / Startup / startup.cmd

Hacer esto ejecutará el archivo cmd cada vez que se inicie. Aquí hay un enlace de cómo crear un archivo .cmd si necesita ayuda.

  1. Abra el archivo .cmd con un editor de texto e ingrese las siguientes líneas:

    PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%/StartupLog.txt" 2>&1 PowerShell C:/Users/<user_name>/Desktop/script.ps1 >> "%TEMP%/StartupLog.txt" 2>&1

Esto hará dos cosas:

  1. Establezca la Política de ejecución de su PowerShell en Sin restricciones. Esto es necesario para ejecutar scripts o, de lo contrario, PowerShell no lo hará.
  2. Use PowerShell para ejecutar el script .ps1 que se encuentra en la ruta especificada.

Este código es específicamente para PowerShell v1.0. Si está ejecutando PowerShell v2.0, podría ser un poco diferente. En cualquier caso, compruebe esta fuente para el código .cmd.

  1. Guarde el archivo .cmd

Ahora que tiene sus archivos .ps1 y .cmd en sus respectivas rutas y con el script para cada uno, está todo listo.


Lo que hago es crear un acceso directo que coloco en shell: inicio.

El atajo tiene lo siguiente:

Destino: C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command "C:/scripts/script.ps1"

(reemplazando scripts / scripts.ps1 con lo que necesita)

Comenzar en: C:/scripts

(reemplazando los scripts con la carpeta que tiene tu script)


Puede configurarlo como una tarea programada y configurar el disparador de tareas para "Al inicio"


También tengo un script que inicia un observador del sistema de archivos, pero una vez que se cierra la ventana del script, el observador muere. Se ejecutará todo el día si lo inicio desde una ventana de PowerShell y lo dejo abierto, pero en el momento en que lo cierro, el script deja de hacer lo que se supone que debe hacer.
Debe iniciar el script y mantenerlo abierto.
Intenté varias formas de hacer esto, pero la que realmente funcionó fue de http://www.methos-it.com/blogs/keep-your-powershell-script-open-when-executed

param ( $Show ) if ( !$Show ) { PowerShell -NoExit -File $MyInvocation.MyCommand.Path 1 return }

Pegar eso en la parte superior del guión es lo que lo hizo funcionar.
Comienzo el script desde la línea de comandos con

powershell.exe -noexit -command "& /path/to/script.ps1"


Una ruta relativamente corta para especificar una secuencia de comandos de Powershell para ejecutar en el inicio en Windows podría ser:

  1. Haga clic en el botón de Windows (botón de Windows + r)
  2. Introduce esto:

shell: inicio

  1. Cree un nuevo acceso directo haciendo clic con el botón derecho y en el menú contextual, seleccione el elemento del menú: Nuevo => Acceso directo

  2. Cree un acceso directo a su script, por ejemplo:

C: / Windows / System32 / WindowsPowerShell / v1.0 / powershell.exe -NoProfile -Command "C: / Users / someuser / Documents / WindowsPowerShell / Scripts / somesscript.ps1"

Tenga en cuenta el uso de -NoProfile En caso de que ponga mucha inicialización en su archivo $ profile, es ineficaz cargar esto hasta simplemente ejecutar un script de Powershell. El -NoProfile omitirá la carga de su archivo de perfil y es inteligente de especificar, si no es necesario ejecutarlo antes de que se ejecute el script de Powershell.

Aquí se ve un atajo creado (archivo .lnk con un icono de PowerShell con un glifo de atajo):