Comment créer, supprimer, renommer, désactiver et associer des ordinateurs dans AD à l’aide de PowerShell

Avant qu’un utilisateur puisse se connecter à un ordinateur et accéder à un réseau et à des ressources basées sur le domaine, cet ordinateur doit être membre de l’environnement Active Directory. Dans ce guide, vous découvrirez comment automatiser les tâches quotidiennes liées aux comptes informatiques, par exemple comment créer, renommer et supprimer facilement des comptes. Dans l’ensemble, vous apprendrez comment utiliser PowerShell pour effectuer les tâches suivantes de gestion de compte d’ordinateur :

PowerShell ISE est le meilleur outil pour travailler avec les scripts PowerShell. Lancez l’outil PowerShell ISE avec les privilèges d’administrateur en appuyant sur « Windows+R » et en entrant « runas /profile /user:Administrator PowerShell_ISE » dans la fenêtre Run. (Vous pouvez également cliquer avec le bouton droit de la souris sur l’icône PowerShell ISE et choisir l’option « Exécuter en tant qu’administrateur »). Saisissez le mot de passe de l’administrateur lorsque vous y êtes invité.

Avant de pouvoir travailler avec AD et ses objets, vous devez importer le module Active Directory pour Windows PowerShell. Dans Microsoft Windows Server 2008 R2, vous devez activer ce module en exécutant la commande suivante :

Import-Module ActiveDirectory

Dans Microsoft Windows Server 2012 et ultérieurs, ce module est activé par défaut.

Associer un ordinateur à un domaine

La tâche la plus courante est de connecter un ordinateur à un contrôleur de domaine. Pour connecter un PC à un domaine Active Directory, exécutez le script PowerShell suivant en local :

$dc = "ENTERPRISE" # Specify the domain to join.
$pw = "Password123" | ConvertTo-SecureString -asPlainText –Force # Specify the password for the domain admin.
$usr = "$dc\T.Simpson" # Specify the domain admin account.
$creds = New-Object System.Management.Automation.PSCredential($usr,$pw)
Add-Computer -DomainName $dc -Credential $creds -restart -force -verbose # Note that the computer will be restarted automatically.

Notez que l’ordinateur sera redémarré automatiquement.

L’ordinateur redémarre et rejoint le domaine ; il sera ajouté au conteneur par défaut.

Pour connecter à distance un ordinateur à un DC, vous devez compléter ce script de la manière suivante :

$dc = "ENTERPRISE"
$pw = "Password123" | ConvertTo-SecureString -asPlainText -Force
$usr = "$dc\T.Simpson"
$pc = "R07GF" # Specify the computer that should be joined to the domain.
$creds = New-Object System.Management.Automation.PSCredential($usr,$pw)
Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Verbose -Restart -Force

La variable $pc et le paramètre -LocalCredential sont utilisés pour authentifier l’ordinateur au domaine. Notez que pour utiliser cette méthode, vous devez désactiver le pare-feu sur l’ordinateur local.

Associer plusieurs ordinateurs à un domaine

Vous pouvez ajouter plus d’un ordinateur au domaine en les spécifiant dans la ligne de commande, sous la forme d’une liste délimitée par des virgules, ou en important leurs noms à partir d’un fichier texte.

Voici comment préciser les ordinateurs dans une liste délimitée par des virgules :

$dc = "ENTERPRISE"
$pw = "Password123" | ConvertTo-SecureString -asPlainText -Force
$usr = "$dc\T.Simpson"
$pc = "WKS034, WKS052, WKS057" # Specify the computers that should be joined to the domain.
$creds = New-Object System.Management.Automation.PSCredential($usr$pw)
Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Restart -Force

Et voici comment utiliser un fichier texte contenant la liste des ordinateurs à associer :

$dc = "ENTERPRISE"
$pw = "Password123" | ConvertTo-SecureString -asPlainText -Force
$usr = "$dc\T.Simpson"
$pc = Get-Content -Path C:\Computers.txt # Specify the path to the computers list.
$creds = New-Object System.Management.Automation.PSCredential($usr,$pw)
Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Restart -Force

Supprimer un ordinateur d’un domaine avec PowerShell

Pour supprimer un ordinateur d’un domaine à distance, utilisez le  cmdlet Remove-Computer. Ici, nous supprimons un ordinateur d’un domaine, donc aucune information d’identification locale n’est nécessaire et le paramètre ?LocalCredential n’est pas nécessaire.

$dc = "ENTERPRISE"
$pw = "Password123" | ConvertTo-SecureString -asPlainText -Force
$usr = "$dc\T.Simpson"
$pc = "R07GF"
$creds = New-Object System.Management.Automation.PSCredential($usr,$pw)
Remove-Computer -ComputerName $pc -Credential $creds –Verbose –Restart –Force

Pour supprimer plusieurs ordinateurs à l’aide d’une liste dans un fichier TXT, utilisez le script ci-dessus pour joindre des ordinateurs à un DC, en remplaçant le cmdlet Add-Computer par Remove-Computer. Notez que vous aurez toujours besoin des informations d’identification de l’administrateur du domaine pour terminer cette opération de déconnexion.

Créer un objet ordinateur dans AD

Pour créer un objet ordinateur, utilisez le cmdlet New-ADComputer. Par exemple, exécutez les paramètres cmdlet suivants pour créer un objet ordinateur dont le nom est « WKS932 » et la valeur par défaut du chemin LDAP :

New-ADComputer –Name “WKS932” –SamAccountName “WKS932”

Créer des comptes d’ordinateurs à partir d’un fichier CSV

Si vous avez une liste d’ordinateurs qui doivent être importés dans Active Directory, enregistrez la liste dans un fichier CSV avec la rubrique « ordinateur », et la liste des noms d’ordinateurs dans la colonne en dessous. Exécutez le script PowerShell suivant sur votre contrôleur de domaine, pour ajouter des ordinateurs à partir du fichier CSV, en vous assurant que vous avez correctement défini les variables  » Path  » et  » File  » :

$File="C:\scripts\Computers.csv" # Specify the import CSV position.
$Path="OU=Devices,DC=enterprise,DC=com" # Specify the path to the OU.
Import-Csv -Path $File | ForEach-Object { New-ADComputer -Name $_.Computer -Path $Path -Enabled $True}

Supprimer un ordinateur de AD

Pour supprimer un compte d’ordinateur d’AD, utilisez le cmdlet Remove-ADObject. Le paramètre -Identité spécifie quel ordinateur Active Directory doit être supprimé. Vous pouvez spécifier un ordinateur par son nom distinctif, son GUID, son identificateur de sécurité (SID) ou le nom de compte du gestionnaire de comptes de sécurité (SAM).

Remove-ADObject -Identity "WKS932"

Vous serez invité à confirmer la suppression.

Supprimer des comptes d’ordinateur à l’aide d’une liste

Si vous avez un fichier texte avec une liste d’anciens ordinateurs, vous pouvez rationaliser la tâche de les supprimer à l’aide de PowerShell. Le script suivant lira les noms d’ordinateur à partir d’un fichier TXT et supprimera les comptes correspondants via une chaîne de commandes, ou pipeline :

Get-Content C:\scripts\computersfordeletion.txt | % { Get-ADComputer -Filter { Name -eq $_ } } | Remove-ADObject -Recursive

Supprimer d’Active Directory les comptes d’ordinateurs périmés avec PowerShell

Les comptes périmés dans Active Directory peuvent avoir été compromis, ce qui conduit à des incidents de sécurité, il est donc essentiel de les surveiller. Ce script PowerShell va interroger Active Directory, et afficher tous les ordinateurs qui n’ont pas été connectés depuis 30 jours ; vous pouvez facilement changer cette valeur par défaut dans le script. Il supprimera également ces comptes pour garder votre AD propre.

$stale = (Get-Date).AddDays(-30) # means 30 days since last logon, can be changed to any number.

Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $stale} | FT Name,lastLogonDate

Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $stale} | Remove-ADComputer

Il y a un ordinateur, FS1, qui n’a pas été connecté depuis plus de 30 jours. Le système vous demandera une confirmation avant de le supprimer du domaine :

Si vous voulez désactiver, plutôt que de supprimer, les comptes inactifs de l’ordinateur, remplacez le cmdlet Remove-ADComputer par le paramètre et la valeur Set-ADComputer and -Enabled $false.

Renommer un ordinateur

Pour changer le nom d’un ordinateur, utilisez le cmdlet Rename-Computer. Notez que l’ordinateur doit être en ligne et connecté à Active Directory.

Rename-Computer –ComputerName "FS1" -NewName "FS2"

Si vous voulez exécuter ce script localement, il ressemblera à ça :

Rename-Computer -NewName "newname" -DomainCredential "Domain\Administrator"

Renommer un ordinateur et l’associer à un domaine

Vous pouvez améliorer le script de changement de nom en associant l’ordinateur au domaine, et en le plaçant simultanément dans l’OU spécifié. Le script doit être exécuté sur la machine cible et non sur le contrôleur de domaine.

$NewComputerName = "Server3" # Specify the new computer name.

$DC = "contoso.com" # Specify the domain to join.

$Path = "OU=TestOU,DC=contoso,DC=com" # Specify the path to the OU where to put the computer account in the domain.
Add-Computer -DomainName $DC -OUPath $Path -NewName $NewComputerName –Restart –Force

Le script vous demandera les informations d’identification d’un compte qui a les autorisations d’associer des ordinateurs au domaine, puis l’ordinateur sera renommé, redémarré et associé au domaine.

Désactiver un compte d’ordinateur AD

Utilisez le cmdlet Disable-ADAccount pour désactiver les comptes d’utilisateur, d’ordinateur et de service Active Directory. Si vous spécifiez un nom de compte d’ordinateur, n’oubliez pas d’ajouter un signe dollar ($) à la fin du nom ; sinon, vous obtiendrez une erreur après l’exécution du script.

Disable-ADAccount -Identity fs1$

Désactiver des comptes d’ordinateur à l’aide d’une liste

Vous pouvez également désactiver des comptes d’ordinateurs ensemble à l’aide d’une liste dans un fichier texte :

$Pclist = Get-Content C:\scripts\Computer.txt # Specify the path to the computers list.
Foreach($pc in $Pclist)
{
Disable-ADAccount -Identity "$pc"
Get-ADComputer -Identity "$pc" | Move-ADObject -TargetPath “OU=Disabled Computers,DC=enterprise,DC=com”
}

Réinitialiser un compte d’ordinateur AD

De la même manière qu’un compte d’utilisateur, un compte d’ordinateur interagit avec Active Directory en utilisant un mot de passe. Mais pour les comptes d’ordinateur, un changement de mot de passe est initié tous les 30 jours par défaut et le mot de passe ne suit pas la politique de mot de passe du domaine. Les changements de mot de passe sont pilotés par le client (ordinateur) et non par AD.

Les identifiants d’ordinateurs ne sont pas normalement connus de l’utilisateur parce qu’ils sont définis par l’ordinateur de façon aléatoire. Mais vous pouvez définir votre propre mot de passe ; voici un script PowerShell pour le faire :

$pc = read-host –Prompt “Input computer name to reset“ # Specify the computer name.
$pw = read-host –Prompt “Input random characters for temp password“ –AsSecureString # Specify the password.
Get-ADComputer $pc | Set-ADAccountPassword –NewPassword:$pw -Reset:$true

Conclusion

Maintenant vous savez comment gérer les comptes d’ordinateurs Active Directory avec PowerShell. Vous pouvez améliorer tous ces scripts par vous-même pour les adapter à vos besoins.

Rappelez-vous qu’il est essentiel de suivre de près tous les changements apportés aux comptes d’ordinateurs, afin de pouvoir repérer rapidement toute modification non désirée et réagir de façon appropriée. Voici quelques articles qui pourraient vous aider :

Audit des modifications importantes de l\'Active Directory