Créez des rapports d’ordinateurs Active Directory avec PowerShell. Pour trouver quoi que ce soit concernant les objets informatiques du répertoire actif (AD) et leurs propriétés, nous utiliserons principalement la cmdlet Get-ADComputer. Par exemple, dans un domaine Active Directory, nous pouvons utiliser la cmdlet Get-ADComputer PowerShell cmdlet pour obtenir des informations sur les objets de compte d’ordinateur (serveurs et postes de travail). Cette cmdlet est l’une des plus utiles pour rechercher les ordinateurs AD selon divers critères.
Cet article discute des nombreuses utilisations de la cmdlet Get-ADComputer et comment nous pouvons la transformer en un rapport complet et précieux.
Commençons avec l’article blog Créer des rapports d’ordinateurs Active Directory avec PowerShell.
Créer des rapports d’ordinateurs Active Directory avec Powershell
Prérequis
Si vous souhaitez suivre les scripts d’exemple dans cet article, veuillez vous assurer de disposer des éléments suivants :
- Un environnement AD avec au moins un poste de travail rejoint au domaine.
- Niveau fonctionnel de domaine – Windows Server 2016.
- Outils d’administration de serveur distant (RSAT) pour Active Directory installés sur votre poste de travail rejoint au domaine.
- La dernière versionPowerShell ou, du moins,PowerShell 7.x et ultérieure est requise pour exécuter les scripts.
Bien, comment créer des rapports de postes de Directory Active avec PowerShell ? Allons-y voir.
Comprendre la commande PowerShell Get-ADComputer
Avant de commencer, nous devrions nous familiariser avec la commande Get-ADComputer. Nous n’avons pas besoin de privilèges d’administrateur de domaine pour obtenir des informations à partir de Active Directory. L’utilisation d’un compte utilisateur régulier membre du groupe Domain Users ou Authenticated Users est suffisante.
Eh bien, la commande Get-Help, comme d’habitude, fournit une liste de tous les autres paramètres pour la cmdlet Get-ADComputer:
$command = Get-ADComputer
Get-Help $command
Exemple de sortie :
Alternativement, nous pouvons accéder à la documentation officielle de la commande Get-ADComputer ici.
Après avoir parcouru la longue liste de paramètres dans notre ligne de commande et la documentation, nous pouvons commencer à écrire des scripts. N’oubliez pas, le paramètre le plus crucial qui accompagne la commande Get-ADComputer est le paramètre Identity.
Pour obtenir des informations sur un compte informatique spécifique dans le domaine, utilisez le paramètre -Identity avec son nom comme argument:
Get-ADComputer -Identity DC01
Voici un exemple de sortie:
DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName : DC01.infrasos.com
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 87654321-1204-5578-0000-123462341264
SamAccountName : DC01
SID : S-1-5-21-123656780-1234667890-0986654321-1264
En conséquence, le cmdlet Get-ADComputer a renvoyé uniquement les propriétés fondamentales de l’objet Ordinateur depuis AD. Cependant, l’exécution de la commande ci-dessus ne fournit que les informations de premier niveau sur l’objet ordinateur. Ensuite, si nous voulons plonger plus profondément et afficher les propriétés disponibles de l’objet, nous pouvons utiliser le paramètre -Properties.
Pour lister toutes les propriétés de l’objet, ajoutez le paramètre -Properties et ajoutez une valeur d’astérisque (*). La valeur astérisque est la valeur générique qui indique TOUT:
Get-ADComputer -Identity DC01 -Properties *
Exemple de sortie:
D’autre part, nous pouvons naviguer à l’intérieur de la console Utilisateurs et ordinateurs Active Directory (ou dsa.msc) et voir les propriétés à partir de là. Enfin, sélectionnez un objet ordinateur et naviguez jusqu’à l’onglet Éditeur d’attributs pour voir la liste des propriétés de l’objet ordinateur.
Filtrer les résultats de Get-ADComputer
Un inconvénient est que nous pourrions afficher plus d’informations sur des choses dont nous n’avons pas nécessairement besoin. En utilisant le pipeline PowerShell, la commande Get-ADComputer nous permet d’afficher des propriétés spécifiques de l’ordinateur dans la ligne de commande. Par exemple, nous pouvons ne laisser que les valeurs des propriétés Name et LastLogonDate dans la sortie en envoyant la commande Format-Table en tant que sortie principale :
Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize
Résultat d’exemple :
Ici, PowerShell de Windows calcule les largeurs de colonne en fonction des données réelles affichées si nous spécifions le paramètre AutoSize lorsque nous exécutons la commande Format-Table. Dans l’ensemble, ce paramètre rend les colonnes lisibles.
Toutefois, la commande précédente ne recherche qu’un seul objet de ordinateur AD. Par conséquent, si nous voulions des informations sur tous les ordinateurs du domaine, nous pouvons remplacer le paramètre Identity par Filter:
Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize
Voir la sortie d’exemple:
Nous avons obtenu un tableau formaté simple contenant uniquement deux champs : le nom de l’ordinateur et la date de création de l’objet. Nous pouvons ajouter d’autres colonnes de l’objet Ordinateur AD à ce tableau en ajoutant des propriétés dans la section Format-Table du pipeline.
Fondamentalement, pour récupérer des informations sur les objets d’ordinateur dans un Organizational Unit (OU) particulier, nous pouvons utiliser le paramètre –SearchBase :
Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize
De plus, nous pouvons également trier les résultats de la requête en insérant le Sort-Object cmdlet dans le pipeline:
Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize
Dans la commande précédente ci-dessus, la commande Sort-Object trie les résultats de la commande Get-ADComputer d’abord par Created puis les transmet à Format-Table pour affichage.
Utilisation de filtres de recherche avec Get-ADComputer
Nous utilisons l’argument Get-ADComputer du cmdlet -Filter pour rechercher plusieurs AD ordinateurs en fonction de critères spécifiques. Comme indiqué, nous pouvons utiliser des jokers et des opérateurs de comparaison logique dans ce cas. Bien entendu, en tant que filtres, nous ne pouvons utiliser que les attributs principaux de l’objet ordinateur.
De même, nous utilisons le pipeline Where-Object si nous devons appliquer des filtres de recherche sur des attributs d’ordinateur étendus. Les exemples suivants illustrent de manière plus pratique comment interroger et rechercher des objets d’ordinateur dans le domaine à l’aide duGet-ADComputercmdlet.
Obtenir le nombre total de tous les ordinateurs actifs et non bloqués dans Active Directory :
Nous recherchons des ordinateurs en utilisant plusieurs filtres en même temps. Utilisez les opérateurs de comparaison logique PowerShell pour réaliser cela.
(Get-ADComputer -Filter {Enabled -eq "true"}).Count
Afficher tous les hôtes Windows Server dans le domaine AD :
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }
Obtenir une liste de tous les ordinateurs dans un OU spécifique dont les noms commencent par DC :
Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name
Lorsque nous recherchons dans l’OU, nous pouvons utiliser le paramètre –SearchScope1 pour limiter notre recherche au niveau de la racine OU uniquement. L’option -SearchScope2 effectue une recherche récursive pour les ordinateurs dans toutes les OUs.
Gérer plusieurs ordinateurs avec Get-ADComputer
Nous devons utiliser la boucle Foreach-Object pour effectuer une action spécifique sur tous les ordinateurs de la liste résultante.Dans cet exemple, nous pouvons interroger plusieurs ordinateurs AD à distance en utilisant Windows Management Instrumentation ou Common Information Classes:
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
Select-Object PSComputerName
}
De toute évidence, dans cet exemple, si nous voulons obtenir une liste des hôtes de serveur Windows dans le domaine, ainsi que leur modèle et leur fabricant, nous utilisons la même méthode de boucle et récupérons les propriétés de l’ordinateur.
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers){
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Output "Name: $Hostname"
Write-Output "Manufacturer: $Manufacturer"
Write-Output "Model: $Model"
Write-Output " "
}
Donc, les informations récupérées à partir des exemples ci-dessus sont facilement accessibles via les services de domaine puisque ces ordinateurs font partie de l’AD. Cependant, toutes les machines n’ont pas leurs propriétés diffusées sur le domaine. Comment pouvons-nous les récupérer?
Ensuite, nous utilisons la Invoke-Command. Ainsi, cette commande PowerShell exécute des commandes locales sur l’ordinateur distant. Par exemple, supposons que nous devions exécuter une commande spécifique sur tous les ordinateurs d’un OU particulier. Dans cet exemple, utilisons Invoke-Command pour exécuter une commande de stratégie de groupe d’actualisation sur tous les serveurs:
Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }
Générer des rapports PowerShell AD avec Get-ADComputer
Dans Windows PowerShell, nous exportons la sortie de nos commandes dans plusieurs formats de rapport. Voici quelques exemples ci-dessous.
Tout d’abord, nous exportons le résultat de la commande Get-ADComputer dans un fichier texte :
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt
Deuxièmement, nous obtenons également une liste de tous les ordinateurs et l’exportons vers un fichier séparé par des virgules(CSV) :
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation
Troisièmement, nous pouvons également exporter notre rapport et obtenir un format de page Web HTML avec une liste de tous les ordinateurs et des propriétés essentielles :
Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html
Cela devrait ressembler à quelque chose comme ceci :
Merci de lire Créer des rapports d’ordinateurs Active Directory avec PowerShell. Nous conclurons.
Lire également Déployer la surveillance Azure AD
Conclusion des rapports d’ordinateurs Active Directory créés avec Powershell
Dans cet article, nous avons abordé en profondeur la commande Get-ADComputer. Nous avons appris qu’avec cette commande, nous pouvions obtenir une liste détaillée des propriétés et des informations pour une machine spécifique. De plus, avec une liste exhaustive, nous avons appris comment filtrer ces propriétés uniquement pour récupérer uniquement les informations dont nous avons besoin.
Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/