Ask me anything
Ithy Logo
Sign in to save

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.

server room network equipment

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 ?

Pour vérifier si tous les ordinateurs ont été arrêtés, vous pouvez utiliser des commandes de monitoring ou vérifier les journaux systèmes sur votre contrôleur de domaine. Le script peut être modifié pour produire un rapport sur les succès et les échecs de chaque tentative d'arrêt.

Puis-je reprendre le contrôle des ordinateurs éteints à distance ?

Une fois éteints, les ordinateurs doivent être redémarrés localement ou via un outil de gestion des systèmes qui permet le redémarrage à distance. Le script ici se concentre uniquement sur l'arrêt.

Quels sont les risques liés à cette opération ?

L'arrêt massif des ordinateurs peut entraîner des pertes de données non sauvegardées et interrompre des services critiques. Il est donc recommandé de prévenir les utilisateurs et d'effectuer cette opération durant une fenêtre de maintenance planifiée.

Comment gérer les erreurs dans le script ?

Le script utilise des blocs try/catch pour gérer les erreurs. Chaque tentative d'arrêt qui échoue affiche un message d'erreur. Pour une gestion avancée, vous pouvez enregistrer ces erreurs dans un journal pour une vérification ultérieure.


References

Recommended Related Queries

social.technet.microsoft.com
mass shutdown computers in a network?

Last updated April 2, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI