-
Notifications
You must be signed in to change notification settings - Fork 0
Scripting Active Directory
Créer des scripts pour automatiser des tâches courantes dans Active Directory.
- Le Domaine Controller (DC) est configuré et fonctionnel (voir Active-Directory)
- Un poste représentant l'administrateur, soit le CentOS ou Windows
PowerShell ✅
- Créé automatiquement des comptes d'utilisateurs Active Directory en utilisant un fichier CSV dont nous avons défini et documenté la structure.
Script ajouter des utilisateurs
# Import the ActiveDirectory module
Import-Module -Name ActiveDirectory
# Read the user data from the CSV file
$users = Import-Csv -Path $args[0]
# Loop through each user in the CSV file
foreach ($user in $users) {
# Read the user data and store it in variables
$username = $user.userName
$password = $user.password
$firstName = $user.firstName
$lastName = $user.lastName
$ou = $user.ou
# Check if the user already exists in the Active Directory
$existingUser = Get-ADUser -Filter { SamAccountName -eq $username } -ErrorAction SilentlyContinue
if ($existingUser) {
Write-Warning "A user account with username $username already exists in Active Directory."
}
else {
# Create the new user
New-ADUser `
-SamAccountName $username `
-UserPrincipalName "$username@<domain>" `
-Name "$firstName $lastName" `
-GivenName $firstName `
-Surname $lastName `
-Enabled $true `
-DisplayName "$lastName, $firstName" `
-Path $ou `
-AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) `
-ChangePasswordAtLogon $false `
-PasswordNeverExpire $true
}
}Pour utiliser le script, vous pouvez suivre ces étapes:
-
Enregistrez le script dans un fichier avec une extension .ps1, comme CreateUsers.ps1.
-
Préparez un fichier CSV avec les données d'utilisateur que vous voulez utiliser pour créer les utilisateurs. Le fichier CSV doit avoir une ligne d'en-tête avec les colonnes suivantes: userName, password, firstName, lastName et ou. Chaque ligne suivante doit contenir les données d'un seul utilisateur.
-
Ouvrez une fenêtre PowerShell et accédez au répertoire où le script et le fichier CSV sont enregistrés.
-
Exécutez le script en entrant la commande suivante:
.\CreateUsers.ps1 <chemin du fichier CSV>, où<chemin du fichier CSV>est le chemin du fichier CSV que vous avez préparé à l'étape 2.
Par exemple, si le script est enregistré dans le répertoire actuel et que le fichier CSV est situé dans C:\Users\Admin\UserData.csv, vous devriez exécuter la commande suivante:
.\CreateUsers.ps1 C:\Users\Admin\UserData.csv- Désactivez automatiquement des comptes d'utilisateurs AD en utilisant un fichier CSV dont nous avons défini et documenté la structure.
Script désactiver des utilisateurs
# Import the ActiveDirectory module
Import-Module -Name ActiveDirectory
# Read the user data from the CSV file
$users = Import-Csv -Path $args[0]
# Loop through each user in the CSV file
foreach ($user in $users) {
# Read the user data and store it in variables
$username = $user.userName
# Check if the user already exists in the Active Directory
$existingUser = Get-ADUser -Filter { SamAccountName -eq $username } -ErrorAction SilentlyContinue
if ($existingUser) {
# Disable the user
Set-ADUser -Identity $username -Enabled $false
}
else {
Write-Warning "A user account with username $username does not exist in Active Directory."
}
}- Facilitez le déblocage du compte d'un utilisateur ayant dépassé le nombre de tentatives de connexion incorrectes.
Script débloquer un utilisateur
# Import the ActiveDirectory module
Import-Module -Name ActiveDirectory
# Read the user data from the CSV file
$users = Import-Csv -Path $args[0]
# Loop through each user in the CSV file
foreach ($user in $users) {
# Read the user data and store it in variables
$username = $user.userName
# Check if the user already exists in the Active Directory
$existingUser = Get-ADUser -Filter { SamAccountName -eq $username } -ErrorAction SilentlyContinue
if ($existingUser) {
# Unlock the user
Unlock-ADAccount -Identity $username
}
else {
Write-Warning "A user account with username $username does not exist in Active Directory."
}
}- Modifiez automatiquement les informations sur les comptes d'utilisateur en utilisant un fichier CSV dont nous avons défini et documenté la structure.
Script modifier des utilisateurs
Import-Module -Name ActiveDirectory
$users = Import-Csv -Path $args[0]
foreach ($user in $users) {
$username = $user.userName
$password = $user.password
$firstName = $user.firstName
$lastName = $user.lastName
$ou = $user.ou
$existingUser = Get-ADUser -Filter { SamAccountName -eq $username } -ErrorAction SilentlyContinue
if ($existingUser) {
Set-ADUser `
-Identity $username `
-UserPrincipalName "$username@<domain>" `
-Name "$firstName $lastName" `
-GivenName $firstName `
-Surname $lastName `
-Enabled $true `
-DisplayName "$lastName, $firstName" `
-Path $ou `
-AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) `
-ChangePasswordAtLogon $false `
-PasswordNeverExpire $true
}
else {
Write-Warning "A user account with username $username does not exist in Active Directory."
}
}-
Ouvrez l'outil de planification de tâches en tapant "Planification de tâches" dans la barre de recherche de Windows.
-
Cliquez sur "Action" dans le menu principal, puis sélectionnez "Créer une tâche". Donnez un nom à la tâche et sélectionnez l'option "Exécuter avec les privilèges les plus élevés". Cliquez sur "Suivant".
-
Sous la rubrique "Déclencheur", cliquez sur "Nouveau" et définissez la fréquence à laquelle vous souhaitez que la tâche soit exécutée (toutes les heures dans ce cas). Cliquez sur "Suivant".
-
Sous la rubrique "Action", sélectionnez "Exécuter un programme" et cliquez sur "Suivant".
-
Dans la zone "Programme/script", entrez le chemin d'accès au script PowerShell. Dans la zone "Arguments", entrez le chemin d'accès au fichier CSV contenant les données d'utilisateur.
-
Cliquez sur "Suivant". Vérifiez les paramètres de la tâche et cliquez sur "Terminer" pour enregistrer la tâche. La tâche sera maintenant exécutée automatiquement toutes les heures, en récupérant le CSV à l'emplacement spécifié et en créant les utilisateurs définis dans le CSV.
https://blog.netwrix.com/2018/07/03/how-to-automate-powershell-scripts-with-task-scheduler/