Exchange Mailbox Liste Powershell

Wie schon erwähnt arbeite ich momentan mit der Powershell. Diese bietet ja auch Funktionen um auf den Exchange Server zuzugreifen und z.B. die Mailboxen abzurufen. Das habe ich mit einem Script gemacht, welches eine Liste aller Mailboxen in ein File (.csv) speichert.

Das Script wurde von Ben Lye geschrieben und ich habe es für meine Zwecke abgeändert

Zum Ablauf:

  1. Tabellen Header definieren
  2. For-Schlaufe um alle Mailboxen abzurufen
  3. Sofern die Mailbox vorhanden ist wird ein Objekt erstellt
  4. Falls die Mailbox eine Standard grösse hat, wird diese vom Exchange abgefragt
  5. Informationen in einen String schreiben
  6. String in File schreiben (.csv)

Hier das Script:
$seperator="|"

$outtext = “”
$outtext += “IsResource” + $seperator
$outtext += “IsLinked” + $seperator
$outtext += “IsShared” + $seperator
$outtext += “SamAccountName” + $seperator
$outtext += “ServerName” + $seperator
$outtext += “Quota” + $seperator
$outtext += “Hospital” + $seperator
$outtext += “DisplayName” + $seperator
$outtext += “IsHidden” + $seperator
$outtext += “PrimarySmtpAddress” + $seperator
$outtext += “WhenChanged” + $seperator
$outtext += “WhenCreated” + $seperator
$outtext += “LastLogoffTime” + $seperator
$outtext += “LastLogonTime” + $seperator
$outtext += “ObjectClass” + $seperator
$outtext += “Usage`n”

$i=0

# Exit the script if username is not found

foreach ($mailbox in get-mailbox -resultsize unlimited | Sort-Object DisplayName) {
If ($mailbox -eq $null) {
Write-Host “Error: No mailbox specified” -ForegroundColor “Red”
break
}

# Get the mailbox, break if it’s not found
$mb = $mailbox

# Get the mailbox statistics
$mbstats = Get-MailboxStatistics $mb

# If the mailbox is using the database quotas then read them, otherwise read them from the mailbox
If ($mb.UseDatabaseQuotaDefaults -eq $true) {
$quota = (Get-MailboxDatabase -Identity $mb.Database).ProhibitSendQuota.Value.ToMB()
} else {
$quota = $mb.ProhibitSendQuota.Value.ToMB()
}

# Get the mailbox size and convert it from bytes to megabytes
$size = $mbstats.TotalItemSize.Value.ToMB()

# Write the output
$outtext += [String]$mb.IsResource + $seperator
$outtext += [String]$mb.IsLinked + $seperator
$outtext += [String]$mb.IsShared + $seperator
$outtext += [String]$mb.SamAccountName + $seperator
$outtext += [String]$mb.ServerName + $seperator
$outtext += [String]$quota + $seperator
$outtext += [String]$mb.CustomAttribute10 + $seperator
$outtext += [String]$mb.DisplayName + $seperator
$outtext += [String]$mb.HiddenFromAddressListsEnabled + $seperator
$outtext += [String]$mb.PrimarySmtpAddress + $seperator
$outtext += [String]$mb.WhenChanged.ToString(“dd.MM.yyyy”) + $seperator
$outtext += [String]$mb.WhenCreated.ToString(“dd.MM.yyyy”) + $seperator

if ($mbstats.LastLogoffTime -eq $null){
$outtext += $seperator
}else{
$outtext += [String]$mbstats.LastLogoffTime.ToString(“dd.MM.yyyy”) + $seperator
}
if ($mbstats.LastLogonTime -eq $null){
$outtext += $seperator
}else{
$outtext += [String]$mbstats.LastLogonTime.ToString(“dd.MM.yyyy”) + $seperator
}
$outtext += [String]$mbstats.ObjectClass + $seperator
$outtext += [String]($size/$quota) + “`n”
Write-Host $i “-” $mb.DisplayName
$i++
}

Out-File -FilePath “report.csv” -InputObject $outtext

Write-Host “Mailboxstatistic successfully exported into CSV file!” -ForeGroundColor “Green”