wiki:windows:scripting:adpowershell
**Ceci est une ancienne révision du document !**
Gérer un AD avec du powershell
Cette petite fiche concerne la gestion d'un AD avec Powershell.
Vérifier un fichier .CSV
- snippet.powershell
Import-Csv C:\Users\Administrateur\Desktop\Scripts\utilisateurs.csv ";" | Format-Table
Créer des OU et des sous OU
Exemple de fichier .CSV :
Le script de création des OU :
- snippet.powershell
Import-Module activedirectory
$ADOU = Import-csv 'C:\Users\Administrateur\Desktop\Scripts\ou.csv'
foreach ($ou in $ADou) {
$name = $ou.name
$path = $ou.path
New-ADOrganizationalUnit `
-Name $name `
-path $path `
write-Host "OU créée." -ForegroundColor Cyan
}
Lister les utilisateurs existant dans une OU
- snippet.powershell
Get-ADUser -Filter * -SearchBase "OU=Utilisateurs,OU=Megaproduction,DC=dom,DC=megaprod,DC=lan" `
-Properties Name,GivenName,Surname,EmailAddress,Title | `
Select-Object Name,GivenName,Surname,EmailAddress,Title | Ft
Création d'utilisateurs à partir d'un .CSV
Exemple de fichier .CSV :
Le script de création utilisateurs :
- snippet.powershell
Import-Module ActiveDirectory
$ADUsers = Import-Csv C:\Users\Administrateur\Desktop\Scripts\utilisateurs.csv
$UPN = "dom.megaprod.lan"
foreach ($User in $ADUsers) {
$username = $User.username
$password = $User.password
$firstname = $User.firstname
$lastname = $User.lastname
$initials = $User.initials
$OU = $User.ou
$email = $User.email
$streetaddress = $User.streetaddress
$city = $User.city
$zipcode = $User.zipcode
$state = $User.state
$country = $User.country
$telephone = $User.telephone
$jobtitle = $User.jobtitle
$company = $User.company
$department = $User.department
if (Get-ADUser -F { SamAccountName -eq $username }) {
Write-Warning "Compte utilisateur déjà existant."
}
else {
New-ADUser `
-SamAccountName $username `
-UserPrincipalName "$username@$UPN" `
-Name "$firstname $lastname" `
-GivenName $firstname `
-Surname $lastname `
-Initials $initials `
-Enabled $True `
-DisplayName "$lastname, $firstname" `
-Path $OU `
-City $city `
-PostalCode $zipcode `
-Country $country `
-Company $company `
-State $state `
-StreetAddress $streetaddress `
-OfficePhone $telephone `
-EmailAddress $email `
-Title $jobtitle `
-Department $department `
-AccountPassword (ConvertTo-secureString $password -AsPlainText -Force) -ChangePasswordAtLogon $True
Write-Host "Utilisateur créé." -ForegroundColor Cyan
}
}
Read-Host -Prompt "Appuyer sur ENTRER pour terminer."
Création des groupes
Exemple de fichier .CSV :
Le script de création des groupes :
- snippet.powershell
Import-Module ActiveDirectory
$groups = Import-Csv ‘C:\Users\Administrateur\Desktop\Scripts\groupes.csv‘
foreach ($group in $groups) {
$groupProps = @{
Name = $group.name
Path = $group.path
GroupScope = $group.scope
GroupCategory = $group.category
Description = $group.description
}
New-ADGroup @groupProps
Write-Host "Groupe créé." -ForegroundColor Cyan
}
Read-Host -Prompt "Appuyer sur ENTRER pour terminer."
Définir les permissions
Ajouter un utilisateur dans un groupe
Exemple de fichier .CSV :
Le script d'ajout d'utilisateurs dans des groupes :
- snippet.powershell
Import-Module ActiveDirectory
$List = Import-Csv "C:\Users\Administrateur\Desktop\Scripts\utilisateurs_groups.csv"
foreach ($User in $List) {
$UserSam = $User.SamAccountName
$Groups = $User.Group
$ADUser = Get-ADUser -Filter "SamAccountName -eq '$UserSam'" | Select-Object SamAccountName
$ADGroups = Get-ADGroup -Filter * | Select-Object DistinguishedName, SamAccountName
if ($ADUser -eq $null) {
Write-Host "$UserSam utilisateur non existant." -ForegroundColor Red
Continue
}
if ($Groups -eq $null) {
Write-Host "$UserSam aucun groupe spécifié pour cet utilisateur." -ForegroundColor Yellow
Continue
}
$ExistingGroups = Get-ADPrincipalGroupMembership $UserSam | Select-Object DistinguishedName, SamAccountName
foreach ($Group in $Groups.Split(';')) {
if ($ADGroups.SamAccountName -notcontains $Group) {
Write-Host "$Le groupe n'existe pas." -ForegroundColor Red
Continue
}
if ($ExistingGroups.SamAccountName -eq $Group) {
Write-Host "$UserSam existe déjà dans le groupe $Group" -ForeGroundColor Yellow
}
else {
Add-ADGroupMember -Identity $Group -Members $UserSam
Write-Host "L'utilisateur $UserSam a été ajouté dans le groupe $Group" -ForeGroundColor Green
}
}
}
Mes sources
-
Les documentations de Marc-Henri Pamiseux, professeur à l'école IIA
wiki/windows/scripting/adpowershell.1668778600.txt.gz · Dernière modification : 2022/11/18 14:36 de DEROUET Valentin