Scenario: You want to export hardware inventory and Exchange settings from your Exchange Organization.
Script: You can copy all the script parts and run at once OR run each script part separately depending on what you want to achieve. You could also build on to this script using the same format with different get commands.
#Specify Variables $today = (get-date -f yyyy-MM-dd) $Folder = "C:TempCollection"
#Pull Exchange Server Hardware Inventory $Servers = Get-ExchangeServer $Servers | Export-csv $folder$today-Get-ExchangeServer.csv ($servers).name | Out-File $folder$today-Servers.txt $serverList = "$folder$today-Servers.txt" $outputCSV = "$folder$today-ServerInventory.csv" $scriptpath = $MyInvocation.MyCommand.Path $dir = Split-Path $scriptpath pushd $dir [System.Collections.ArrayList]$sysCollection = New-Object System.Collections.ArrayList($null) foreach ($server in (Get-Content $serverList)) { "Collecting information from $server" $totCores=0 try { [wmi]$sysInfo = get-wmiobject Win32_ComputerSystem -Namespace "rootCIMV2" -ComputerName $server -ErrorAction Stop [wmi]$bios = Get-WmiObject Win32_BIOS -Namespace "rootCIMV2" -computername $server [wmi]$os = Get-WmiObject Win32_OperatingSystem -Namespace "rootCIMV2" -Computername $server #[array]$disks = Get-WmiObject Win32_LogicalDisk -Namespace "rootCIMV2" -Filter DriveType=3 -Computername $server [array]$disks = Get-WmiObject Win32_LogicalDisk -Namespace "rootCIMV2" -Computername $server [array]$procs = Get-WmiObject Win32_Processor -Namespace "rootCIMV2" -Computername $server [array]$mem = Get-WmiObject Win32_PhysicalMemory -Namespace "rootCIMV2" -ComputerName $server [array]$nic = Get-WmiObject Win32_NetworkAdapterConfiguration -Namespace "rootCIMV2" -ComputerName $server | where{$_.IPEnabled -eq "True"} $si = @{ Server = [string]$server Manufacturer = [string]$sysInfo.Manufacturer Model = [string]$sysInfo.Model TotMem = "$([string]([System.Math]::Round($sysInfo.TotalPhysicalMemory/1gb,2))) GB" BiosDesc = [string]$bios.Description BiosVer = [string]$bios.SMBIOSBIOSVersion+"."+$bios.SMBIOSMajorVersion+"."+$bios.SMBIOSMinorVersion BiosSerial = [string]$bios.SerialNumber OSName = [string]$os.Name.Substring(0,$os.Name.IndexOf("|") -1) Arch = [string]$os.OSArchitecture Processors = [string]@($procs).count Cores = [string]$procs[0].NumberOfCores NIC = [string]$nic[0].IPAddress } $disks | foreach-object {$si."Drive$($_.Name -replace ':', '')"="$([string]([System.Math]::Round($_.Size/1gb,2))) GB"} } catch [Exception] { "Error communicating with $server, skipping to next" $si = @{ Server = [string]$server ErrorMessage = [string]$_.Exception.Message ErrorItem = [string]$_.Exception.ItemName } Continue } finally { [void]$sysCollection.Add((New-Object PSObject -Property $si)) } } $sysCollection ` | select-object Server,NIC,TotMem,OSName,Arch,Processors,Cores,Manufacturer,Model,BiosDesc,BiosVer,BiosSerial,DriveA,DriveB,DriveC,DriveD,DriveE,DriveF,DriveG,DriveH,DriveI,DriveJ,DriveK,DriveL,DriveM,DriveN,DriveO,DriveP,DriveQ,DriveR,DriveS,DriveT,DriveU,DriveV,DriveW,DriveX,DriveY,DriveZ,ErrorMessage,ErrorItem ` | sort -Property Server ` | Export-CSV -path $outputCSV -NoTypeInformation
#Export ClientAccess Settings $CASServers = Get-ClientAccessServer $CASServers | %{Get-OWAVirtualDirectory -server $_.name | Export-csv $folder$today-Get-OWAVirtualDirectory.csv -append} $CASServers | %{Get-ECPVirtualDirectory -server $_.name | Export-csv $folder$today-Get-ECPVirtualDirectory.csv -append} $CASServers = Get-ClientAccessServer $CASServers | %{Get-OWAVirtualDirectory -server $_.name | Export-csv $folder$today-Get-OWAVirtualDirectory.csv -append} $CASServers | %{Get-ECPVirtualDirectory -server $_.name | Export-csv $folder$today-Ge$CASServers | %{Get-OABVirtualDirectory -server $_.name | Export-csv $folder$today-Get-OABVirtualDirectory.csv -append} $CASServers | %{Get-MAPIVirtualDirectory -server $_.name | Export-csv $folder$today-Get-MAPIVirtualDirectory.csv -append} $CASServers | %{Get-WebServicesVirtualDirectory -server $_.name | Export-csv $folder$today-Get-ServicesVirtualDirectory.csv -append} $CASServers | %{Get-ActivesyncVirtualDirectory -server $_.name | Export-csv $folder$today-Get-EASVirtualDirectory.csv -append} $CASServers | %{Get-OutlookAnywhere -server $_.name | Export-csv $folder$today-Get-OutlookAnywhere.csv -append}
#Export Database Settings $DB = Get-mailboxdatabase $DB | Export-csv $folder$today-Get-MailboxDatabase.csv -append
#Export DAG Settings $DAG = Get-DatabaseAvailabilityGroup $DAG | Export-csv $folder$today-Get-DatabaseAvailabilityGroup.csv