Skip to content

Scripting Active Directory

Abderrachid BELLAALI edited this page Jan 9, 2023 · 4 revisions

Scripting Active Directory

Créer des scripts pour automatiser des tâches courantes dans Active Directory.

Prérequis

  • Le Domaine Controller (DC) est configuré et fonctionnel (voir Active-Directory)
  • Un poste représentant l'administrateur, soit le CentOS ou Windows

Choix technologique

PowerShell ✅

Scripts réalisés

  1. 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:

  1. Enregistrez le script dans un fichier avec une extension .ps1, comme CreateUsers.ps1.

  2. 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.

  3. Ouvrez une fenêtre PowerShell et accédez au répertoire où le script et le fichier CSV sont enregistrés.

  4. 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
  1. 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."
  }
}
  1. 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."
  }
}
  1. 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."
  }
}

Automatisation

  1. Ouvrez l'outil de planification de tâches en tapant "Planification de tâches" dans la barre de recherche de Windows.

  2. 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".

  3. 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".

  4. Sous la rubrique "Action", sélectionnez "Exécuter un programme" et cliquez sur "Suivant".

  5. 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.

  6. 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.

Comment exécuter les scripts ?

Voir cette page

https://blog.netwrix.com/2018/07/03/how-to-automate-powershell-scripts-with-task-scheduler/

Clone this wiki locally