Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #########################################################
- ### Exch2k7 Collect Info v.0.1.2
- ### Efimov (ge][) Gennady, http://gexeg.blogspot.com/
- #########################################################
- param (
- [string]$forest,
- [string]$resultfile,
- [string]$xslfile = "ex2k7_report.xsl",
- [switch]$help
- )
- . ..\lib\adfunctions.ps1
- . ..\lib\FunctionImports.ps1
- ##------------------------------------------------
- function help(){
- Write-Host "Efimov (ge][) Gennady, 2012"
- Write-Host "http://gexeg.blogspot.com/`n"
- Write-Host "Usage:`nex2k7_report.ps1 [-forest <array of string>] [-resultfile <String>] [-xslfile <String>] [-help]"
- }
- function parse(){
- if ($help){
- help
- exit
- }
- if (-not $forest){
- $forest = @([system.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name)
- Set-Variable -Name "forest" -Scope 1 -Value $forest
- }
- if (-not $resultfile){
- $path = (Get-Item .).FullName
- $resultfile = Join-Path -Path $path -ChildPath ("{0}_{1}.xml" -f "ex2k7_report",[System.DateTime]::Now.ToString("ddMMyyyy-hh.mm.ss"))
- Set-Variable -Name "resultfile" -Scope 1 -Value $resultfile
- }
- }
- Write-Progress -Activity "Загружаем Microsoft.Exchange.Management.PowerShell.Admin" -Id 1 -Status "Running" -PercentComplete 1
- if (-not (Get-PSSnapin "Microsoft.Exchange.Management.PowerShell.Admin" -ErrorAction SilentlyContinue)){
- Write-Host "Загружаем Microsoft.Exchange.Management.PowerShell.Admin ..."
- Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
- }
- function GetLogFilesInfo([string]$dirName, [string]$prefix){
- trap {
- Write-Host $_ -ForegroundColor Red
- continue
- }
- 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.LastWriteTime -lt $lastCreateDate){
- $lastCreateDate = $fileInfo.LastWriteTime
- }
- }
- return @($sumsize, $lastCreateDate)
- }
- function GetFileSize($filename){
- trap {
- Write-Host $_ -ForegroundColor Red
- continue
- }
- Write-Host "GetFileSize $filename"
- $fileInfo = New-Object System.IO.FileInfo($filename)
- return $fileInfo.Length
- }
- parse
- $forestObj = GetForest -forestname $forest
- $forestConfDC = $forestObj.RootDomain.FindDomainController(`
- [System.DirectoryServices.ActiveDirectory.LocatorOptions]::WriteableRequired).Name
- Write-Host "Лес "$forestObj.Name
- Write-Host "Контроллер домена "$forestConfDC
- $script:i = 25
- $inc = {
- $script:i += 2
- $script:i
- }
- Write-Progress -Activity "Получаем информацию об организации Exchange..." -Id 1 -Status "Running" -PercentComplete 25
- Write-Host "Получаем информацию об организации Exchange..."
- # organization Info
- $orgConfig = Get-OrganizationConfig -DomainController $forestConfDC
- $ServersCount = (@(Get-ExchangeServer)).Count
- $orgConfig | Add-Member -Name "ServerCount" -MemberType NoteProperty -Value $ServersCount
- $gcMonicer = GetGCRootNCObj -GCServer $forestObj.FindGlobalCatalog().Name
- $mbxs = @(GetObjects2 -root $gcMonicer -filter "(&(objectcategory=user)(mailnickname=*)(homeMDB=*))" -attrs @("cn"))
- $orgConfig | Add-Member -Name "MbxCount" -MemberType NoteProperty -Value $mbxs.Count
- $orgConfig | Add-Member -Name "ForestName" -MemberType NoteProperty -Value $forestObj.name
- Write-Progress -Activity "Получаем информацию о серверах..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о серверах..."
- #serverInfo
- $srvInfo = Get-ExchangeServer -DomainController $forestConfDC | select *, `
- @{Name="MDBCount"; Expression={ (@(Get-MailboxDatabase -Server $_)).Count }}, `
- @{Name="PFDBCount"; Expression={ (@(Get-PublicFolderDatabase -Server $_)).Count }}, `
- @{Name="MbxCount"; Expression={ (@(Get-Mailbox -Server $_ -resultsize unlimited)).Count }},`
- @{Name="DomainName"; Expression={ $_.fqdn.Substring($_.fqdn.IndexOf(".")+1) }}
- Write-Progress -Activity "Получаем информацию о группах хранения..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о группах хранения..."
- #sgInfo
- $sgInfo = Get-StorageGroup -DomainController $forestConfDC | select *, `
- @{Name="MDBCount"; Expression={ (@(Get-MailboxDatabase -StorageGroup $_)).Count }}, `
- @{Name="PFDBCount"; Expression={ (@(Get-PublicFolderDatabase -StorageGroup $_)).Count }}, `
- @{Name="LogSize"; Expression={
- GetLogFilesInfo -dirName ("\\$($_.ServerName)\" + $_.LogFolderPath.ToString().Replace(":","$")) -prefix $_.LogFilePrefix }}
- Write-Progress -Activity "Получаем информацию о БД почтовых ящиков..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о БД почтовых ящиков..."
- #mbxInfo
- $mbxInfo = Get-MailboxDatabase -DomainController $forestConfDC | select *, `
- @{Name="MbxCount"; Expression={ (@(Get-Mailbox -Database $_ -resultsize unlimited)).Count }},`
- @{Name="DatabaseSize2"; Expression={
- GetFileSize -filename ("\\$($_.ServerName)\" + $_.EdbFilePath.ToString().Replace(":","$"))}}
- Write-Progress -Activity "Получаем информацию о БД общих ящиков..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о БД общих ящиков..."
- #pfDBInfo
- $pfDBInfo = Get-PublicFolderDatabase -DomainController $forestConfDC | select *, `
- @{Name="PFCount"; Expression={ (@(Get-PublicFolder -Identity "\" -Server $_.ServerName -Recurse -resultsize unlimited)).Count }}, `
- @{Name="DatabaseSize2"; Expression={
- GetFileSize -filename ("\\$($_.ServerName)\" + $_.EdbFilePath.ToString().Replace(":","$"))}}
- Write-Progress -Activity "Получаем информацию о Accepted domains..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Accepted domains..."
- $recptDomain = Get-AcceptedDomain -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Remote domains..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Remote domains..."
- $RemoteDomain = Get-RemoteDomain -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Send Connectors..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Send Connectors..."
- $sendCons = Get-SendConnector -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Receive Connectors..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Receive Connectors..."
- $recvCons = Get-ReceiveConnector -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Transport Servers..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Transport Servers..."
- $transportServers = Get-TransportServer -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Edge Subscription..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Edge Subscription..."
- $edgeSubscr = Get-EdgeSubscription -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о OWA Virt Dir..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о OWA Virt Dir..."
- $owaDir = Get-OwaVirtualDirectory -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о OutlookAnywhere..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о OutlookAnywhere..."
- $anywhere = Get-OutlookAnywhere -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о ActiveSync VirDir..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о ActiveSync VirDir..."
- $activeSync = Get-ActiveSyncVirtualDirectory -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Autodiscover VirDir..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Autodiscover VirDir..."
- $autodiscvr = Get-AutodiscoverVirtualDirectory -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о OAB VirDir..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о OAB VirDir..."
- $offlinedir = Get-OabVirtualDirectory -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о OAB..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о OAB..."
- $oab = Get-OfflineAddressBook -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Availability Configuration..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Availability Configuration..."
- $AvalConfig = Get-AvailabilityConfig -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Availability Address Space..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Availability Address Space..."
- $AvalNamespace = Get-AvailabilityAddressSpace -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о EWS..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о EWS..."
- $ewsDir = Get-WebServicesVirtualDirectory -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Address List..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Address List..."
- $addrlst = Get-AddressList -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о GAL..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о GAL..."
- $gal = Get-GlobalAddressList -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о серверах CAS..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о серверах CAS..."
- $cas = Get-ClientAccessServer -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о серверах Mailbox..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о серверах Mailbox..."
- $mbxSrv = Get-MailboxServer -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о серверах транспортных правилах..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о серверах транспортных правилах..."
- $transportRules = Get-TransportRule -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о конфигурации POP3..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о конфигурации POP3..."
- $popSettings = Get-PopSettings -DomainController $forestConfDC | select *, `
- @{Name="ServiceStatus"; Expression =
- { (Get-Service -name "MSExchangePop3" -ComputerName $_.Identity.ToString().SubString(0, $_.Identity.ToString().IndexOf("\")) -ErrorAction SilentlyContinue).Status }
- }
- Write-Progress -Activity "Получаем информацию о конфигурации IMAP4..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о конфигурации IMAP4..."
- $imapSettings = Get-ImapSettings -DomainController $forestConfDC | select *, `
- @{Name="ServiceStatus"; Expression =
- { (Get-Service -name "MSExchangeImap4" -ComputerName $_.Identity.ToString().SubString(0, $_.Identity.ToString().IndexOf("\")) -ErrorAction SilentlyContinue).Status }
- }
- Write-Progress -Activity "Получаем информацию о RG-коннеторах..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о RG-коннеторах..."
- $rgCon = Get-RoutingGroupConnector -DomainController $forestConfDC
- Write-Progress -Activity "Получаем информацию о Email Address Policies..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Получаем информацию о Email Address Policies..."
- $AddrPol = Get-EmailAddressPolicy -DomainController $forestConfDC
- Write-Progress -Activity "Сохраняем отчет..." -Id 1 -Status "Running" -PercentComplete (&$inc)
- Write-Host "Сохраняем отчет..."
- $report = New-Object System.Object
- $report | Add-Member -Name "OrgInfo" -MemberType NoteProperty -Value $orgConfig
- $report | Add-Member -Name "ServersInfo" -MemberType NoteProperty -Value $srvInfo
- $report | Add-Member -Name "SGInfo" -MemberType NoteProperty -Value $sgInfo
- $report | Add-Member -Name "MDBInfo" -MemberType NoteProperty -Value $mbxInfo
- $report | Add-Member -Name "PFDBInfo" -MemberType NoteProperty -Value $pfDBInfo
- $report | Add-Member -Name "RcptDomain" -MemberType NoteProperty -Value $recptDomain
- $report | Add-Member -Name "RemoteDomain" -MemberType NoteProperty -Value $RemoteDomain
- $report | Add-Member -Name "SendCon" -MemberType NoteProperty -Value $sendCons
- $report | Add-Member -Name "RecvCon" -MemberType NoteProperty -Value $recvCons
- $report | Add-Member -Name "HubSrv" -MemberType NoteProperty -Value $transportServers
- $report | Add-Member -Name "EdgeSubscr" -MemberType NoteProperty -Value $edgeSubscr
- $report | Add-Member -Name "owaDir" -MemberType NoteProperty -Value $owaDir
- $report | Add-Member -Name "Anywhere" -MemberType NoteProperty -Value $anywhere
- $report | Add-Member -Name "ActiveSync" -MemberType NoteProperty -Value $activeSync
- $report | Add-Member -Name "AutoDiscvr" -MemberType NoteProperty -Value $autodiscvr
- $report | Add-Member -Name "OABDir" -MemberType NoteProperty -Value $offlinedir
- $report | Add-Member -Name "OAB" -MemberType NoteProperty -Value $oab
- $report | Add-Member -Name "AvalConfig" -MemberType NoteProperty -Value $AvalConfig
- $report | Add-Member -Name "AvalSpace" -MemberType NoteProperty -Value $AvalNamespace
- $report | Add-Member -Name "EWS" -MemberType NoteProperty -Value $ewsDir
- $report | Add-Member -Name "AddrList" -MemberType NoteProperty -Value $addrlst
- $report | Add-Member -Name "GAL" -MemberType NoteProperty -Value $gal
- $report | Add-Member -Name "CASSrv" -MemberType NoteProperty -Value $cas
- $report | Add-Member -Name "MbxSrv" -MemberType NoteProperty -Value $mbxSrv
- $report | Add-Member -Name "TransportRules" -MemberType NoteProperty -Value $transportRules
- $report | Add-Member -Name "Pop3Set" -MemberType NoteProperty -Value $popSettings
- $report | Add-Member -Name "Imap4Set" -MemberType NoteProperty -Value $imapSettings
- $report | Add-Member -Name "RGCons" -MemberType NoteProperty -Value $rgCon
- $report | Add-Member -Name "AddressPolicies" -MemberType NoteProperty -Value $AddrPol
- Write-Progress -Activity "Сохраняем отчет..." -Id 1 -Status "Running" -PercentComplete 99
- $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
- Write-Progress -Activity "Сохраняем отчет..." -Id 1 -Status "Running" -PercentComplete 100 -Completed
Advertisement
Add Comment
Please, Sign In to add comment