Updating a User attribute in the Enterprise

I was asked to update an attribute of the EmployeeNumber for each and every user in the Enterprise for a new Application that will be using the newly populated attribute for a Global Database application.

I had several examples that I could use for the job utilizing VbScript – but I wanted to use Powershell for the task.

It turned out to be a relatively easy task – using the Quest Active Directory Commandlets.

add-PSSnapin quest.activeroles.admanagement

 Connect-QADService -Service domain.com -Credential (Get-Credential)
 $infile = Import-Csv "c:\temp\file.csv"
 $logfile = "c:\temp\logfile.log"

 foreach ($line in $infile) {
        set-QADObject ($line.domain +"\" + $line.login) -ObjectAttributes `
            @{employeeNumber=$line.guid}
        if ($? -eq $true){
        Write-output "Updated: $($line.domain)\$($line.login) with employeeNumber: `
            $($line.guid)" >>  $logfile
        } else {
        Write-output "Error in updating: $($line.domain)\$($line.login)" >> $logfile
        }
 }

 ##Get Results
 $results = foreach ($line in $infile) {
    get-QADObject ($line.domain +"\" + $line.login) -IncludedProperties `
       Name, employeeNumber | select Name, employeeNumber
    }
 $results >> $logfile
 Disconnect-QADService -Service domain.com

A Quick explanation:

Add the Quest Snapin

Connect to the domain with acquired credentials

Import the CSV file that was formatted - domain,login,guid, and create a log file for results

Go through each line in the CSV – if successful log to the file and if not then report the error to the log file.

Go through the list of users again – retrieving only the Name and EmployeeNumber properties and pipe the results in the same log file.

The script to a longer to write than it did to run.

Hope you enjoyed the ride.