Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #########################################################
- ### Exch Collect Info v.0.1.1
- ### Efimov (ge][) Gennady, http://gexeg.blogspot.com/
- #########################################################
- param(
- [string[]]$forestlist,
- [string]$resultfile,
- [string]$xslfile = "ex2k3_report.xsl",
- [switch]$help
- )
- . ..\lib\adfunctions.ps1
- . ..\lib\FunctionImports.ps1
- ##------------------------------------------------
- [object[]]$script:a_org = @()
- [object[]]$script:a_admgroups = @()
- [object[]]$script:a_rgs = @()
- [object[]]$script:a_servers = @()
- [object[]]$script:a_rgcons = @()
- [object[]]$script:a_smtpcons = @()
- [object[]]$script:a_sg = @()
- [object[]]$script:a_db = @()
- [object[]]$script:a_addrpolicy = @()
- [object[]]$script:a_oab = @()
- ##------------------------------------------------
- function help(){
- Write-Host "Efimov (ge][) Gennady, 2012"
- Write-Host "http://gexeg.blogspot.com/`n"
- Write-Host "Usage:`nex2k3_report.ps1 [-forestlist <array of string>] [-resultfile <String>] [-xslfile <String>] [-help]"
- }
- function parse(){
- if ($help){
- help
- exit
- }
- if (-not $forestList){
- $forestlist = @([system.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name)
- Set-Variable -Name "forestlist" -Scope 1 -Value $forestlist
- }
- if (-not $resultfile){
- $path = (Get-Item .).FullName
- $resultfile = Join-Path -Path $path -ChildPath ("{0}_{1}.xml" -f "ex2k3_report",[System.DateTime]::Now.ToString("ddMMyyyy-hh.mm.ss"))
- Set-Variable -Name "resultfile" -Scope 1 -Value $resultfile
- }
- }
- function GetExchOrgDE([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $ConfigNCStr = GetConfigNC -bindname $forest.ToString()
- $result = GetObjects2 -root "LDAP://$ConfigNCStr" -filter "(objectClass=msExchOrganizationContainer)" -attrs "objectclass"
- return $result.GetDirectoryEntry()
- }
- function GetExchOrgVersion([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- return $forest.Schema.FindProperty("msExchSchemaVersionPt").RangeUpper
- }
- function GetExchOrgInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $orgInfo = New-Object System.Object
- $orgInfo | Add-Member -Name "Name" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $orgInfo | Add-Member -Name "MixedMode" -MemberType NoteProperty -Value $orgDE.Properties["msexchmixedmode"][0]
- $orgInfo | Add-Member -Name "SchemaVer" -MemberType NoteProperty -Value (GetExchOrgVersion -forest $forest)
- $orgInfo | Add-Member -Name "ObjVer" -MemberType NoteProperty -Value $orgDE.Properties["objectVersion"][0]
- $orgInfo | Add-Member -Name "Forest" -MemberType NoteProperty -Value $forest.ToString()
- [string[]]$admins = @()
- foreach ($adm in $orgDE.Properties["msexchadmins"]){
- $admins += $adm
- }
- $orgInfo | Add-Member -Name "Admins" -MemberType NoteProperty -Value $admins
- $script:a_org += $orgInfo
- }
- function GetAdmGroupInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchAdminGroup)" -attrs @("cn","msexchadmins")
- foreach($result in $results){
- $AdmGroupInfo = New-Object System.Object
- $AdmGroupInfo | Add-Member -Name "Name" -MemberType NoteProperty -Value $result.Properties["cn"][0]
- [string[]]$admins = @()
- foreach ($adm in $result.Properties["msexchadmins"]){
- $admins += $adm
- }
- $AdmGroupInfo | Add-Member -Name "Admins" -MemberType NoteProperty -Value $admins
- $AdmGroupInfo | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $AdmGroupInfo | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_admgroups += $AdmGroupInfo
- }
- }
- function GetRoutingGroupInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchRoutingGroup)" -attrs @("cn")
- foreach($result in $results){
- $RoutingGroupInfo = New-Object System.Object
- $RoutingGroupInfo | Add-Member -Name "Name" -MemberType NoteProperty -Value $result.Properties["cn"][0]
- $RoutingGroupInfo | Add-Member -Name "AdmGroup" -MemberType NoteProperty -Value $result.GetDirectoryEntry().PSBase.Parent.PSBase.Parent.Properties["cn"][0]
- $RoutingGroupInfo | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $RoutingGroupInfo | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_rgs += $RoutingGroupInfo
- }
- }
- function GetExchServerInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchExchangeServer)" -attrs @("cn")
- foreach($result in $results){
- $ExchServer = New-Object System.Object
- $ServerDE = $result.GetDirectoryEntry()
- $ExchServer | Add-Member -Name "Name" -MemberType NoteProperty -Value $ServerDE.Properties["cn"][0]
- $ExchServer | Add-Member -Name "LegacyDN" -MemberType NoteProperty -Value $ServerDE.Properties["legacyexchangedn"][0]
- $ExchServer | Add-Member -Name "MessTrackEnabled" -MemberType NoteProperty -Value $ServerDE.Properties["messagetrackingenabled"][0]
- $ExchServer | Add-Member -Name "ExchDataPath" -MemberType NoteProperty -Value $ServerDE.Properties["msexchdatapath"][0]
- $ExchServer | Add-Member -Name "ExchInstallPath" -MemberType NoteProperty -Value $ServerDE.Properties["msexchinstallpath"][0]
- $ExchServer | Add-Member -Name "Version" -MemberType NoteProperty -Value $ServerDE.Properties["serialnumber"][0]
- $ExchServer | Add-Member -Name "ServerRole" -MemberType NoteProperty -Value $ServerDE.Properties["serverrole"][0]
- $routingGroup = [adsi]$("LDAP://"+$ServerDE.Properties["msexchhomeroutinggroup"][0])
- $ExchServer | Add-Member -Name "RG" -MemberType NoteProperty -Value $routingGroup.Properties["cn"][0]
- $ExchServer | Add-Member -Name "AdmGroup" -MemberType NoteProperty -Value $ServerDE.PSBase.Parent.PSBase.Parent.PSBase.Properties["cn"][0]
- $script:a_servers += $ExchServer
- }
- }
- function GetRoutingGroupConnectorsInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchRoutingGroupConnector)" -attrs @("cn")
- foreach($result in $results){
- $RGConDE = $result.GetDirectoryEntry()
- $RGConObj = New-Object System.Object
- $RGConObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $RGConDE.Properties["cn"][0]
- $RGConObj | Add-Member -Name "SourceRG" -MemberType NoteProperty -Value $RGConDE.PsBase.Parent.PsBase.Parent.PSBase.Properties["cn"][0]
- [string[]]$sourceServersDN = @()
- [string[]]$sourceServersNames = @()
- if ($RGConDE.Properties["msExchSourceBridgeheadServersDN"]){
- foreach($serverDN in $RGConDE.Properties["msExchSourceBridgeheadServersDN"]){
- $smtpvsDE = [adsi]"LDAP://$serverDN"
- $sourceServersDN += $serverDN
- $sourceServersNames += $smtpvsDE.Properties["msExchSmtpFullyQualifiedDomainName"][0]
- }
- }
- else {
- $sourceServersDN = "All"
- $sourceServersNames = "All"
- }
- $RGConObj | Add-Member -Name "SourceBHDNs" -MemberType NoteProperty -Value $sourceServersDN
- $RGConObj | Add-Member -Name "SourceBHNames" -MemberType NoteProperty -Value $sourceServersNames
- $DestRGDE = [adsi]("LDAP://"+$RGConDE.Properties["msExchDestinationRGDN"][0])
- $RGConObj | Add-Member -Name "DestRG" -MemberType NoteProperty -Value $DestRGDE.Properties["cn"][0]
- [string[]]$DestServersDN = @()
- [string[]]$DestServersNames = @()
- if ($RGConDE.Properties["msExchTargetBridgeheadServersDN"]){
- foreach($serverDN in $RGConDE.Properties["msExchTargetBridgeheadServersDN"]){
- $smtpvsDE = [adsi]"LDAP://$serverDN"
- $DestServersDN += $serverDN
- $DestServersNames += $smtpvsDE.Properties["msExchSmtpFullyQualifiedDomainName"][0]
- }
- }
- $RGConObj | Add-Member -Name "TargetBHDNs" -MemberType NoteProperty -Value $DestServersDN
- $RGConObj | Add-Member -Name "TargetBHNames" -MemberType NoteProperty -Value $DestServersNames
- $RGConObj | Add-Member -Name "Cost" -MemberType NoteProperty -Value $RGConDE.Properties["cost"][0]
- $RGConObj | Add-Member -Name "dlMemDefault" -MemberType NoteProperty -Value $RGConDE.Properties["dlMemDefault"][0]
- [string[]]$authorigin = @()
- foreach($authuser in $RGConDE.Properties["authorigin"]){
- $authorigin += $authuser
- }
- $RGConObj | Add-Member -Name "authOrigin" -MemberType NoteProperty -Value $authorigin
- [string[]]$unauthorigin = @()
- foreach($unauthuser in $RGConDE.Properties["unauthorigin"]){
- $unauthorigin += $unauthuser
- }
- $RGConObj | Add-Member -Name "unauthOrigin" -MemberType NoteProperty -Value $unauthorigin
- $RGConObj | Add-Member -Name "delivContLength" -MemberType NoteProperty -Value $RGConDE.Properties["delivContLength"][0]
- $RGConObj | Add-Member -Name "heuristics" -MemberType NoteProperty -Value $RGConDE.Properties["heuristics"][0]
- $RGConObj | Add-Member -Name "DisallowPriority" -MemberType NoteProperty -Value $RGConDE.Properties["msExchRoutingDisallowPriority"][0]
- $RGConObj | Add-Member -Name "NoPFConnection" -MemberType NoteProperty -Value $RGConDE.Properties["msExchNoPFConnection"][0]
- $RGConObj | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $RGConObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_rgcons += $RGConObj
- }
- }
- function GetSMTPConnectorsInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchRoutingSMTPConnector)" -attrs @("cn")
- foreach($result in $results){
- $SMTPConDE = $result.GetDirectoryEntry()
- $SMTPConObj = New-Object System.Object
- $SMTPConObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $SMTPConDE.Properties["cn"][0]
- $SMTPConObj | Add-Member -Name "SourceRG" -MemberType NoteProperty -Value $SMTPConDE.PsBase.Parent.PsBase.Parent.PSBase.Properties["cn"][0]
- [string[]]$sourceServersDN = @()
- [string[]]$sourceServersNames = @()
- if ($SMTPConDE.Properties["msExchSourceBridgeheadServersDN"]){
- foreach($serverDN in $SMTPConDE.Properties["msExchSourceBridgeheadServersDN"]){
- $smtpvsDE = [adsi]"LDAP://$serverDN"
- $sourceServersDN += $serverDN
- $sourceServersNames += $smtpvsDE.Properties["msExchSmtpFullyQualifiedDomainName"][0]
- }
- }
- else {
- $sourceServersDN = "All"
- $sourceServersNames = "All"
- }
- $SMTPConObj | Add-Member -Name "SourceBHDNs" -MemberType NoteProperty -Value $sourceServersDN
- $SMTPConObj | Add-Member -Name "SourceBHNames" -MemberType NoteProperty -Value $sourceServersNames
- [string[]]$routinglist = @()
- foreach($route in $SMTPConDE.Properties["routingList"]){
- $routinglist += $route
- }
- $SMTPConObj | Add-Member -Name "RoutingList" -MemberType NoteProperty -Value $routinglist
- $SMTPConObj | Add-Member -Name "DeliveryTo" -MemberType NoteProperty -Value $SMTPConDE.Properties["msExchSmtpSmarthost"][0]
- $SMTPConObj | Add-Member -Name "dlMemDefault" -MemberType NoteProperty -Value $SMTPConDE.Properties["dlMemDefault"][0]
- [string[]]$authorigin = @()
- foreach($authuser in $SMTPConDE.Properties["authorigin"]){
- $authorigin += $authuser
- }
- $SMTPConObj | Add-Member -Name "authOrigin" -MemberType NoteProperty -Value $authorigin
- [string[]]$unauthorigin = @()
- foreach($unauthuser in $SMTPConDE.Properties["unauthorigin"]){
- $unauthorigin += $unauthuser
- }
- $SMTPConObj | Add-Member -Name "unauthOrigin" -MemberType NoteProperty -Value $unauthorigin
- $SMTPConObj | Add-Member -Name "delivContLength" -MemberType NoteProperty -Value $SMTPConDE.Properties["delivContLength"][0]
- $SMTPConObj | Add-Member -Name "heuristics" -MemberType NoteProperty -Value $SMTPConDE.Properties["heuristics"][0]
- $SMTPConObj | Add-Member -Name "DisallowPriority" -MemberType NoteProperty -Value $SMTPConDE.Properties["msExchRoutingDisallowPriority"][0]
- $SMTPConObj | Add-Member -Name "NoPFConnection" -MemberType NoteProperty -Value $SMTPConDE.Properties["msExchNoPFConnection"][0]
- $SMTPConObj | Add-Member -Name "msEXchSmtpOutboundSecurityFlag" -MemberType NoteProperty -Value $SMTPConDE.Properties["msEXchSmtpOutboundSecurityFlag"][0]
- $SMTPConObj | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $SMTPConObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_smtpcons += $SMTPConObj
- }
- }
- function GetLogFilesInfo([string]$dirName, [string]$prefix){
- Write-Host "GetLogFilesInfo $dirname"
- [string[]]$files = [System.IO.Directory]::GetFiles($dirName, $prefix+"*")
- if (-not $files) {
- return 0,$null
- }
- [System.Int64]$sumsize = 0
- $lastCreateDate = [datetime]::Now
- foreach($file in $files){
- $fileInfo = New-Object System.IO.FileInfo($file)
- $sumSize += $fileInfo.Length
- if ($fileInfo.CreationTime -lt $lastCreateDate){
- $lastCreateDate = $fileInfo.CreationTime
- }
- }
- return @($sumsize, $lastCreateDate)
- }
- function GetSGInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchStorageGroup)" -attrs @("cn")
- foreach($result in $results){
- $SGDE = $result.GetDirectoryEntry()
- $SGObj = New-Object System.Object
- $SGObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $SGDE.Properties["cn"][0]
- $serverName = $SGDE.PsBase.Parent.PsBase.Parent.PSBase.Properties["cn"][0]
- $SGObj | Add-Member -Name "Server" -MemberType NoteProperty -Value $serverName
- $SGObj | Add-Member -Name "CircularLogging" -MemberType NoteProperty -Value $SGDE.Properties["msExchESEParamCircularLog"][0]
- $LogBaseName = $SGDE.Properties["msExchESEParamBaseName"][0]
- $LogFilePath = $SGDE.Properties["msExchESEParamLogFilePath"][0]
- $SGObj | Add-Member -Name "LogBaseName" -MemberType NoteProperty -Value $LogBaseName
- $SGObj | Add-Member -Name "LogFilePath" -MemberType NoteProperty -Value $LogFilePath
- $SGObj | Add-Member -Name "LogSysPath" -MemberType NoteProperty -Value $SGDE.Properties["msExchESEParamSystemPath"][0]
- $remoteDir = "\\" + $serverName + "\" + $LogFilePath.Replace(":","`$")
- $ret = GetLogFilesInfo -dirname $remoteDir -prefix $LogBaseName
- $SGObj | Add-Member -Name "LogSize" -MemberType NoteProperty -Value $ret[0]
- $SGObj | Add-Member -Name "LastLogDate" -MemberType NoteProperty -Value $ret[1]
- $SGObj | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $SGObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_sg += $SGObj
- }
- }
- function GetFileSize($filename){
- Write-Host "GetFileSize $filename"
- $fileInfo = New-Object System.IO.FileInfo($filename)
- return $fileInfo.Length
- }
- function GetDBInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchPrivateMDB)" -attrs @("cn")
- foreach($result in $results){
- $DBDE = $result.GetDirectoryEntry()
- $DBObj = New-Object System.Object
- $DBObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $DBDE.Properties["cn"][0]
- $oab = ([adsi]("LDAP://"+$DBDE.Properties["msExchUseOAB"][0])).Properties["cn"][0]
- $DBObj | Add-Member -Name "OAB" -MemberType NoteProperty -Value $oab
- $edbFile = $DBDE.Properties["msExchEDBFile"][0]
- $stmFile = $DBDE.Properties["msExchSLVFile"][0]
- $DBObj | Add-Member -Name "EDBFile" -MemberType NoteProperty -Value $edbFile
- $DBObj | Add-Member -Name "STMFile" -MemberType NoteProperty -Value $stmFile
- $serverName = ([adsi]("LDAP://" + $DBDE.Properties["msExchOwningServer"][0])).Properties["cn"][0]
- $DBObj | Add-Member -Name "Server" -MemberType NoteProperty -Value $serverName
- $pfDB = ([adsi]("LDAP://" + $DBDE.Properties["msExchHomePublicMDB"][0])).Properties["cn"][0]
- $DBObj | Add-Member -Name "PFDB" -MemberType NoteProperty -Value $pfDB
- $DBObj | Add-Member -Name "KeepMBX" -MemberType NoteProperty -Value $DBDE.Properties["msExchMailboxRetentionPeriod"][0]
- $DBObj | Add-Member -Name "NotStartupMount" -MemberType NoteProperty -Value $DBDE.Properties["msExchEDBOffline"][0]
- $DBObj | Add-Member -Name "NoOverride" -MemberType NoteProperty -Value $DBDE.Properties["msExchPatchMDB"][0]
- $DBObj | Add-Member -Name "NotPermanentlyDelete" -MemberType NoteProperty -Value $DBDE.Properties["deletedItemFlags"][0]
- $DBObj | Add-Member -Name "KeepDelItems" -MemberType NoteProperty -Value $DBDE.Properties["garbageCollPeriod"][0]
- $DBObj | Add-Member -Name "IssueWarning" -MemberType NoteProperty -Value $DBDE.Properties["mDBStorageQuota"][0]
- $DBObj | Add-Member -Name "ProhibitSend" -MemberType NoteProperty -Value $DBDE.Properties["mdbOverQuotaLimit"][0]
- $DBObj | Add-Member -Name "ProhibitSendReceive" -MemberType NoteProperty -Value $DBDE.Properties["mDBOverHardQuotaLimit"][0]
- $DBObj | Add-Member -Name "EDBSize" -MemberType NoteProperty -Value (GetFileSize -filename ("\\$serverName\" + $edbFile.Replace(":","`$")))
- $DBObj | Add-Member -Name "STMSize" -MemberType NoteProperty -Value (GetFileSize -filename ("\\$serverName\" + $stmFile.Replace(":","`$")))
- $DBObj | Add-Member -Name "SGName" -MemberType NoteProperty -Value $DBDE.PSBase.Parent.PSBase.Parent.PSbase.Properties["cn"][0]
- $DBObj | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $DBObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_db += $DBObj
- }
- }
- function GetAddrPolicyInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchRecipientPolicy)" -attrs @("cn")
- foreach($result in $results){
- $AddrDE = $result.GetDirectoryEntry()
- $AddrObj = New-Object System.Object
- $AddrObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $AddrDE.Properties["cn"][0]
- $AddrObj | Add-Member -Name "Filter" -MemberType NoteProperty -Value $AddrDE.Properties["purportedSearch"][0]
- $AddrObj | Add-Member -Name "PolicyOrder" -MemberType NoteProperty -Value $AddrDE.Properties["msExchPolicyOrder"][0]
- [string[]]$nonAuthDomains = @()
- foreach($domain in $AddrDE.Properties["msExchNonAuthoritativeDomains"]){
- $nonAuthDomains += $domain
- }
- $AddrObj | Add-Member -Name "NonAuthDomain" -MemberType NoteProperty -Value $nonAuthDomains
- [string[]]$gatewayProxy = @()
- foreach($domain in $AddrDE.Properties["gatewayProxy"]){
- $gatewayProxy += $domain
- }
- $AddrObj | Add-Member -Name "Domains" -MemberType NoteProperty -Value $gatewayProxy
- [string[]]$disabledProxy = @()
- foreach($domain in $AddrDE.Properties["disabledGatewayProxy"]){
- $disabledProxy += $domain
- }
- $AddrObj | Add-Member -Name "DisabledDomains" -MemberType NoteProperty -Value $disabledProxy
- $AddrObj | Add-Member -Name "Enable" -MemberType NoteProperty -Value $AddrDE.Properties["msExchPolicyEnabled"][0]
- [string[]]$infoarr = @()
- $gatewayProxy += $disabledProxy
- foreach($domain in $gatewayProxy){
- $dom = $domain
- if ($nonAuthDomains -contains $domain){
- $dom += "(NonAuth)"
- }
- if ($disabledProxy -contains $domain){
- $dom += "(Disabled)"
- }
- $infoarr += $dom
- }
- $AddrObj | Add-Member -Name "Info" -MemberType NoteProperty -Value $infoarr
- $AddrObj | Add-Member -Name "OrgName" -MemberType NoteProperty -Value $orgDE.Properties["cn"][0]
- $AddrObj | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forest.ToString()
- $script:a_addrpolicy += $AddrObj
- }
- }
- function GetOABInfo([System.DirectoryServices.ActiveDirectory.Forest]$forest){
- $orgDE = GetExchOrgDE -forest $forest
- $results = GetObjects2 -root $orgDE -filter "(objectclass=msExchOAB)" -attrs @("cn")
- foreach($result in $results){
- $OABDE = $result.GetDirectoryEntry()
- $OABObj = New-Object System.Object
- $OABObj | Add-Member -Name "Name" -MemberType NoteProperty -Value $OABDE.Properties["cn"][0]
- $OABObj | Add-Member -Name "OABVersion" -MemberType NoteProperty -Value $OABDE.Properties["doOABVersion"][0]
- $OABObj | Add-Member -Name "isDefault" -MemberType NoteProperty -Value $OABDE.Properties["msExchOABDefault"][0]
- $OABObj | Add-Member -Name "OABServer" -MemberType NoteProperty `
- -Value ([adsi]("LDAP://" + $OABDE.Properties["offLineABServer"][0])).Properties["cn"][0]
- [string[]]$addresslists = @()
- foreach($item in $OABDE.Properties["offLineABContainers"]){
- $addresslists += $item
- }
- $OABObj | Add-Member -Name "AddrList" -MemberType NoteProperty -Value $addresslists
- $script:a_oab += $OABObj
- }
- }
- parse
- Write-Host "Запуск сбора информации"
- $forestlist | foreach {
- $forest = GetForest -forestName $_
- Write-Host "Лес $_"
- Write-Host "Получаем информацию об организации"
- GetExchOrgInfo -forest $forest
- Write-Host "Получаем информацию об административных группах"
- GetAdmGroupInfo -forest $forest
- Write-Host "Получаем информацию о группах маршрутизации"
- GetRoutingGroupInfo -forest $forest
- Write-Host "Получаем информацию о серверах"
- GetExchServerInfo -forest $forest
- Write-Host "Получаем информацию о RG-коннекторах"
- GetRoutingGroupConnectorsInfo -forest $forest
- Write-Host "Получаем информацию о SMTP-коннекторах"
- GetSMTPConnectorsInfo -forest $forest
- Write-Host "Получаем информацию о группах хранения"
- GetSGInfo -forest $forest
- Write-Host "Получаем информацию о хранилищах почтовых ящиков"
- GetDBInfo -forest $forest
- Write-Host "Получаем информацию об адресных политиках"
- GetAddrPolicyInfo -forest $forest
- Write-Host "Получаем информацию об OAB"
- GetOABInfo -forest $forest
- }
- $report = New-Object System.Object
- $report | Add-Member -Name "OrganizationInfo" -MemberType NoteProperty $script:a_org
- $report | Add-Member -Name "AdmGroupInfo" -MemberType NoteProperty $script:a_admgroups
- $report | Add-Member -Name "RoutingGroupInfo" -MemberType NoteProperty $script:a_rgs
- $report | Add-Member -Name "ServerInfo" -MemberType NoteProperty $script:a_servers
- $report | Add-Member -Name "RGConnectorInfo" -MemberType NoteProperty $script:a_rgcons
- $report | Add-Member -Name "SMTPConnectorInfo" -MemberType NoteProperty $script:a_smtpcons
- $report | Add-Member -Name "SGInfo" -MemberType NoteProperty $script:a_sg
- $report | Add-Member -Name "DBInfo" -MemberType NoteProperty $script:a_db
- $report | Add-Member -Name "AddrPolicyInfo" -MemberType NoteProperty $script:a_addrpolicy
- $report | Add-Member -Name "OABInfo" -MemberType NoteProperty $script:a_oab
- $report | Export-Clixml $resultfile
- $xmlstr = Get-Content $resultfile
- $xmlstr = "<?xml version=`"1.0`"?>`n`r<?xml-stylesheet type=`"text/xsl`" href=`"$xslfile`"?>`n`r" + $xmlstr
- Set-Content -Path $resultfile -Encoding UTF8 -Value $xmlstr
Advertisement
Add Comment
Please, Sign In to add comment