Hi,
The code below works but i have not much experience, in total we have 7 Departments and in the script are only 2. I first asked chatgpt but what he produced did not work so i created something myself.
By as you will notice the part of the creation of a new ad users repeats in every switch so how would you guys do this?
The current rough code:
# Import users from CSV file
$CsvFilePath = "C:\tools\demo-department.csv"
if (-Not (Test-Path $CSVPath)) {
Write-Host "CSV file not found at $CSVPath"
Write-Log "ERROR: CSV file not found at $CSVPath"
exit
}
$domainname = "domain.be"
# Import the CSV file
$Users = Import-Csv -Path $CsvFilePath
foreach ($User in $Users)
{
$SurName = $User.Surname -replace '\s',''
$GivenName = $User.GivenName -replace '\s',''
$Department = $User.Department
#Write-Host $User.Department
# Create username (GivenName + Surname in lowercase)
$samAccountName = ($GivenName + '.' + $SurName).ToLower()
Switch ($User.Department) {
"Department1" {
# Define the target OU
$targetOU = "OU=Department1,OU=Users,OU=Ver,DC=ver,DC=local"
# Check if the user already exists in AD by SamAccountName
$existingUser = Get-ADUser -Filter { SamAccountName -eq $samAccountName } -ErrorAction SilentlyContinue
if (-not $existingUser) {
# User does not exist, create the new user
New-ADUser -SamAccountName $samAccountName `
-UserPrincipalName ($samAccountName + "@" + $domainname) `
-Name $User.Surname `
-GivenName $User.GivenName `
-Surname $User.Surname `
-EmailAddress ($samAccountName + "@" + $domainname) `
-AccountPassword (ConvertTo-SecureString "DefaultP@ssword1" -AsPlainText -Force) `
-Enabled $true `
-Path $targetOU `
-PassThru
Write-Host "User $samAccountName created successfully."
Add-ADPrincipalGroupMembership -Identity $samAccountName -MemberOf "Department1", "test001", "Printers"
} else {
Write-Host "User $samAccountName already exists. Skipping."
}
}
"Department2" {
# Define the target OU
$targetOU = "OU=Department2,OU=Users,OU=Ver,DC=ver,DC=local"
# Check if the user already exists in AD by SamAccountName
$existingUser = Get-ADUser -Filter { SamAccountName -eq $samAccountName } -ErrorAction SilentlyContinue
#Write-Host "huidige gebruiker $($User.Surname) is lid van:" $User.Department
if (-not $existingUser) {
# User does not exist, create the new user
New-ADUser -SamAccountName $samAccountName `
-UserPrincipalName ($samAccountName + "@" + $domainname) `
-Name $User.Surname `
-GivenName $User.GivenName `
-Surname $User.Surname `
-EmailAddress ($samAccountName + "@" + $domainname) `
-AccountPassword (ConvertTo-SecureString "DefaultP@ssword1" -AsPlainText -Force) `
-Enabled $true `
-Path $targetOU `
-PassThru
Write-Host "User $samAccountName created successfully."
Add-ADPrincipalGroupMembership -Identity $samAccountName -MemberOf "Department2", "test002", "Printers"
} else {
Write-Host "User $samAccountName already exists. Skipping."
}
}
}
}