Comment vérifier l’état de l’ordinateur et les noms d’utilisateur dans Active Directory à l’aide de PowerShell
Ce guide vous aidera à créer un rapport détaillé sur tous les ordinateurs de votre environnement Active Directory. Ce rapport indiquera si chaque ordinateur est connecté, qui est connecté et listera tous les ordinateurs de votre domaine. Ces étapes sont utiles aux administrateurs système qui cherchent à maîtriser leur réseau, surtout lorsque la situation semble chaotique.
Prérequis
- Assurez-vous que vous disposez des droits d’administrateur sur votre serveur Windows, sans exception.
- Le module Active Directory doit être installé sur un contrôleur de domaine ou une machine avec des outils RSAT.
- Ouvrez PowerShell, de préférence avec des privilèges d’administrateur.
Étape 1 : ouvrez PowerShell en tant qu’administrateur
Recherchez simplement PowerShell dans le menu Démarrer, puis faites un clic droit et sélectionnez « Exécuter en tant qu’administrateur ». Si vous utilisez déjà une session avec privilèges élevés, vous avez déjà fait le bon choix.
Étape 2 : Importer le module Active Directory
Ceci est indispensable avant d’exécuter des commandes AD, surtout si PowerShell génère des erreurs concernant des applets de commande manquantes. Exécutez :
Import-Module ActiveDirectory
Parfois, sur les serveurs, ce module se charge automatiquement, mais généralement, il faut le faire manuellement. Cela permet de garantir le bon fonctionnement de commandes comme Get-ADComputer
celles-ci.
Étape 3 : récupérez votre liste d’ordinateurs
C’est ici que vous indiquez à PowerShell de récupérer tous les noms de machines de votre domaine :
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
Cette opération récupère tous les objets informatiques. Attention : si votre domaine est volumineux, cette opération peut prendre quelques secondes. Assurez-vous également que votre compte dispose des autorisations de lecture depuis AD.
Étape 4 : préparer un tableau pour les résultats
En gros, créez un conteneur vide pour stocker les informations au fur et à mesure :
$results = @()
Étape 5 : Parcourez chaque ordinateur et vérifiez son état
C’est là que le bât blesse : chaque machine est pingée pour vérifier sa connexion, puis tente de récupérer l’utilisateur connecté. Voici une version simplifiée :
foreach ($computer in $computers) { if (Test-Connection -ComputerName $computer -Count 2 -Quiet) { try { $user = Invoke-Command -ComputerName $computer -ScriptBlock { (Get-WMIObject -Class Win32_ComputerSystem).UserName } -ErrorAction Stop $status = "Online" } catch { // Sometimes, remote commands fail even if ping works, weirdly.$user = "Access Denied" // Or just leave blank, depending.$status = "Online" } } else { $user = "N/A" $status = "Offline" } $results += [PSCustomObject]@{ ComputerName = $computer Status = $status LoggedInUser = $user } }
Raisonnement ? Ping vérifie l’accessibilité du réseau ; Invoke-Command tente de déterminer qui est connecté. Bien sûr, les pare-feu ou les autorisations peuvent provoquer des problèmes. Si vous obtenez des erreurs d’accès refusé, vérifiez que la communication à distance PowerShell est activée sur les machines distantes ( la commande Enable-PSRemoting est utile).Parfois, la première exécution échoue, mais elle fonctionne à nouveau après un redémarrage ou un redémarrage rapide des services WinRM.
Étape 6 : Enregistrer les résultats dans un fichier
Une fois toutes les informations rassemblées, transférez-les dans un fichier CSV afin de ne pas avoir à parcourir les discussions PowerShell :
$results | Export-Csv -Path "C:\ComputerListStatus.csv" -NoTypeInformation
Ce fichier sera enregistré dans C:\.Vous pouvez modifier le chemin d’accès si vous le souhaitez. Vous pouvez l’ouvrir avec Excel pour une vue plus claire.
Conseils supplémentaires et problèmes courants
Si certains ordinateurs refusent de répondre ou si vous recevez de nombreux messages « Accès refusé », vérifiez que les machines autorisent les commandes PowerShell à distance et que votre utilisateur dispose des autorisations appropriées. Vérifiez également les problèmes de réseau : un simple port bloqué ( 5985 pour HTTP ou 5986 pour HTTPS) peut parfois en être la cause.
Si vos commandes semblent lentes ou bloquées, il peut être judicieux d’exécuter le script sur des unités d’organisation plus petites ou de filtrer les machines une par une. PowerShell peut être capricieux, surtout dans les environnements de grande taille.
Conclusion
En suivant ces étapes, vous obtenez un aperçu assez précis de l’état de votre réseau. Utile pour les audits, le dépannage ou la planification des mises à niveau. Je ne sais pas pourquoi, mais parfois, cela fonctionne parfaitement ; d’autres fois, la configuration réseau ou les autorisations perturbent le système. C’est toujours mieux que de deviner.
Questions fréquemment posées
Que faire si je n’ai pas le module Active Directory installé ?
Vous pouvez l’ajouter via Paramètres Windows > Applications et fonctionnalités > Fonctionnalités facultatives ou Gestionnaire de serveur > Ajouter des rôles et des fonctionnalités. Recherchez les outils RSAT et installez le module Active Directory pour Windows PowerShell.
Puis-je modifier le chemin du fichier CSV ?
Oui, il suffit de modifier le chemin dans la commande d’exportation. Par exemple, pour enregistrer dans Téléchargements, faites :
$results | Export-Csv -Path "$env:UserProfile\Downloads\ComputerStatus.csv" -NoTypeInformation
Comment puis-je vérifier une seule machine spécifique ?
Remplacez la $computers
boucle par une chaîne de nom d’hôte fixe, comme :
$computerName = "DESKTOP-XYZ" if (Test-Connection -ComputerName $computerName -Count 2 -Quiet) {...}
Très utile si vous souhaitez simplement des informations sur une machine au lieu de l’ensemble du domaine.
Résumé
- Assurez-vous que PowerShell a le module AD chargé.
- Envoyez une requête ping à chaque machine et tentez des vérifications SCM à distance.
- Collecter des informations sur l’utilisateur actuellement connecté.
- Enregistrez au format CSV pour une révision facile.
Croisons les doigts pour que cela aide et que cela évite à quelqu’un des heures de vérifications manuelles ou d’arrachage de cheveux.