Code PowerShell : guide et exemples pratiques

Introduction au code PowerShell

PowerShell est un framework d'automatisation et un interpréteur de commandes développé par Microsoft. Conçu à l'origine sous le nom de code Monad en 2003, il a été officiellement lancé en 2006 sous le nom de Windows PowerShell. Il repose sur le framework .NET et permet aux administrateurs système et aux développeurs d'automatiser des tâches répétitives via des scripts. En 2016, Microsoft a ouvert le code source de PowerShell sous licence MIT, ce qui a donné naissance à PowerShell Core, une version multiplateforme compatible avec Windows, Linux et macOS. Aujourd'hui, PowerShell est un outil essentiel pour la gestion des systèmes d'exploitation, des services cloud et des infrastructures Active Directory.

PowerShell se distingue des interpréteurs de commandes traditionnels par sa capacité à manipuler des objets plutôt que du texte brut. Chaque cmdlet, acronyme de command-let, produit des objets .NET qui peuvent être passés dans un pipeline, transformés, filtrés ou exportés. Cette approche orientée objet offre une flexibilité et une puissance très supérieures aux shells classiques. La documentation officielle de Microsoft fournit une vue d'ensemble complète des capacités de PowerShell.

Code PowerShell : guide et exemples pratiques - 1

Syntaxe et concepts fondamentaux

PowerShell utilise un langage de script inspiré des langages de programmation modernes. Les commandes de base sont les cmdlets, dont le nom suit la convention Verbe-Nom, par exemple Get-Help, Set-Location, Remove-Item. Les verbes sont normalisés pour garantir la cohérence (Get, Set, New, Remove, Invoke, etc.). La syntaxe inclut des paramètres nommés, des commutateurs et des valeurs. Les pipelines sont définis par le symbole | et permettent de chaîner plusieurs commandes en une seule ligne : par exemple Get-Process | Where-Object {$_.CPU -gt 10} affiche les processus utilisant plus de 10 % de CPU.

Les variables en PowerShell sont préfixées par le signe $, comme $processus ou $date. Les types sont dynamiques mais peuvent être explicitement déclarés. Les structures de contrôle incluent les boucles for, foreach, while et les instructions conditionnelles if, else if, else et switch. PowerShell supporte également les fonctions, les modules et les scripts sauvegardés avec l'extension .ps1. Pour sécuriser l'exécution des scripts, le moteur intègre des politiques d'exécution (Execution Policy) qui limitent les scripts autorisés.

Code PowerShell : guide et exemples pratiques - 2

Voici une liste non exhaustive des cmdlets les plus couramment utilisés :

  • Get-Service : récupère l'état des services Windows.
  • Get-Process : liste les processus en cours.
  • Set-Location : change le répertoire courant, équivalent de cd.
  • Get-EventLog : accède aux journaux d'événements système.
  • Get-ADUser : interroge les utilisateurs d'Active Directory.
  • Get-ADComputer : interroge les ordinateurs du domaine.
  • Set-ExecutionPolicy : configure la politique d'exécution des scripts.
  • New-Item : crée un fichier ou un dossier.
  • Remove-Item : supprime un élément.
  • Get-Help : affiche l'aide intégrée des cmdlets.

Ces cmdlets sont la base de tout script PowerShell. Leur maîtrise permet d'écrire des automatisations efficaces pour la gestion quotidienne des systèmes.

Code PowerShell : guide et exemples pratiques - 3

Exemples pratiques de scripts PowerShell

Un cas d'usage fréquent en entreprise est le suivi des comptes utilisateurs créés récemment dans Active Directory. Grâce au module ActiveDirectory, on peut récupérer ces informations avec une simple requête. Le script ci-dessous affiche les utilisateurs créés au cours des sept derniers jours :

$Fecha = (Get-Date).AddDays(-7)
Get-ADUser -Filter {whenCreated -ge $Fecha} -Properties Name,Enabled,whenCreated

Code PowerShell : guide et exemples pratiques - 4

Ce script utilise la cmdlet Get-Date pour obtenir la date actuelle, puis soustrait sept jours. Le filtre sur l'attribut whenCreated permet de ne conserver que les utilisateurs dont la date de création est postérieure ou égale à cette limite. Les propriétés Name, Enabled et whenCreated sont explicitement demandées. Pour exécuter ce script, il faut avoir les droits appropriés sur le domaine et importer le module Active Directory via Import-Module ActiveDirectory. La politique d'exécution doit être au moins fixée à RemoteSigned.

Un autre exemple classique est l'arrêt ou le redémarrage d'un service à distance. La cmdlet Invoke-Command permet d'exécuter des blocs de script sur des machines distantes en utilisant WinRM. Par exemple : Invoke-Command -ComputerName SRV01 -ScriptBlock {Restart-Service -Name Spooler} redémarre le service d'impression sur SRV01. Ces techniques sont essentielles pour l'administration centralisée.

Code PowerShell : guide et exemples pratiques - 5

Le tableau suivant résume quelques cmdlets courantes avec leur description et un exemple d'utilisation :

CmdletDescriptionExemple simple
Get-ProcessListe les processus en coursGet-Process -Name notepad
Set-LocationChange le répertoire de travailSet-Location C:\Windows
Get-ServiceAffiche l'état des servicesGet-Service -Name bits
Get-EventLogLit les journaux d'événementsGet-EventLog -LogName System -Newest 5
Get-ADUserRecherche des utilisateurs ADGet-ADUser -Identity jdupont
Set-ExecutionPolicyModifie la sécurité d'exécutionSet-ExecutionPolicy RemoteSigned
New-ItemCrée un fichier ou dossierNew-Item -Path .\test.txt -ItemType File
Remove-ItemSupprime un élémentRemove-Item .\temp\*.log
Get-HelpAffiche l'aide d'une cmdletGet-Help Get-Process -Detailed

Ces exemples illustrent la puissance de PowerShell pour manipuler l'environnement Windows et Active Directory. Pour approfondir, la page GitHub officielle de PowerShell propose la documentation technique, le code source et les contributions de la communauté.

Gestion de la sécurité avec les politiques d'exécution

Par défaut, Windows interdit l'exécution des scripts PowerShell pour prévenir les attaques malveillantes. La commande Set-ExecutionPolicy permet de définir le niveau de confiance. Les principales politiques sont : Restricted (aucun script autorisé), AllSigned (scripts signés par un éditeur de confiance), RemoteSigned (scripts téléchargés doivent être signés, scripts locaux autorisés) et Unrestricted (tous les scripts autorisés). Pour un poste de travail administrateur, RemoteSigned est un bon compromis. En entreprise, on utilise souvent AllSigned pour garantir l'intégrité.

Il est important de noter que la politique d'exécution n'est pas un verrou de sécurité infranchissable, mais une protection contre les exécutions accidentelles. Les administrateurs peuvent outrepasser cette politique en passant le paramètre -ExecutionPolicy Bypass lors du lancement d'un script, ou en utilisant la stratégie de groupe pour déployer une configuration centralisée. PowerShell Core, quant à lui, utilise des mécanismes similaires mais adaptés aux systèmes Linux.

La gestion des sessions à distance est également sécurisée par WinRM (Windows Remote Management) et nécessite une configuration appropriée (Enable-PSRemoting). Les identifiants peuvent être passés en toute sécurité via des objets PSCredential. L'utilisation de certificats et de modules comme Posh-SSH permet de gérer des hôtes non Windows.

Références

Les informations de cet article proviennent des sources suivantes :

Microsoft Learn. PowerShell Overview. https://learn.microsoft.com/es-es/powershell/
Microsoft Learn. Scripting Language Specification. https://learn.microsoft.com/es-es/powershell/scripting/lang-spec/
IONOS. Top 40 PowerShell Cmdlets. https://www.ionos.es/digitalguide/servidores/configuracion/comandos-de-powershell/
Wikipedia. PowerShell. https://es.wikipedia.org/wiki/PowerShell
GitHub. PowerShell Repository. https://github.com/PowerShell/PowerShell

PowerShell scripting automatisation Windows administration système informatique
Avertissement Contenu informatif fourni à titre de guide général.
Auteur

Stefano Barcellos

Contributeur sur Visite Barbados.

« Article précédent
Raccourci pour redémarrer les pilotes rapidement

Articles connexes