web-dev-qa-db-fra.com

Comment exécuter un script PowerShell

Comment exécuter un script PowerShell?

  • J'ai un script nommé myscript.ps1
  • J'ai tous les frameworks nécessaires installés
  • Je règle cela politique d'exécution chose
  • J'ai suivi les instructions sur cette page d'aide MSDN et j'essaie de l'exécuter comme suit: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (avec ou sans --noexit)

qui ne renvoie rien du tout, sauf que le nom du fichier est sorti.

Pas d'erreur, pas de message, rien. Oh, quand j'ajoute -noexit, la même chose se produit, mais je reste dans PowerShell et je dois sortir manuellement.

Le fichier .ps1 est supposé exécuter un programme et renvoyer le niveau d'erreur en fonction de la sortie de ce programme. Mais je suis sûr que je n'y suis même pas encore arrivé.

Qu'est-ce que je fais mal?

635
Pekka 웃
  1. Lancez Windows PowerShell et attendez un instant que l'invite de commande PS s'affiche.
  2. Naviguez jusqu'au répertoire où réside le script

    PS> cd C:\my_path\yada_yada\ (enter)
    
  3. Exécutez le script:

    PS> .\run_import_script.ps1 (enter)
    

Qu'est-ce que je rate??

Ou: vous pouvez exécuter le script PowerShell à partir de cmd.exe comme ceci:

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

selon cela blog post ici

Ou vous pouvez même exécuter votre script Powershell depuis votre application C # :-)

Exécuter de manière asynchrone des scripts PowerShell à partir de votre application C #

669
marc_s

Si vous utilisez PowerShell 2.0, utilisez le paramètre -File de PowerShell.exe pour appeler un script depuis un autre environnement tel que cmd.exe, par exemple:

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

Si vous souhaitez exécuter un script sans modifier la stratégie d'exécution de script par défaut, vous pouvez utiliser le commutateur de contournement lors du lancement de Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>
165
Chingiz Musayev

Type:

powershell -executionpolicy bypass -File .\Test.ps1

NOTE: Ici, Test.ps1 est le script PowerShell.

63
Sudheesh

J'ai eu le même problème, et j'ai essayé et essayé ... Enfin j'ai utilisé:

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

Et mettez cette ligne dans un fichier de commandes, et cela fonctionne.

27
Dennis

Si vous ne disposez que de PowerShell 1., cela semble suffire:

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

Il dirige le fichier de script vers la ligne de commande PowerShell.

22
AndyM

Plutôt facile. Cliquez avec le bouton droit de la souris sur le fichier .ps1 dans Windows. Dans le menu Shell, cliquez sur Exécuter avec PowerShell.

11
electronictonic

Utilisation du fichier 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 vous avez besoin de exécuter en tant qu'administrateur:

  1. Faites un raccourci pointant vers la commande Invite (je l’ai nommée Invite de commande administrative)
  2. Ouvrez les propriétés du raccourci et allez dans l'onglet Compatibilité
  3. Dans la section Niveau de privilège, assurez-vous que la case "Exécuter ce programme en tant qu'administrateur" est cochée.
10
Kiquenet

Un moyen simple consiste à utiliser PowerShell ISE , ouvrez un script, exécutez et appelez votre script, fonction ...

Enter image description here

  • Donne le chemin du script, c’est-à-dire le chemin choisi par cmd:

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

  • Exécutez la fonction de point d’entrée de PowerShell:

    Par exemple, $> add or entry_func or main

7
pkm

Si vous souhaitez exécuter un script PowerShell avec le Planificateur de tâches Windows, procédez comme suit:

  1. Créer une tâche

  2. Définissez Program/Script sur Powershell.exe

  3. Définissez Arguments sur -File "C:\xxx.ps1"

Cela provient d'une autre réponse, Comment puis-je exécuter un script PowerShell automatiquement à l'aide du planificateur de tâches Windows?.

6
Gearon

Si votre script porte l'extension .ps1 et que vous vous trouvez dans une fenêtre PowerShell, exécutez simplement ./myscript.ps1 (en supposant que le fichier se trouve dans votre répertoire de travail).

De toute façon, cela est vrai pour moi sur Windows 10 avec PowerShell version 5.1 et je ne pense pas avoir rien fait pour rendre cela possible.

6
rainabba

Utilisez le paramètre -File devant le nom du fichier. Les guillemets font penser à PowerShell que c'est une chaîne de commandes.

1
Engineer