PowerShell est un shell de ligne de commande et un langage de script qui permet aux professionnels de l’informatique d’automatiser les tâches administratives sous Windows. Avec PowerShell, vous pouvez gérer les serveurs Windows, les postes de travail, les applications et les services de manière efficace via une interface de ligne de commande simple.
Dans ce guide complet, nous couvrirons les essentiels de l’utilisation de PowerShell pour l’administration Windows, notamment :
- Présentation de PowerShell
- Fonctionnalités et capacités clés
- Installation et configuration de PowerShell
- Syntaxe PowerShell, applets de commande et pipelines
- Utilisation d’objets dans PowerShell
- Scripts avec PowerShell
- Automatisation des tâches et des workflows
- Gestion des systèmes et services Windows
- Bonnes pratiques pour l’écriture de scripts PowerShell
Une introduction à PowerShell
PowerShell est le shell de ligne de commande et le langage de script standardisé de Microsoft pour la gestion des systèmes d’exploitation Windows et des applications. Il est intégré à Windows depuis Windows 7 et Windows Server 2008 R2.
Les principales fonctionnalités de PowerShell incluent :
- Fournit un shell de ligne de commande puissant pour la gestion des systèmes
- Implémente un langage de script pour l’automatisation des tâches
- Permet d’accéder au .NET Framework depuis la ligne de commande
- Expose l’instrumentation de gestion Windows via des applets de commande faciles à utiliser
- Offre des capacités de script puissantes pour le traitement par lots de commandes
- Fournit une API d’hébergement pour intégrer PowerShell dans les applications
- Conçu pour l’automatisation du système et la planification des tâches
Avec PowerShell, les administrateurs peuvent contrôler et automatiser presque tous les aspects des systèmes et serveurs Windows. Il remplace les anciens shells comme l’invite de commandes et utilise des objets .NET pour interagir avec le système d’exploitation.
Par rapport aux autres langages de script, PowerShell vise à fournir une syntaxe et une expérience simples et cohérentes construites sur le .NET Framework. Il tire parti des classes .NET pour exposer les API Windows de manière simple.
Maintenant que nous avons couvert les bases, voyons comment installer et configurer PowerShell sous Windows.
Installation et configuration de PowerShell
PowerShell est intégré à Windows 7, Windows Server 2008 R2 et versions ultérieures. Pour vérifier si vous avez PowerShell installé, ouvrez l’invite de commandes et tapez powershell
.
Si PowerShell est installé, vous accéderez au shell interactif PowerShell. Tapez exit
pour quitter le shell.
Pour les anciennes versions de Windows, vous pouvez installer PowerShell via les téléchargements Windows Management Framework de Microsoft. Cela vous permet d’obtenir les dernières mises à jour PowerShell sur les anciens systèmes d’exploitation.
Une fois PowerShell installé, vous pouvez personnaliser votre environnement via le script de profil PowerShell. Cela vous permet de définir des alias, des fonctions, des variables et d’autres préférences qui se chargent à chaque démarrage du shell.
Pour configurer votre profil, créez un script PowerShell appelé Microsoft.PowerShell_profile.ps1
enregistré dans l’un de ces dossiers :
$HOME\Documents\WindowsPowerShell\
pour votre profil personnel$PSHOME\Microsoft.PowerShell_profile.ps1
comme profil global pour tous les utilisateurs
Par exemple, pour définir une invite PowerShell personnalisée, ajoutez ce qui suit à votre script de profil :
function prompt {
Write-Host "$(Get-Date -Format G) [Administrateur]" -ForegroundColor Cyan
Write-Host " $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# Invite de saisie
return " "
}
Cela affichera un horodatage, un nom d’utilisateur, le répertoire actif et retournera un espace pour la saisie chaque fois que vous démarrerez PowerShell ou exécuterez une commande.
Les profils vous permettent de personnaliser les alias, les fonctions, les variables d’environnement et les préférences PowerShell. Passons maintenant à la syntaxe PowerShell.
Comprendre la syntaxe PowerShell
La syntaxe PowerShell suit une structure verbe-nom pour les commandes, alignée sur le langage naturel. Les principales commandes que vous exécuterez sont appelées cmdlets qui effectuent une action sur un objet cible.
Les cmdlets suivent un schéma de nommage standard Verbe-Nom
comme Get-Process
, Set-Location
ou Start-Service
. Le verbe décrit l’action, tandis que le nom représente l’entité sur laquelle l’action est effectuée.
Par exemple, pour récupérer une liste des processus en cours d’exécution :
PS C:\> Get-Process
Cette applet de commande verb Get
agit sur le nom de processus pour retourner tous les processus actifs sur le système.
Les applets de commande peuvent prendre des paramètres positionnels qui modifient leur comportement ou transmettent des objets d’entrée. Les paramètres sont indiqués avec un tiret -Name
ou peuvent être positionnés directement comme Get-Process PowerShell
.
Le piping |
transmet la sortie d’une applet de commande vers l’entrée d’une autre. Cela vous permet de chainer plusieurs commandes comme :
PS C:\> Get-Process | Where-Object { $_.CPU -gt1000 }
Cela récupère les processus, filtre ceux de plus de 1000 CPU, et les transmet dans le pipeline.
Au-delà des applets de commande, PowerShell prend en charge toute la syntaxe de programmation habituelle comme les variables, les boucles, les conditions, les commutateurs, les fonctions, les classes, etc. Voyons quelques exemples :
Variables :
$processName = "PowerShell"
Get-Process -Name $processName
Conditionnel Si/Sinon :
$cpu = Get-Process PowerShell | Select-Object -ExpandProperty CPU
if ($cpu -gt 1000) {
Write-Host "CPU élevé !"
} else {
Write-Host "CPU normal"
}
Boucle For :
$processes = Get-Process
for($i = 0; $i -lt $processes.length; $i++) {
Write-Host $processes[$i]
}
Fonctions :
function Get-TopProcesses {
Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 10
}
Get-TopProcesses
Ces exemples démontrent comment PowerShell permet aux administrateurs d’utiliser des constructions de programmation pour le scripting, le contrôle de flux et les itérations.
Passons maintenant à la façon dont nous pouvons utiliser ces concepts au niveau supérieur avec le scripting.
Scripting avec PowerShell
L’une des principales forces de PowerShell est ses capacités de script pour l’automatisation et le traitement par lots. Les scripts PowerShell contiennent des commandes dans un document PowerShell enregistré avec une extension .ps1
.
Les scripts offrent des avantages tels que :
- Automatisation des tâches répétitives
- Encourage la réutilisation pour assurer la cohérence
- Permet une exécution non interactive
- Centralise les procédures et les stratégies
- Permet le contrôle de version et le partage
Voyons un exemple simple de script PowerShell qui imprime un message et exécute une série de commandes :
# Exemple de script PowerShell
Write-Host "Exécution du script PowerShell !"
Get-Service -Name 'Bits'
Start-Service -Name 'Bits'
Write-Host "Service Bits démarré."
Get-Process -Name 'Outlook'
Stop-Process -Name 'Outlook'
Cela imprime un message, récupère l’état du service Bits, le démarre, puis arrête tous les processus Outlook en cours d’exécution.
Pour exécuter le script, exécutez :
PS C:\> .\monScript.ps1
Où monScript.ps1
est le nom de notre script d’exemple.
Les scripts peuvent utiliser toute la syntaxe de programmation dont nous avons discuté comme les variables, les conditions, les boucles, les fonctions, les classes, etc. Ils prennent en charge le passage d’arguments pour les scripts paramétrés.
Par exemple :
param(
[string]$NomService
)
Get-Service -Name $NomService
if ((Get-Service -Name $NomService).Status -ne 'Running') {
Start-Service -Name $NomService
Write-Host "Service $NomService démarré"
}
Cela définit un paramètre $NomService
qui est transmis lors de l’appel du script. Le script recherche l’état du service et le démarre conditionnellement s’il n’est pas déjà en cours d’exécution.
Pour exécuter un script paramétré :
PS C:\> .\Start-Service.ps1 -NomService 'Bits'
Cela transmet ‘Bits’ au paramètre $NomService
.
De cette façon, PowerShell fournit des outils extrêmement robustes pour le scripting des tâches administratives.
Regardons maintenant comment nous pouvons utiliser PowerShell pour automatiser les flux de travail et les processus sous Windows.
Automatisation des tâches avec PowerShell
L’un des principaux avantages de PowerShell est sa capacité à automatiser les workflows pour effectuer des tâches répétitives. Quelques exemples incluent :
- Création de comptes utilisateur en masse
- Approvisionnement automatisé de serveurs
- Déploiement logiciel par lot
- Processus de sauvegarde nocturne
- Planification des tâches
PowerShell rend facile le scripting de ces procédures et leur déclenchement à la demande ou selon une planification.
Par exemple, pour automatiser une sauvegarde de fichiers nocturne :
# Sauvegarde-Fichiers.ps1
$dossierSauvegarde = "D:\Sauvegardes"
$dossiers = Get-ChildItem -Path "C:\Users"
foreach ($dossier in $dossiers) {
$fromPath = $dossier.FullName
$toPath = Join-Path -Path $dossierSauvegarde -ChildPath $dossier.Name
Copy-Item -Path $fromPath -Destination $toPath -Recurse -Force
Write-Host "Sauvegardé $fromPath vers $toPath"
}
Cela parcourt les dossiers utilisateur, les copie dans un emplacement de sauvegarde et consigne la sortie.
Nous pourrions ensuite le planifier pour s’exécuter chaque nuit avec le Planificateur de tâches en utilisant un déclencheur comme :
Déclencheur : Quotidien
À : 23h
Répéter : Indéfiniment
Pour le déploiement de logiciels, PowerShell fournit des applets de commande comme Install-Package
pour déployer des packages MSI :
$packages = @('package1.msi', 'package2.msi')
foreach ($package in $packages) {
Write-Host "Installation du package : $package"
Start-Process msiexec.exe -ArgumentList "/i $package /quiet" -Wait
}
Cela parcourt un tableau de packages, imprime un message et les installe silencieusement via msiexec.exe
.
PowerShell permet d’automatiser presque sans effort les processus IT récurrents comme les sauvegardes, les déploiements, la configuration des utilisateurs, etc. Voyons ensuite comment gérer les services Windows de base avec PowerShell.
Gestion de Windows avec PowerShell
En plus de l’automatisation, PowerShell est extrêmement utile pour gérer les serveurs, les postes de travail et les applications Windows. Pratiquement tous les aspects de l’administration Windows sont contrôlables via des applets de commande PowerShell.
Quelques exemples incluent :
Services :
Get-Service
– Obtenir le statut du serviceStart-Service
– Démarrer un serviceStop-Service
– Arrêter un service en cours d’exécutionRestart-Service
– Redémarrer un serviceNew-Service
– Créer un nouveau service
Processus :
Get-Process
– Lister les processus en cours d’exécutionStop-Process
– Arrêter un processusStart-Process
– Démarrer un nouveau processusWait-Process
– Attendre la fin d’un processus
Journaux d’événements :
Get-EventLog
– Récupérer les journaux d’événements WindowsClear-EventLog
– Vider un journal d’événementsWrite-EventLog
– Écrire un événement dans un journal
Mises à jour Windows :
Get-WindowsUpdate
– Afficher les mises à jour disponiblesInstall-WindowsUpdate
– Installer des mises à jour
Mise en réseau :
Get-NetIPConfiguration
– Afficher les paramètres d’adresse IPSet-DNSClientServerAddress
– Définir les serveurs DNSTest-NetConnection
– Tester la connectivité réseau
Active Directory :
Get-ADUser
– Requêter les utilisateurs ADNew-ADUser
– Créer un nouvel utilisateur ADSet-ADUser
– Modifier un utilisateur ADRemove-ADUser
– Supprimer un utilisateur AD
Système de fichiers :
Get-ChildItem
– Lister les fichiers et dossiersCopy-Item
– Copier des fichiers et dossiersMove-Item
– Déplacer des fichiers et dossiersRemove-Item
– Supprimer des fichiers et dossiers
Cette liste donne un petit échantillon des tâches d’administration qui peuvent être gérées via des applets de commande PowerShell. Tout composant avec une instrumentation de gestion exposée via .NET peut être utilisé depuis la ligne de commande.
Voyons quelques exemples d’utilisation pour gérer les services avec PowerShell :
Obtenir le statut du service d’impression :
PS C:\> Get-Service -Name 'Spooler'
Redémarrer un service arrêté :
PS C:\> Restart-Service -Name 'Spooler'
Désactiver un service :
PS C:\> Set-Service -Name 'BITS' -StartupType Disabled
Créer un nouveau service de surveillance de système de fichiers :
PS C:\> New-Service -Name 'FileWatcher' -BinaryPathName 'C:\FileWatcher.exe'
Ces exemples montrent comment PowerShell vous permet de contrôler directement les composants Windows comme les services, les processus, les mises à jour, la mise en réseau, les journaux, AD, le système de fichiers, etc.
Bonnes pratiques pour le scripting PowerShell
Lors du développement de scripts PowerShell pour l’automatisation et l’administration, suivre les bonnes pratiques permet de créer du code robuste, fiable et maintenable. Quelques conseils incluent :
- Ajouter une aide basée sur des commentaires pour documenter les scripts
- Tirer parti des scripts paramétrés avec validation des entrées
- Utiliser une nommage verbe-nom cohérent pour les fonctions personnalisées
- Éviter les valeurs codées en dur, utiliser des variables à la place
- Gérer les erreurs avec grâce via des blocs try/catch
- Permettre l’exécution des scripts de manière non interactive avec -NoProfile
- Formater la sortie pour la lisibilité avec des espaces, des sauts de ligne et du texte
- Toujours tester minutieusement les scripts avant une utilisation en production
- Utiliser le contrôle de version comme Git pour le suivi des modifications
- Stocker les scripts dans un référentiel sous contrôle de source
- Limiter l’exposition des droits – éviter d’utiliser des comptes Admin dans les scripts
- Ne pas exposer de mots de passe ou de secrets dans les scripts
- Appeler les scripts à partir de scripts wrapper pour la cohérence
L’adoption de normes et de bonnes pratiques pour les scripts PowerShell vous sera utile au fil du temps et permettra aux autres de comprendre et de tirer parti de votre code.
Conclusion
Dans ce guide, nous avons couvert les bases de PowerShell pour l’administration et l’automatisation des tâches dans les environnements Windows. Les sujets clés incluaient :
- Présentation de PowerShell et de ses capacités
- Installation et configuration de PowerShell
- Syntaxe PowerShell, applets de commande et pipelines
- Scripting avec PowerShell pour l’automatisation
- Gestion des services, processus et composants Windows
- Bonnes pratiques pour l’écriture de scripts PowerShell
Avec son interface de ligne de commande robuste, son intégration .NET et son langage de script universel, vous pouvez contrôler presque tous les aspects des systèmes Windows et résoudre des problèmes concrets.
J’espère que cet article fournit une solide base pour tirer parti des capacités de PowerShell pour la gestion des serveurs et des postes de travail. Les compétences PowerShell sont précieuses pour les administrateurs Windows cherchant à réduire les tâches répétitives et à améliorer l’efficacité.
One Reply to “Fondamentaux de PowerShell : Automatisation des tâches dans l’administration Windows”
Merci 🙏 génial cela m’a aidé à comprendre et commencer les scripts.