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 13:36 de DEROUET Valentin