Si vous débutez dans le langage de script PowerShell et que vous souhaitez apprendre à exécuter un script PowerShell, vous êtes au bon article de blog. Ce blog sera un tutoriel couvrant les façons courantes d’exécuter des scripts et quelques problèmes qui peuvent apparaître.

Table des Matières

Prérequis

Cet article vous expliquera comment exécuter PowerShell sur votre ordinateur local. Si vous souhaitez suivre, assurez-vous d’avoir les conditions préalables suivantes avant de commencer cet article.

  • Un ordinateur Windows 10 avec des privilèges d’administrateur.
  • Windows PowerShell version 5 ou supérieure. Vous pouvez également utiliser PowerShell v7. Ce tutoriel se concentrera sur Windows PowerShell car le système d’exploitation Windows l’a déjà.
  • Tout éditeur de fichier texte

Traitant de la stratégie d’exécution

Si c’est la première fois que vous essayez d’exécuter un script Windows PowerShell, vous pouvez rencontrer un problème commun. PowerShell renverra probablement un message d’erreur indiquant qu’un script « ne peut pas être chargé car l’exécution des scripts est désactivée sur ce système ».

PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess 

PowerShell renvoie le message d’erreur ci-dessus lorsque vous essayez d’exécuter un PowerShell avec une stratégie d’exécution définie sur Restricted, Remote Signed ou All Signed.

Restreint

Restreint est la stratégie définie par défaut pour les ordinateurs clients Windows. Si vous utilisez PowerShell pour la première fois, votre stratégie par défaut sera probablement définie pour restreindre tous les scripts.

Vous pouvez toujours exécuter des commandes individuelles dans un terminal, mais pas dans un fichier de script. La restriction inclut tout fichier se terminant par .ps1xml, .psm1 ou .ps1.

Unrestricted

Unrestricted vous permet d’exécuter n’importe quel script cependant, il vous avertit avant l’exécution si le script est téléchargé depuis Internet. Cette stratégie est généralement la règle par défaut pour tous les appareils non windows.

Remote Signed

La stratégie Remote Signed vous permet d’exécuter n’importe quel script (a) signé numériquement ou (b) n’importe quel script écrit sur votre ordinateur local avec ou sans signature.

Si un script est téléchargé depuis Internet et n’est pas signé, vous devrez débloquer le fichier. Vous pouvez le faire en cliquant avec le bouton droit sur le fichier et en choisissant Propriétés. Vous pouvez également utiliser l’applet de commande PowerShell Unblock-File pour ce fichier de script particulier.

L’utilisation d’une stratégie signée à distance serait une option idéale lors de l’exécution d’un script téléchargé depuis Internet.

Tous signés

Tous signés nécessite que tous les scripts soient signés numériquement par un éditeur de confiance. Cela inclut les scripts téléchargés sur Internet et écrits localement sur votre ordinateur.

Modification de la stratégie d’exécution PowerShell

Pour modifier la stratégie d’exécution:

  1. Ouvrez Windows PowerShell avec Exécuter en tant qu’administrateur pour vous assurer que vous disposez des autorisations les plus élevées pour apporter des modifications à la stratégie.
 Rechercher PowerShell dans le menu Démarrer
Rechercher PowerShell dans le menu Démarrer

2. Une fois ouvert, exécutez la commande PowerShell suivante pour définir la stratégie d’exécution de votre ordinateur. La politique d’exécution, telle que décrite ci-dessus, peut être l’un des trois types différents. Ce tutoriel utilise une stratégie d’exécution utile mais toujours sécurisée de RemoteSigned.

Puisque ce tutoriel suppose que vous avez téléchargé depuis Internet le fichier de script GetServices.ps1, définissez la stratégie d’exécution sur RemoteSigned.

PS> Set-ExecutionPolicy RemoteSigned

La stratégie d’exécution RemoteSigned vous oblige à signer cryptographiquement chaque script PowerShell téléchargé sur Internet avant que PowerShell ne l’exécute sur votre système.

3. Vous devriez voir une sortie demandant de confirmer l’action. Entrez Y et appuyez sur Entrée pour confirmer le changement de stratégie.

Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"): 

À ce stade, suivez les étapes suivantes pour explorer différentes méthodes pour exécuter le script PowerShell sur votre ordinateur.

Comment exécuter un script PowerShell

Pour démontrer l’exécution d’un script PowerShell, vous avez réellement besoin d’un fichier de script à exécuter ! Si vous n’en avez pas un à portée de main, téléchargez ce fichier ZIP et extrayez le fichier PS1 à l’intérieur. Vous trouverez un fichier de script simple à l’intérieur appelé GetServices.ps1.

Write-Output "Listing Computer Services"Get-Service

Chaque script PowerShell doit se terminer par une extension .ps1.

À l’aide de la Console

Une fois que vous avez un script prêt, vous pouvez exécuter un fichier de script PowerShell de différentes manières. L’un des moyens les plus courants consiste à utiliser la console PowerShell.

Pour le faire:

  1. Ouvrez la console PowerShell comme indiqué ci-dessus.

2. Accédez à l’emplacement du système de fichiers dans lequel se trouve votre script à l’aide de l’applet de commande PowerShell Set-Location ou de l’alias cd. Le script de ce tutoriel se trouve dans le C:\Temp annuaire.

PS> cd C:\Temp\

3. Exécutez le script en utilisant une notation par points (.). PowerShell est un shell qui recherche également les noms de commandes. Pour différencier une commande PowerShell d’un script, vous devez précéder le script d’un point. Ce point représente le répertoire courant.

 PS> .\GetServices.ps1

Comment exécuter un script PowerShell à partir de la Ligne de commande via l’emplacement PowerShell

Si vous ne pouvez pas ou préférez ne pas exécuter de scripts via la console PowerShell, vous pouvez également le faire avec la bonne vieille ligne de commande (invite de commande).

Pour exécuter des scripts via l’invite de commande, vous devez d’abord démarrer l’exécutable PowerShell (powershell.exe), avec l’emplacement PowerShell de C:\Program Files\WindowsPowerShell\powershell.exe , puis passez-lui le chemin du script en paramètre.

Vous pouvez exécuter des scripts avec des paramètres dans n’importe quel contexte en les spécifiant simplement lors de l’exécution de l’exécutable PowerShell comme powershell.exe -Parameter 'Foo' -Parameter2 'Bar'.

Une fois que vous ouvrez cmd.exe, vous pouvez exécuter un script PowerShell comme ci-dessous. Cet exemple exécute le moteur et lui transmet le chemin de script de C:\Temp\GetServices.ps1 .

Notez ci-dessous que l’exemple ci-dessous utilise le chemin d’emplacement PowerShell pour exécuter le script. Vous devrez le faire si le dossier n’est pas dans votre CHEMIN quelque part.

CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"

L’emplacement PowerShell pour PowerShell 7 utilise un exécutable différent nommé pwsh.exe généralement situé dans C:\Program Fichiers \PowerShell\7\pwsh.EXE.

Voici une vidéo YouTube pratique qui couvre l’exécution d’un script via un fichier batch que le cmd.exe s’exécute.

En utilisant l’ Power PowerShell

Si vous créez vos propres scripts ou modifiez ceux d’autres, vous utiliserez probablement un éditeur de script comme l’ Power PowerShell ou peut-être le code Visual Studio (VS). Puisque l’SE est livré avec Windows, concentrons-nous sur cette méthode pour ce tutoriel.

Pour appeler un script par l’intermédiaire de l’SE:

  1. Accédez au menu Démarrer, recherchez PowerShell I et ouvrez-le.
 Recherche Power PowerShell dans le menu Démarrer
Recherche Power PowerShell dans le menu Démarrer

2. Cliquez sur Fichier → Ouvrir et trouvez votre script.

 Ouvrir le Script à l'aide du Menu Fichier
Ouvrir le Script à l’aide du Menu Fichier

3. Une fois le script ouvert, cliquez sur le bouton vert Exécuter pour exécuter le script. Ce bouton appelle le script dans le terminal PowerShell intégré en bas.

 Exécuter un script en utilisant PowerShell I
Exécuter un script en utilisant PowerShell I

La sortie de l’exemple de script

Un script PowerShell peut parfois renvoyer la sortie. Cela se produit lorsque le script que vous exécutez est construit pour renvoyer des objets, ce qui est un composant fondamental de PowerShell.

Si vous exécutez l’exemple de script GetServices.ps1, vous verrez ce qui suit. Ce script exécute l’applet de commande Get-Service qui renvoie tous les services installés sur votre ordinateur Windows local.

PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----

Exécution d’un script PowerShell à partir d’un script

Supposons que vous ayez deux scripts et que vous souhaitiez que l’un appelle l’autre. Peut-être avez-vous un script appelé GetUser.ps1 et un autre appelé ResetPassword.ps1. À l’intérieur du script GetUser.ps1, vous souhaitez exécuter le ResetPassword.ps1 pour réinitialiser un mot de passe utilisateur.

À l’intérieur du script appelant (GetUser.ps1), vous ajouteriez une ligne pour exécuter l’autre script comme vous appelleriez le script à partir de la ligne de commande.

Vous pouvez voir ci-dessous que vous avez quelques options. Vous devez généralement choisir d’exécuter l’autre script au sein de la même session ou de la même portée pour simplifier les choses, sauf si vous avez une raison spécifique d’exécuter le script dans une autre session PowerShell.

## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.