Oui, stocker des informations dans la description des objets ordinateur Active Directory n’est pas nouveau, mais cela peut s’avérer très utile pour conserver à portée de main les détails matériels, le dernier utilisateur connecté, voire le nom du contrôleur de domaine. Le problème, c’est que la saisie manuelle de ces informations n’est pas une solution viable à grande échelle, surtout avec des centaines ou des milliers de machines. L’automatisation avec PowerShell simplifie grandement les choses, et la configuration d’une stratégie de groupe pour exécuter ces scripts à l’ouverture de session garantit la mise à jour des données. Attention toutefois aux autorisations : un utilisateur peut parfois écraser vos informations si les permissions ne sont pas correctement gérées. Globalement, c’est une méthode pratique pour maintenir à jour des entrées manuelles sans effort.
Comment corriger et automatiser la mise à jour des informations des ordinateurs dans Active Directory à l’aide de PowerShell
Mettez à jour la description de vos ordinateurs avec PowerShell
Cette méthode est idéale pour consulter les détails matériels tels que le fabricant, le modèle ou le numéro de série dans le champ de description d’Active Directory. Pratique pour le dépannage ou pour obtenir une vue d’ensemble sans parcourir l’inventaire du matériel. Elle s’applique lorsque la description est incomplète ou nécessite une mise à jour. Le script se connectera à Active Directory, localisera la machine concernée et mettra à jour sa description avec les valeurs collectées localement (par exemple, via WMI).Sur certaines configurations, cette méthode peut ne fonctionner que sur la machine exécutant le script. Pour mettre à jour tous les ordinateurs à distance, une autre approche sera nécessaire (nous y reviendrons).Une fois le script exécuté, actualisez la console ADUC : les informations devraient s’afficher, correctes et à jour.
Voici le fonctionnement du script principal : il utilise la classe DirectoryServices. NET pour se connecter aux objets ordinateur Active Directory et les modifier. La commande ressemble à ceci (remarque : vous devrez peut-être adapter les chemins LDAP en fonction de la configuration de votre domaine) :
$ComputerSearcher = New-Object DirectoryServices. DirectorySearcher $ComputerSearcher. SearchRoot = "LDAP://DC=yourdomain, DC=com" $ComputerSearcher. Filter = "(&(objectCategory=Computer)(CN=$computer))" $computerObj = [ADSI]$ComputerSearcher. FindOne().Path $computerObj. Put("Description", "$vendor|$Model|$SerialNumber") $computerObj. SetInfo()
Si vous préférez utiliser des cmdlets familières sur votre machine, la cmdlet Set-ADComputer du module Active Directory est beaucoup plus simple, mais elle nécessite l’installation du module (qui fait partie de RSAT).Voici comment procéder :
Set-ADComputer -Identity $computer -Description "$vendor|$Model|$SerialNumber"
Notez simplement que, pour exécuter cette commande, vous devrez probablement utiliser un compte administrateur disposant des autorisations nécessaires pour modifier les objets ordinateur et avoir installé le module PowerShell Active Directory.
Automatiser les mises à jour des descriptions lors de la connexion de l’utilisateur grâce à la stratégie de groupe
Pour que cette action se produise automatiquement à chaque connexion ou au démarrage des machines, vous devez configurer un objet de stratégie de groupe (GPO).C’est très simple : ouvrez gpmc.msc, créez un nouvel objet de stratégie de groupe, affectez-le à votre unité d’organisation cible, puis configurez un script d’ouverture de session sous Configuration utilisateur > Stratégies > Paramètres Windows > Scripts (Ouverture/Fermeture de session). Dans l’onglet Scripts PowerShell, cliquez sur Ajouter et sélectionnez votre fichier de script, par exemple FillCompDesc.ps1. Vous pouvez également ajouter des paramètres comme -ExecutionPolicy Bypass pour éviter de modifier les stratégies d’exécution sur toutes les machines.
Assurez-vous que le script dispose des autorisations nécessaires pour modifier les objets Active Directory. Vous pouvez déléguer l’autorisation « Écriture de la description » sur les objets ordinateur de l’unité d’organisation à un groupe ou un utilisateur spécifique. Ainsi, tous les utilisateurs exécutant le script pourront mettre à jour leurs informations sans impacter les autorisations des autres. Une fois la stratégie de groupe appliquée et les machines redémarrées, le champ « Description » devrait se remplir progressivement avec les informations matérielles, le dernier utilisateur ou toute autre information que vous avez choisi d’y enregistrer. Attention : sans les autorisations appropriées, les utilisateurs pourraient écraser ou supprimer vos informations. C’est une limitation inhérente à Windows.
Ajout des informations de l’utilisateur connecté et du contrôleur de domaine
Supposons que vous souhaitiez que la description affiche également l’utilisateur actuel et le serveur de connexion : l’ajout de ces informations est simple. Il vous suffit de modifier la ligne de script pour inclure les variables d’environnement comme ceci :
$computerObj. Put("Description", "$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")
Déconnectez-vous puis reconnectez-vous, et consultez l’objet ordinateur Active Directory. Il devrait maintenant afficher les informations matérielles, les utilisateurs connectés et le contrôleur de domaine auprès duquel ils se sont authentifiés. Je ne sais pas exactement pourquoi ça fonctionne, mais c’est plutôt pratique, surtout si vous voulez savoir rapidement qui utilise quoi et où.
Pour analyser et utiliser ces informations ultérieurement, vous pouvez récupérer la description et la diviser en variables comme ceci :
$ComputerName = 'PC-MUN22s7b2' ($vendor, $Model, $SerialNumber, $Username, $LogonServer) = ((Get-ADComputer -Identity $ComputerName -Properties description).description).split("|")
Et si vous souhaitez savoir qui est connecté à une machine donnée ou trouver l’utilisateur actuel dans votre environnement, vous pouvez exécuter des commandes comme :
Get-ADComputer -Filter "description -like '*M. Becker*'" -Properties * | Select-Object Name, description | Format-Table
En résumé, c’est une méthode pratique pour conserver les informations de votre machine à jour et visibles là où vous en avez besoin, sans mises à jour manuelles à chaque fois.