Voici une liste de commandes et de scripts en PowerShell utiles afin de pouvoir récupérer et exporter des informations depuis votre Active Directory.
One-Liners :
Lancer le Module Active Directory pour Windows PowerShell afin de pouvoir exécuter ces commandes.
#OL01 - Exporter les computers de l'AD dans un fichier .csv
Colonnes récupérées : Name, IPv4Address, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, Description
Get-ADComputer -Filter * -Properties * | Select-Object Name, IPv4Address, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, Description | Export-Csv -Path "C:\Temp\Computers.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL02 - Exporter les Domain Controllers de l'AD dans un fichier .csv
Colonnes récupérées : Name, IPv4Address, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, Description
Get-ADComputer -Filter * -SearchBase "OU=Domain Controllers,DC=adpoc,DC=lan" -Properties * | Select-Object Name, IPv4Address, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, Description | Export-Csv -Path "C:\Temp\Domain_Controllers.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL03 - Exporter les users de l'AD dans un fichier .csv
Colonnes récupérées : SamAccountName, GivenName, Surname, Enabled, LastLogonDate, Description
Get-ADUser -Filter * -Properties * | Select-Object SamAccountName, GivenName, Surname, Enabled, LastLogonDate, Description | Export-Csv -Path "C:\Temp\Users.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL04 - Exporter les groupes de l'AD dans un fichier .csv
Colonnes récupérées : Name, GroupScope, GroupCategory, Description
Get-ADGroup -Filter * -Properties * | Select-Object Name, GroupScope, GroupCategory, Description | Export-Csv -Path "C:\Temp\ADGroups.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL05 - Exporter les membres d'un groupe AD dans un fichier .csv
Colonnes récupérées : Name, SamAccountName
Get-ADGroupMember -Identity "GROUP_NAME" | Select-Object Name, SamAccountName | Export-Csv -Path "C:\Temp\Members.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL06 - Exporter les groupes AD d'appartenance à un user, computer, groupe ou un compte de service dans un fichier .csv
Colonnes récupérées : Name, GroupScope
Get-ADPrincipalGroupMembership -Identity "User1" | Select-Object Name, GroupScope | Export-Csv -Path "C:\Temp\Membership.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL07 - Ajouter des users AD (stockés dans un fichier csv) dans un groupe de sécurité
Import-Csv -Path "C:\Temp\Add-Users.csv" -Delimiter ";" | ForEach-Object { Add-ADGroupMember -Identity $_.GroupName -Members $_.SamAccountName }
Exemple du contenu du fichier Add-Users.csv
avec les logins des comptes et les groupes AD :
SamAccountName;GroupName User1;GroupName1 User2;GroupName2 User3;GroupName3
#OL08 - Supprimer des users AD (stockés dans un fichier csv) d'un groupe de sécurité
Import-Csv -Path "C:\Temp\Remove-Users.csv" -Delimiter ";" | ForEach-Object { Remove-ADGroupMember -Identity $_.GroupName -Members $_.SamAccountName -Confirm:$false }
Exemple du contenu du fichier Remove-Users.csv
avec les logins des comptes et les groupes AD :
SamAccountName;GroupName User1;GroupName1 User2;GroupName2 User3;GroupName3
#OL09 - Décocher l'option "never expires" sur des comptes stockés dans un fichier .csv
Import-Csv -Path "C:\Temp\Users.csv" | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -PasswordNeverExpires $false }
Exemple du contenu du fichier Users.csv
avec les logins des comptes AD :
SamAccountName User1 User2 User3
#OL10 - Exporter les groupes vides de l'AD dans un fichier .csv
Colonnes récupérées : Name, GroupScope, GroupCategory, Description
Get-ADGroup -Filter * -Properties * | Where {-not $_.Members} | Select-Object Name, GroupScope, GroupCategory, Description | Export-Csv -Path "C:\Temp\ADGroups-Empty.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL11 - Exporter les users expirés de l'AD dans un fichier .csv
Colonnes récupérées : Name, SamAccountName, ObjectClass, AccountExpirationDate, LastLogonDate
Search-ADAccount -AccountExpired | Select-Object Name, SamAccountName, ObjectClass, AccountExpirationDate, LastLogonDate | Export-Csv -Path "C:\Temp\ExpiredAccounts.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL12 - Exporter les users désactivés de l'AD dans un fichier .csv
Colonnes récupérées : Name, ObjectClass, SamAccountName
Search-ADAccount -AccountDisabled -UsersOnly | Select-Object Name, ObjectClass, SamAccountName | Export-Csv -Path "C:\Temp\DisabledAccounts.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL13 - Exporter les users inactifs depuis 30 jours de l'AD dans un fichier .csv
Colonnes récupérées : Name, ObjectClass, SamAccountName
Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 30.00:00:00 | Select-Object Name, ObjectClass, SamAccountName | Export-Csv -Path "C:\Temp\InactiveAccounts.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL14 - Exporter les users de l'AD qui ont un mot de passe qui n'expire jamais dans un fichier .csv
Colonnes récupérées : Name, ObjectClass, SamAccountName
Search-ADAccount -PasswordNeverExpires | Select-Object Name, ObjectClass, SamAccountName | Export-Csv -Path "C:\Temp\PasswordNeverExpiresAccounts.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
#OL15 - Créer des comptes (stockés dans un fichier csv) sur l'AD
Import-Csv -Path "C:\Temp\Add-Accounts.csv" -Delimiter ";" | ForEach-Object { New-ADUser $_.SamAccountName -GivenName $_.SamAccountName -displayName $_.SamAccountName -Description $_.AccountDescription -UserPrincipalName $_.SamAccountName -AccountPassword (ConvertTo-SecureString $_.AccountPassword -AsPlainText -Force) -CannotChangePassword $true -ChangePasswordAtLogon $false -PasswordNeverExpires $true -Enabled $true -Path $_.AccountOU -OtherAttributes @{businessCategory=$_.AccountBusinessCategory} }
Exemple du contenu du fichier Add-Accounts.csv
avec les informations des comptes AD :
SamAccountName;AccountPassword;AccountDescription;AccountBusinessCategory;AccountOU svct_App01;Pa$$w0rD;Service account TEST;TEST;"OU=Service Accounts,DC=lab,DC=microsoft,DC=com" svcr_App01;Pa$$w0rD;Service account REC;REC;"OU=Service Accounts,DC=lab,DC=microsoft,DC=com" svcp_App01;Pa$$w0rD;Service account PROD;PROD;"OU=Service Accounts,DC=lab,DC=microsoft,DC=com"
#OL16 - Désactiver des comptes (stockés dans un fichier csv) sur l'AD
Import-Csv -Path "C:\Temp\Disable-Accounts.csv" | ForEach-Object { Disable-ADAccount -Identity $_.SamAccountName }
Exemple du contenu du fichier Disable-Accounts.csv
avec les logins des comptes AD :
SamAccountName User1 User2 User3
#OL17 - Réactiver des comptes (stockés dans un fichier csv) sur l'AD
Import-Csv -Path "C:\Temp\Enable-Accounts.csv" | ForEach-Object { Enable-ADAccount -Identity $_.SamAccountName }
Exemple du contenu du fichier Enable-Accounts.csv
avec les logins des comptes AD :
SamAccountName User1 User2 User3
#OL18 - Créer des groupes (stockés dans un fichier csv) sur l'AD
Import-Csv -Path "C:\Temp\Add-Groups.csv" -Delimiter ";" | ForEach-Object { New-ADGroup -Name $_.GroupName -GroupScope $_.GroupScope -Description $_.GroupDescription -Path $_.GroupOU }
Exemple du contenu du fichier Add-Groups.csv
avec les informations des groupes AD :
GroupName;GroupScope;GroupDescription;GroupOU GroupName1;DomainLocal;GroupDescription1;"OU=Groupes,DC=lab,DC=microsoft,DC=com" GroupName2;Global;GroupDescription2;"OU=Groupes,DC=lab,DC=microsoft,DC=com" GroupName3;Universal;GroupDescription3;"OU=Groupes,DC=lab,DC=microsoft,DC=com"