#------------------------------------------------------------------------- # pfmailinteg.vbs # # Description # Loads public folder structure and AD Proxy Addresses and lists # - mail enabled folder without matching proxy address # - orphaned Proxy Objects # # the script uses the credentials of the executing User. # # (c)2009 Net at Work Netzwerksysteme GmbH # # Version 2.0 (07 Sep. 2009) Frank Carius # Initial Release build with a customer # Version 2.1 (08 Sep. 2009) Frank Carius # Added "type" to output für easier automated post processing # # Execute witrh .\pfmailinteg.vbs | Export-Csv -Path .\pf.csv #------------------------------------------------------------------------- set-psdebug -strict # Start-Transcript -Path pfmailinteg-$starttime.log -Append Write-Host "--- Loading Mail Public Folder" $pfproxy = Get-MailPublicFolder Write-Host "--- Copy AD-Objects in Dictionary für comparisons" $pfproxydict = @{} $pfproxy | % { $folder = $_ Write-Host "Folder:" $folder.WindowsEmailAddress $pfproxydict.add($folder.Distinguishedname,$folder.WindowsEmailAddress) } Write-Host "--- Loading Public Folder Structure. May take a long time . Please be patient" Get-PublicFolder -Recurse -ResultSize unlimited | %{ $folder = $_ $folderpath = $folder.ParentPath + "\" + $folder.Name Write-Host $folderpath -nonewline $output = New-Object PSObject Add-member -InputObject $output noteproperty "Type" "folder" Add-member -InputObject $output noteproperty "Folder" $folderpath Add-member -InputObject $output noteproperty "MailEnabled" $folder.MailEnabled if ($folder.MailEnabled) { Write-Host -nonewline " IsMailenabled" $result = $null $result = Get-MailPublicFolder -Identity $folder -ErrorAction silentlycontinue if ($result -ne $null) { Write-Host " Proxyobjekt gefunden" Add-member -InputObject $output noteproperty "Proxy" "OK" $pfproxydict.Remove($result.DistinguishedName) } else { Write-warning " Proxyobjekt fehlt" Add-member -InputObject $output noteproperty "Proxy" "MISSING" } } else { Write-Host " Not Mailenabled" Add-member -InputObject $output noteproperty "Proxy" "OK" } $output } write-host " == Pruefe auf orphaned AD-Proxy objects ==" foreach ($proxy in $pfproxydict.Keys) { Write-warning "Ordnerproxy orphaned $proxy" $output = New-Object PSObject Add-member -InputObject $output noteproperty "Type" "proxy" Add-member -InputObject $output noteproperty "Folder" $proxy Add-member -InputObject $output noteproperty "MailEnabled" "" Add-member -InputObject $output noteproperty "Proxy" "Orphaned" $output }