fixed csv layout for OUs
This commit is contained in:
@@ -6,38 +6,57 @@
|
||||
.NOTES
|
||||
Requires RSAT / ActiveDirectory module.
|
||||
#>
|
||||
Import-Module ActiveDirectory
|
||||
|
||||
# Path to CSV file
|
||||
$csvPath = ".\users.csv"
|
||||
|
||||
# Import from CSV
|
||||
$users = Import-Csv -Path $csvPath
|
||||
|
||||
$base = "DC=company,DC=local"
|
||||
# Path to CSV file
|
||||
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$csvPath = Join-Path $scriptPath "users.csv"
|
||||
|
||||
$ous = @(
|
||||
"OU=Employees,$base",
|
||||
"OU=Directie,OU=Employees,$base",
|
||||
"OU=HR,OU=Employees,$base",
|
||||
"OU=BeheerOntwikkeling,OU=Employees,$base",
|
||||
"OU=Duitsland,OU=Employees,$base",
|
||||
"OU=Benelux,OU=Employees,$base",
|
||||
"OU=ZuidEuropa,OU=Employees,$base",
|
||||
"OU=SalesMarketing,OU=Employees,$base",
|
||||
"OU=Operations,OU=Employees,$base",
|
||||
"OU=FoodBeverages,OU=Employees,$base",
|
||||
"OU=Hospitality,OU=Employees,$base",
|
||||
"OU=ICT,OU=Employees,$base",
|
||||
"OU=Finance,OU=Employees,$base"
|
||||
)
|
||||
# Try to import Active Directory module
|
||||
try {
|
||||
Import-Module ActiveDirectory -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Error "Failed to import Active Directory module. Please ensure RSAT tools are installed and you have administrative privileges."
|
||||
Write-Error "Error: $_"
|
||||
exit 1
|
||||
}
|
||||
|
||||
foreach ($ou in $ous) {
|
||||
if (-not (Get-ADOrganizationalUnit -LDAPFilter "(distinguishedName=$ou)" -ErrorAction SilentlyContinue)) {
|
||||
New-ADOrganizationalUnit -Name ($ou.Split(",")[0].Replace("OU=","")) -Path ($ou.Substring($ou.IndexOf(",")+1))
|
||||
Write-Host "Created OU: $ou"
|
||||
# Import from CSV
|
||||
Write-Host "Reading users from: $csvPath"
|
||||
try {
|
||||
$users = Import-Csv -Path $csvPath
|
||||
Write-Host "Successfully loaded $($users.Count) users from CSV"
|
||||
} catch {
|
||||
Write-Error "Failed to read CSV file: $_"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure Employees OU exists
|
||||
if (-not (Get-ADOrganizationalUnit -Filter {DistinguishedName -eq "OU=Employees,$base"} -ErrorAction SilentlyContinue)) {
|
||||
try {
|
||||
New-ADOrganizationalUnit -Name "Employees" -Path $base
|
||||
Write-Host "Created base Employees OU" -ForegroundColor Green
|
||||
} catch {
|
||||
Write-Error "Failed to create Employees OU: $_"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
# Get unique OUs from CSV file
|
||||
$requiredOUs = $users | Select-Object -ExpandProperty OU -Unique
|
||||
|
||||
# Create each required OU if it doesn't exist
|
||||
foreach ($ou in $requiredOUs) {
|
||||
$ouPath = "OU=$ou,OU=Employees,$base"
|
||||
if (-not (Get-ADOrganizationalUnit -Filter {DistinguishedName -eq $ouPath} -ErrorAction SilentlyContinue)) {
|
||||
try {
|
||||
New-ADOrganizationalUnit -Name $ou -Path "OU=Employees,$base"
|
||||
Write-Host "Created OU: $ou under Employees" -ForegroundColor Green
|
||||
} catch {
|
||||
Write-Warning "Failed to create OU: $ou - $_"
|
||||
}
|
||||
} else {
|
||||
Write-Host "OU already exists: $ou"
|
||||
Write-Host "OU already exists: $ou" -ForegroundColor Cyan
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +79,15 @@ foreach ($user in $users) {
|
||||
|
||||
# Create the user
|
||||
try {
|
||||
$ouPath = "OU=$OU,OU=Employees,$base"
|
||||
Write-Host "Attempting to create user: $Username in OU: $ouPath" -ForegroundColor Cyan
|
||||
|
||||
# Verify OU exists first
|
||||
if (-not (Get-ADOrganizationalUnit -Filter {DistinguishedName -eq $ouPath} -ErrorAction SilentlyContinue)) {
|
||||
Write-Host "Error: OU '$ouPath' does not exist!" -ForegroundColor Red
|
||||
continue
|
||||
}
|
||||
|
||||
New-ADUser `
|
||||
-SamAccountName $Username `
|
||||
-UserPrincipalName $Email `
|
||||
@@ -67,17 +95,20 @@ foreach ($user in $users) {
|
||||
-GivenName $FirstName `
|
||||
-Surname $LastName `
|
||||
-DisplayName $DisplayName `
|
||||
-Path $OU `
|
||||
-Path $ouPath `
|
||||
-Department $Department `
|
||||
-Title $Title `
|
||||
-AccountPassword $Password `
|
||||
-Enabled $true `
|
||||
-ChangePasswordAtLogon $true
|
||||
-ChangePasswordAtLogon $true `
|
||||
-ErrorAction Stop
|
||||
|
||||
Write-Host "Created user: $DisplayName ($Username)" -ForegroundColor Green
|
||||
Write-Host "Successfully created user: $DisplayName ($Username)" -ForegroundColor Green
|
||||
}
|
||||
catch {
|
||||
Write-Host "Failed to create user $Username: $_" -ForegroundColor Red
|
||||
Write-Host "Failed to create user $Username" -ForegroundColor Red
|
||||
Write-Host "Error details: $_" -ForegroundColor Red
|
||||
Write-Host "Stack trace: $($_.ScriptStackTrace)" -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,32 +1,25 @@
|
||||
FirstName,LastName,Username,OU,Password,Department,Title
|
||||
Henriette,Fonteyn,hfonteyn,"OU=Directie,OU=Employees,DC=company,DC=local","P@ssword123","Directie","Algemeen Directeur"
|
||||
Frank,Fonteyn,ffonteyn,"OU=Directie,OU=Employees,DC=company,DC=local","P@ssword123","Directie","Financieel Directeur"
|
||||
Anja,de Groot,adegroot,"OU=Directie,OU=Employees,DC=company,DC=local","P@ssword123","Directie","Directie assistente"
|
||||
Inge,Winsemius-Schut,iwinsemiusschut,"OU=HR,OU=Employees,DC=company,DC=local","P@ssword123","HR","Hoofd HR"
|
||||
|
||||
Antoon,van der Hoeven,avanderhoeven,"OU=BeheerOntwikkeling,OU=Employees,DC=company,DC=local","P@ssword123","Beheer & Ontwikkeling","Directeur Beheer & Ontwikkeling"
|
||||
Freek,van der Plas,fvanderplas,"OU=BeheerOntwikkeling,OU=Employees,DC=company,DC=local","P@ssword123","Beheer & Ontwikkeling","Beheer & Ontwikkeling"
|
||||
Fatima,Laroussi,flaroussi,"OU=BeheerOntwikkeling,OU=Employees,DC=company,DC=local","P@ssword123","M&A","M&A"
|
||||
|
||||
Norman,Jorgens,njorgens,"OU=Duitsland,OU=Employees,DC=company,DC=local","P@ssword123","Duitsland","Land directeur Duitsland"
|
||||
Erica,Bessels,ebessels,"OU=Benelux,OU=Employees,DC=company,DC=local","P@ssword123","Benelux","Land directeur Benelux"
|
||||
JeanJacques,Velo,jvelo,"OU=ZuidEuropa,OU=Employees,DC=company,DC=local","P@ssword123","Zuid-Europa","Land directeur Zuid-Europa"
|
||||
|
||||
Jelle,Snelle,jsnelle,"OU=SalesMarketing,OU=Employees,DC=company,DC=local","P@ssword123","Sales & Marketing","Manager Sales & Marketing"
|
||||
Cheng,Fui,cfui,"OU=SalesMarketing,OU=Employees,DC=company,DC=local","P@ssword123","Sales & Marketing","Sales"
|
||||
|
||||
Harrie,Makers,hmakers,"OU=Operations,OU=Employees,DC=company,DC=local","P@ssword123","Operations","Operations Manager"
|
||||
Eric,de Knutselaar,edeknutselaar,"OU=Operations,OU=Employees,DC=company,DC=local","P@ssword123","Technische Dienst","Technische dienst"
|
||||
Piet,Poester,ppoester,"OU=Operations,OU=Employees,DC=company,DC=local","P@ssword123","Schoonmaak","Schoonmaak"
|
||||
|
||||
Francien,de Kok,fdekok,"OU=FoodBeverages,OU=Employees,DC=company,DC=local","P@ssword123","Food & Beverages","Manager Food & Beverages"
|
||||
Mohammed,Ozturk,mozturk,"OU=Hospitality,OU=Employees,DC=company,DC=local","P@ssword123","Hospitality","Manager Hospitality"
|
||||
|
||||
Stefaan,Vrijsen,svrijsen,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","ICT & Security Manager"
|
||||
John,Ntwari,jntwari,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","Helpdesk"
|
||||
Frank,Ventiel,fventiel,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","Systeembeheerder"
|
||||
Sohail,Sosa,ssosa,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","Applicatiebeheerder"
|
||||
Frits,Franken,ffranken,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","ICT Projectmanagement"
|
||||
Bernhard,vandenBroek,bvandenbroek,"OU=ICT,OU=Employees,DC=company,DC=local","P@ssword123","ICT & Security","ICT Demandmanagement"
|
||||
|
||||
Anke,van Dalen-Schoten,avandalen,"OU=Finance,OU=Employees,DC=company,DC=local","P@ssword123","Finance & Control","Finance & Control Manager"
|
||||
Henriette,Fonteyn,hfonteyn,"Directie","P@ssword123","Directie","Algemeen Directeur"
|
||||
Frank,Fonteyn,ffonteyn,"Directie","P@ssword123","Directie","Financieel Directeur"
|
||||
Anja,de Groot,adegroot,"Directie","P@ssword123","Directie","Directie assistente"
|
||||
Inge,Winsemius-Schut,iwinsemiusschut,"HR","P@ssword123","HR","Hoofd HR"
|
||||
Antoon,van der Hoeven,avanderhoeven,"BeheerOntwikkeling","P@ssword123","Beheer & Ontwikkeling","Directeur Beheer & Ontwikkeling"
|
||||
Freek,van der Plas,fvanderplas,"BeheerOntwikkeling","P@ssword123","Beheer & Ontwikkeling","Beheer & Ontwikkeling"
|
||||
Fatima,Laroussi,flaroussi,"BeheerOntwikkeling","P@ssword123","M&A","M&A"
|
||||
Norman,Jorgens,njorgens,"Duitsland","P@ssword123","Duitsland","Land directeur Duitsland"
|
||||
Erica,Bessels,ebessels,"Benelux","P@ssword123","Benelux","Land directeur Benelux"
|
||||
JeanJacques,Velo,jvelo,"ZuidEuropa","P@ssword123","Zuid-Europa","Land directeur Zuid-Europa"
|
||||
Jelle,Snelle,jsnelle,"SalesMarketing","P@ssword123","Sales & Marketing","Manager Sales & Marketing"
|
||||
Cheng,Fui,cfui,"SalesMarketing","P@ssword123","Sales & Marketing","Sales"
|
||||
Harrie,Makers,hmakers,"Operations","P@ssword123","Operations","Operations Manager"
|
||||
Eric,de Knutselaar,edeknutselaar,"Operations","P@ssword123","Technische Dienst","Technische dienst"
|
||||
Piet,Poester,ppoester,"Operations","P@ssword123","Schoonmaak","Schoonmaak"
|
||||
Francien,de Kok,fdekok,"FoodBeverages","P@ssword123","Food & Beverages","Manager Food & Beverages"
|
||||
Mohammed,Ozturk,mozturk,"Hospitality","P@ssword123","Hospitality","Manager Hospitality"
|
||||
Stefaan,Vrijsen,svrijsen,"ICT","P@ssword123","ICT & Security","ICT & Security Manager"
|
||||
John,Ntwari,jntwari,"ICT","P@ssword123","ICT & Security","Helpdesk"
|
||||
Frank,Ventiel,fventiel,"ICT","P@ssword123","ICT & Security","Systeembeheerder"
|
||||
Sohail,Sosa,ssosa,"ICT","P@ssword123","ICT & Security","Applicatiebeheerder"
|
||||
Frits,Franken,ffranken,"ICT","P@ssword123","ICT & Security","ICT Projectmanagement"
|
||||
Bernhard,vandenBroek,bvandenbroek,"ICT","P@ssword123","ICT & Security","ICT Demandmanagement"
|
||||
Anke,van Dalen-Schoten,avandalen,"Finance","P@ssword123","Finance & Control","Finance & Control Manager"
|
||||
|
Reference in New Issue
Block a user