Mon PC Windows...

Commandes PowerShell

 

Powershell est disponible depuis Windows XP SP2. Les scripts portent l'extension PS1 et s'exécutent dans une fenêtre PowerShell, le langage doit être installé. Il existe plusieurs versions de Powershell, selon votre version de Windows, vous ne disposez pas nativement de la même version de Powershell. Tous les scripts et les commandes que vous pouvez trouver ne sont pas compatible avec toutes les installations de powershell.
Pour identifier les conditions d'exécution de commandes et scripts, voir notre page Commandes Powershell
Si vous devez faire évoluer la version de PowerShell, vous pouvez consulter la page suivante :  https://docs.microsoft.com/fr-fr/powershell/scripting/windows-powershell/install/windows-powershell-system-requirements

Sachez également qu'il existe une version multiplateforme de Powershell (Powershell Core), celle-ci a été adaptée et comporte quelques différence avec les versions Powershell natives de Windows, cette version peut être utilisée avec certaines versions de Linux et de Mac OS.

Les commandes powershell s'exécutent dans un environnement dédié, vous pouvez le démarrer dans une fenêtre de commande Powershell (Démarrer>Executer>Powershell.exe) ou encore avec l'application Powershell ISE qui permet également de développer et tester des scripts. 

Vous trouverez ci dessous les informations utiles pour vérifier l'environnement et le contexte d'exécution de vos commandes et scripts PS1.
Dans nos pages Commandes Powershell(voir menu de droite) vous trouverez aussi plusieurs lignes de commandes utiles. Notez que certaines d'entre elles nécessitent d'utiliser le mode Administrateur (élévation de privilèges, exécuter en tant qu'Administrateur).

 

Vérifier si vous pouvez exécutez des commandes et scripts

Pour connaitre la version de Powershell

$PsVersionTable valeur PSVersion

$Host valeur Version

Pour identifier les stratégies d'exécution et limitations

Get-ExecutionPolicy affiche la stratégie d'execution des scripts powershell (Restricted, AllSigned, RemoteSigned, Unrestricted). Seuls les modes RemoteSigned et Unrestricted vous permettent d'executer tous les scripts et commandes (signés ou non) en local.
 *Pour modifier la stratégie et permettre aux scripts de s'executer correctement en local, utilisez Set-ExecutionPolicy RemoteSigned en mode Administrateur

En mode administrateur, vous pouvez executer un script en en outrepassant la stratégie. Depuis une invite de commande, utilisez la commande : Powershell.exe -executionPolicy Bypass -File monscript.ps1

$ExecutionContext.SessionState.LanguageMode affiche le mode de language contraint.
FullLanguage indique qu'il n'y a pas de restriction - ConstrainedLanguage indique qu'il y a des restrictions
Pour lever les restrictions, définissez la clé de registre ci dessous à 8
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\__PSLockdownPolicy (REG_SZ)

Pour connaitre les commandes et modules disponibles

Get-command affiche la liste des commandes disponibles

Get-module -listavailable affiche les modules actuellement disponibles dans Windows
> Les modules sont présents à l'emplacement défini par la variable d'environnement Windows PSModulePath
 *La commande Install-Module permet d'ajouter des modules téléchargés

 

Créer un raccourci ou une tâche planifiée pour exécuter un script powershell

L'execution d'un script Powershell se fait à partir de l'application Powershell.exe.

- Un raccourci Windows peut se faire simplement avec le chemin complet du fichier ps1. Néanmoins, plusieurs paramètres peuvent empêcher l'execution :
  * Le chemin Démarrer dans ne correspond pas à celui attendu (emplacement du fichier ps1)
  * La stratégie d'execution est bloquante, voir ci-dessus 

- La création d'un tâche planifiée pour executer nomscript.ps1 nécessite un compte avec les privilèges élevés, ci dessous les paramètres : 
   Programme/script  : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe (powershell.exe ou le chemin complet de powershell.exe)
   Ajouter arguments : -executionpolicy bypass -file nomscript.ps1
   Executer avec les autorisations maximales : Cocher

   Utilisez le compte utilisateur Système (Exécuter même si l'utilisateur n'est pas connecté) pour une tâche de maintenance dont l'execution est iundépendante de l'ouverture de session