Découvrez comment éteindre tous les ordinateurs d'un domaine via PowerShell
Un guide complet et scripté pour maîtriser l'arrêt distant dans votre réseau.
Points Clés à Retenir
- Utilisation de Get-ADComputer pour récupérer la liste de tous les ordinateurs dans le domaine.
- Application de Stop-Computer associée à Get-Credential pour exécuter l'arrêt à distance.
- Possibilité d'exclure certains groupes d'ordinateurs (par exemple, les serveurs) grâce à des filtres personnalisables.
Introduction générale au processus
Dans un environnement Active Directory, il est parfois nécessaire d'éteindre tous les ordinateurs d'un domaine pour des opérations de maintenance ou dans le cadre d'un arrêt d'urgence. La solution proposée repose sur l'utilisation des cmdlets PowerShell Get-ADComputer et Stop-Computer. Ces commandes vous permettent de récupérer la liste complète des ordinateurs puis de les éteindre de manière sécurisée. L'utilisation de Get-Credential garantit que seuls les administrateurs disposant des privilèges nécessaires peuvent exécuter ces actions sensibles.
Configuration Requise
Pour exécuter ces scripts, vous devez :
- Avoir installé le module Active Directory sur votre machine.
- Exécuter le script avec des privilèges d'administrateur de domaine.
- Configurer correctement les informations d'identification et, si nécessaire, adapter les filtres pour exclure certains groupes (par exemple, les serveurs).
Exemple de Code PowerShell Complet
Script de base pour éteindre tous les ordinateurs
Voici un script commenté qui permet de récupérer la liste des ordinateurs dans le domaine et de les éteindre en utilisant Stop-Computer. Ce script inclut un mécanisme simple de gestion d'erreurs afin de continuer le traitement même si un ou plusieurs ordinateurs n'ont pas pu être éteints.
# Importer le module Active Directory si ce n'est pas déjà fait
Import-Module ActiveDirectory
# Récupérer tous les ordinateurs du domaine
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
# Demander les informations d'identification d'administrateur
$credential = Get-Credential -Message "Veuillez fournir les informations d'identification d'un compte administrateur de domaine"
# Arrêter les ordinateurs avec gestion d'erreur
foreach ($computer in $computers) {
try {
Stop-Computer -ComputerName $computer -Force -Credential $credential -ErrorAction Stop
Write-Host "L'ordinateur $computer a été éteint avec succès."
}
catch {
Write-Host "Erreur lors de l'arrêt de l'ordinateur $computer: $_"
}
}
Version avec Throttle et Exclusion d'un groupe spécifique
Ce script plus avancé permet d'exclure un groupe d'ordinateurs (par exemple, les serveurs) en filtrant la liste récupérée par Get-ADComputer. Veillez à modifier les valeurs selon vos besoins.
# Importer le module Active Directory
Import-Module ActiveDirectory
# Nom du groupe à exclure (ex: serveurs)
$groupToExclude = "Serveurs"
# Récupérer la liste des membres du groupe à exclure
$excludedComputers = @()
$group = Get-ADGroup -Filter {Name -eq $groupToExclude} -Properties member
if ($group) {
$excludedComputers = $group.member | ForEach-Object {
# Extraire le nom de l'ordinateur à partir du DN (exemple: CN=PC1,CN=Computers,DC=VotreDomaine,DC=com)
($_ -split ',')[0] -replace '^CN=', ''
}
}
# Récupérer la liste complète des ordinateurs du domaine
$allComputers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
# Exclure les ordinateurs trouvés dans le groupe d'exclusion
$computersToShutdown = $allComputers | Where-Object { $excludedComputers -notcontains $_ }
# Afficher le nombre d'ordinateurs à éteindre pour confirmation
Write-Host "Nombre d'ordinateurs à éteindre: $($computersToShutdown.Count)"
# Obtenir les informations d'identification
$credential = Get-Credential -Message "Fournir les informations d'identification d'un administrateur de domaine"
# Arrêter les ordinateurs en utilisant un throttle pour limiter les connexions simultanées
Stop-Computer -ComputerName $computersToShutdown -Force -Credential $credential -ThrottleLimit 1000
Observations et Bonnes Pratiques
Sécurité et Attribution des Droits
Il est crucial d'exécuter ces scripts uniquement dans des environnements sécurisés et sur des réseaux testés au préalable. Assurez-vous d'utiliser un compte d'administrateur de domaine et de limiter l'accès aux scripts. L'utilisation de la cmdlet Get-Credential permet de garantir que seul un personnel autorisé pourra exécuter ces commandes.
Test dans un Environnement Contrôlé
Avant de déployer le script sur l'ensemble du domaine, effectuez un test sur un sous-ensemble d'ordinateurs pour valider le bon fonctionnement du script et vérifier qu'aucun service critiques ne soit compromis par l'arrêt. Il est également conseillé de prévoir une procédure de reprise afin de redémarrer rapidement les ordinateurs en cas d'erreur.
Utilisation du Paramètre -ThrottleLimit
Le paramètre -ThrottleLimit est efficace pour gérer la charge réseau et limiter le nombre d'ordinateurs éteints simultanément. Ajustez cette valeur en fonction de la taille de votre infrastructure et de vos capacités réseau.
Analyse Visuelle et Radar Chart
Le diagramme radar ci-dessous illustre de manière subjective plusieurs paramètres importants lors de la mise en œuvre de ces scripts PowerShell. Chaque dataset représente un aspect tel que la sécurité, l'efficacité, la facilité d'utilisation, l'extensibilité et la robustesse.
Vidéo Explicative
Pour mieux comprendre comment mettre en œuvre cette solution et voir le script en action, regardez cette vidéo explicative qui détaille le processus d'arrêt distant des ordinateurs d'un domaine avec PowerShell :
Tableau Comparatif des Approches et Paramètres
Le tableau ci-dessous compare les approches principales pour éteindre les ordinateurs dans un domaine avec PowerShell, en mettant en évidence les différences d'implémentation et les options de personnalisation disponibles.
| Méthode | Commande principale | Options importantes | Utilisation de groupe d'exclusion |
|---|---|---|---|
| Script de Base | Get-ADComputer + Stop-Computer | -Force, -Credential | Non |
| Script Avancé | Get-ADGroup, Get-ADComputer, Stop-Computer | -ThrottleLimit, -Force, -Credential | Oui |
| Planification via GPO | Script déployé via GPO | Gestion et planification auto | Dépend de la configuration |
FAQ - Questions Fréquentes
Comment s'assurer que tous les ordinateurs sont bien arrêtés ?
Puis-je reprendre le contrôle des ordinateurs éteints à distance ?
Quels sont les risques liés à cette opération ?
Comment gérer les erreurs dans le script ?
References
-
Eteindre tous les PC du domaine - Blog du Grouik
- Stop-Computer - Microsoft Documentation
-
10 Commands to Configure Windows with PowerShell - IT Connect
- Remove a Computer from a Domain Using PowerShell - NinjaOne
-
Shutdown All Windows Computers - WinSysBlog
Recommended Related Queries
Last updated April 2, 2025