Créez des rapports d’ordinateurs Active Directory avec PowerShell

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 :

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.

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.

En résumé, nous avons également appris comment transformer une requête cmdlet en une commande plus utile que nous pouvons utiliser pour passer des commandes à distance. Enfin, nous pouvons maintenant générer nos rapports dans plusieurs formats avec toutes ces informations ingérées.

Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/