diff --git a/AutoOUADCreator.ps1 b/AutoOUADCreator.ps1 index 171dc42..8e80f7f 100644 --- a/AutoOUADCreator.ps1 +++ b/AutoOUADCreator.ps1 @@ -1,4 +1,4 @@ -# Copyright 2024 Rayyan Hodges, TAFE NSW, AlphaDelta +# Copyright 2024 Rayyan Hodges, TAFE NSW, AlphaDelta # Contact: rayyan.hodges@studytafensw.edu.au # Program Name: AutoOUADCreator # Purpose of script: Create a batch set of OU' using a CSV file within an existing Active Directory Forest. @@ -13,32 +13,58 @@ $fpath = Read-Host -Prompt "Please enter the path to your CSV file containing OU # Check if the CSV file exists if (Test-Path $fpath) { # Display path to file given by end-user - echo $fpath + Write-Host "CSV file path: $fpath" # Display path to file given by end-user echo $fpath -#Import OU info from CSV file. -$fous = Import-Csv $fpath + # Import OU info from CSV file with error checking + try { + $fous = Import-Csv $fpath -ErrorAction Stop + } catch { + Write-Host "Error importing CSV file: $_" + exit + } #Create OU's within the Active Directory forest by looping throughout each row within the CSV file. foreach ($row in $fous) { # Get the name of the OU from the CSV $ouName = $row.Name - # Get all existing OUs in the specified path - $existingOUs = Get-ADOrganizationalUnit -Filter * -SearchBase "DC=alphadelta,DC=com" | Select-Object -ExpandProperty Name + # Ensure $ouName is not null or empty + if (-not [string]::IsNullOrWhiteSpace($ouName)) { +# Get all existing OUs in the specified path + try { + $existingOUs = Get-ADOrganizationalUnit -Filter * -SearchBase "DC=PSTest,DC=local" | Select-Object -ExpandProperty Name + } catch { + Write-Host "Error retrieving existing OUs: $_" + exit + } - # Check if the OU already exists - if (-not (Get-ADOrganizationalUnit -LDAPFilter "(Name=$ouName)")) { - # Create the OU - New-ADOrganizationalUnit -Name $ouName -Path "DC=alphadelta,DC=com" -ErrorAction SilentlyContinue - Write-Host "OU '$ouName' created successfully." - # If OU name already exists, simply display a message stating it exists and skip to next entry. +# Check if the OU already exists +$ouExists = $false +foreach ($existingOU in $existingOUs) { + if ($existingOU -eq $ouName) { + $ouExists = $true + break + } +} + +i if (-not $ouExists) { + # Create the OU + try { + New-ADOrganizationalUnit -Name $ouName -Path "DC=PSTest,DC=local" -ErrorAction Stop + Write-Host "OU '$ouName' created successfully." + } catch { + Write-Host "Error creating OU '$ouName': $_" + } + } else { + Write-Host "OU '$ouName' already exists, proceeding to next entry." + } } else { - Write-Host "OU '$ouName' already exists, proceeding to next entry." + Write-Host "Skipping empty OU name." } } } else { - Write-Host "The specified CSV file does not exist." + Write-Host "The specified CSV file does not exist." }