Untitled

 avatar
unknown
plain_text
21 days ago
3.1 kB
5
Indexable
<#
    Name: Daytona Thornton
    Student ID: [Your Student ID]
    Script: Restore_AD.ps1
    Description: Fully functional script that deletes and recreates the Finance OU, imports users from CSV,
                 handles errors, confirms OU and user creation, outputs results to AdResults.txt,
                 includes script standards, comments, and file unblocker.
#>

# Unblock the CSV file if needed
$csvPath = "$PSScriptRoot\financePersonnel.csv"
if (Test-Path $csvPath) {
    Unblock-File -Path $csvPath
    Write-Host "CSV file found and unblocked: $csvPath"
} else {
    Write-Host "CSV file NOT found at path: $csvPath"
}

try {
    Write-Host "`nChecking if 'Finance' OU exists..."
    $ouExists = Get-ADOrganizationalUnit -LDAPFilter "(name=Finance)" -SearchBase "DC=consultingfirm,DC=com" -ErrorAction SilentlyContinue

    if ($ouExists) {
        try {
            Remove-ADOrganizationalUnit -Identity $ouExists.DistinguishedName -Recursive -Confirm:$false
            Write-Host "'Finance' OU deleted."
        } catch {
            Write-Host "Warning: could not delete 'Finance' OU. Error: $_"
        }
    } else {
        Write-Host "'Finance' OU does not exist. Proceeding to create."
    }
} catch {
    Write-Host "Error during OU check or deletion: $_"
}

try {
    Write-Host "`nCreating 'Finance' OU..."
    New-ADOrganizationalUnit -Name "Finance" -Path "DC=consultingfirm,DC=com"
    Write-Host "'Finance' OU created successfully."
} catch {
    Write-Host "Error creating OU: $_"
}

try {
    Write-Host "`nImporting users from CSV..."
    if (Test-Path $csvPath) {
        $users = Import-Csv $csvPath

        foreach ($user in $users) {
            $first = $user.FirstName.Trim()
            $last = $user.LastName.Trim()
            $displayName = "$first $last"
            $samAccountName = ($first.Substring(0,1) + $last).ToLower()

            New-ADUser -Name $displayName `
                       -SamAccountName $samAccountName `
                       -GivenName $first `
                       -Surname $last `
                       -DisplayName $displayName `
                       -PostalCode $user.PostalCode `
                       -OfficePhone $user.OfficePhone `
                       -MobilePhone $user.MobilePhone `
                       -Path "OU=Finance,DC=consultingfirm,DC=com" `
                       -AccountPassword (ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force) `
                       -Enabled $true

            Write-Host "Created user: $displayName"
        }
    } else {
        Write-Host "Error: Could not find CSV at path: $csvPath"
    }
} catch {
    Write-Host "Error importing users: $_"
}

try {
    Write-Host "`nExporting user details to AdResults.txt..."
    Get-ADUser -Filter * -SearchBase "OU=Finance,DC=consultingfirm,DC=com" -Properties DisplayName,PostalCode,OfficePhone,MobilePhone |
        Select-Object DisplayName, PostalCode, OfficePhone, MobilePhone |
        Format-Table -AutoSize > "$PSScriptRoot\AdResults.txt"
    Write-Host "AdResults.txt created successfully."
} catch {
    Write-Host "Error exporting user details: $_"
}
Editor is loading...
Leave a Comment