Greetings
Welcome to the complexity of governmental departments.
My goal/requirement is to take User AD details from a domains and create AD Objects (contacts) for exchange to use.
We are doing this at a AD level and not using Exchange as this is been done over several domains all untrused.
The script I have complete so far does the job, with one hiccup.
Each Domain has different ways of setting up users and what attributes are used, thus ever so often it hits a NULL entry.
And then -OtherAttributes fails cause I'm now piping in nothing.
So any suggestion would be welcome.
I have tried writing each attribute we required for each domain but this turned into a MESS and complicate to troubleshoot.
I have tried to find a way to do an IF THEN ELSE for the Hashtable but, probably doing it wrong :P
# Loads ActiveDirectory Powershell Commands is not loaded #
if(@(get-module | where-object {$_.Name -eq "ActiveDirectory"} ).count -eq 0) {import-module ActiveDirectory}
# AD_OU location to be SCANNED for users
$OU_Contact = "OU=Contact,OU=Temp,DC=DomainA,DC=gov,DC=uk"
$OU_Users = "OU=USER,DC=Domain2,DC=gov,DC=uk"
## The following filter is used by Get-ADObject to decide which users will have contacts created.
$strSelectUsers = { ObjectClass -eq "user" -and msExchHomeServerName -like "*" -and -not msExchHideFromAddressLists -eq $true }
$DOMAIN_1 = "DomainA.gov.uk"
$DOMAIN_2 = "DomainB.gov.uk"
$objTargetDC = Get-ADDomainController -Discover -DomainName $DOMAIN_1
$objSourceDC = Get-ADDomainController -Discover -DomainName $DOMAIN_2
$sourceDC = [string]$objSourceDC.HostName
$targetDC = [string]$objTargetDC.HostName
#Gets user in OU writes contacts to OU using Porperties# ERROR not importing last and first names.
# Null DATA corrction lines {If ($_.HomePhone -eq "") {$HPhone = $Null} Else {$HPhone = $_.HomePhone}
Get-ADObject -Filter $strSelectUsers -Server $sourceDC -SearchBase $OU_Users -SearchScope OneLevel -Properties * |
ForEach-Object {New-ADObject -Type contact -Name $_.displayName `
-OtherAttributes @{'displayname'=$_.displayName;'mail'=$_.mail;'proxyAddresses'=$_.proxyAddresses;'givenName'=$_.givenName;'sn'=$_.sn;} `
-Path $OU_Contact}Thanks