Check-CalPermission
Wenn Benutzer per Outlook andere Anwender zu Terminen einladen, dann kann Outlook über die Free/Busy-Zeiten (Public Folder) oder die Exchange Web Services (EWS) eine Liste der Frei/Belegt-Zeiten aufbauen und anzeigen.
Der Anwender sieht aber nur die Informationen die der eingeladene Benutzer "frei" gegeben hat. Dazu kann er in Outlook die Rechte auf dem Kalender oder über die Stellvertreter-Einstellungen steuern.
Und was ein Anwender einstellen kann, kann auch falsch sein. Oder durch eine Migration falsch gesetzt worden sein. Entsprechend habe ich schon viele Umgebungen gesehen, in denen "Standard" nicht nur das Recht "Frei/Gebucht-Zeit" hatte, sondern deutlich mehr. Es gab aber auch Fälle, in denen "Standard" gar keine Rechte hatte und der Helpdesk lange auf dem Server oder dem anderen Client gesucht hat, warum die Frei/belegt-Zeiten nicht abgerufen werden konnten.
Check per Skript
Aus dem Grund gibt es das folgende Skript, das einfach von den Postfächern den Status der Rechte von "Standard" ermittelt und ausgibt. Natürlich können Sie das Skript gerne anpassen und z.B.: auch gleich eine "KorrektURLogik" mit einbringen. Knifflig war am Anfang die Ermittlung des korrekten Pfads des Kalenders, der ja in unterschiedlichen Sprachen erscheinen kann. Daher musste das Skript eine Extrarunde über Get-MailboxFolderStatistics gehen.
Achtung
Ich vergleiche hier "Strings" und die sind
leider sprachabhängig. Je nach Exchange Sprache müssen Sie das Skript eventuell anpassen für die
Bezeichnung der Rechte aber sich für den "aclUser".
Auf Deutsch steht dort dann nämlich "Standard"
statt "Default".
# check-calperm.ps1 # # Check und Fix der Kalender Standardrechte param ( [string]$User = "Default", [string]$mailbox = "*" ) # Write-host "Loading Mailboxlist" #$mblist= get-mailbox -resultsize 100 $mblist= get-mailbox $mailbox -resultsize unlimited Write-host " Total Mailboxes" $mblist.count foreach ($mbox in $mblist) { write-host "Processing:"$mbox.alias $calfolder = Get-MailboxFolderStatistics ` -Identity $mbox.alias ` -FolderScope calendar | where {$_.foldertype -eq "Calendar"} $folderpath = ($calfolder.Folderpath).replace("/","\") write-host " Kalenderfolder:" $folderpath if ($calfolder -eq "") { write-host " No Calendar found" -backgroundcolor yellow } else { write-host " Loading non standard Permissions für User Standard für Folder" $folderpath $perm = Get-MailboxFolderPermission ` -identity ($mbox.alias+":"+$folderpath) ` -User $Username $result = ("" | select Mailbox,AccessRights) $result.Mailbox = $mbox.alias if ( $perm -eq $null) { $result.AccessRights = "None" } elseif ($perm.AccessRights -contains "None") { $result.AccessRights = "None" } elseif ($perm.AccessRights -contains "FolderVisible"){ $result.AccessRights = "FolderVisible" } elseif ($perm.AccessRights -contains "AvailabilityOnly"){ $result.AccessRights = "AvailabilityOnly" } elseif ($perm.AccessRights -contains "LimitedDetails"){ $result.AccessRights = "LimitedDetails" } elseif ($perm.AccessRights -contains "Reviewer"){ $result.AccessRights = "AllDetails" # set-MailboxFolderPermission ` # -identity ($mbox.alias+":"+$folderpath) ` # -User standard ` # -AccessRights "AvailabilityOnly" } else { $result.AccessRights = "Custom" } $result } }
Am Ende sehen Sie die 4 kommentierte Zeilen, die dann auch eine "Korrektur" aktivieren können.
Ausgabe
Durch die Ausgabe als "Objekte" mit der Variable $result" gibt die normale PowerShell einfach eine Liste der Mailboxen mit der Angabe zum ACL-Eintrag für "Standard" aus.
Die "Debug-Ausgaben" stören später aber nicht, wenn Sie die STDOUT-Pipeline mit Export-CSV in eine für Excel nutzbare Datei speichern, mit "Where" filtern oder anderweitig weiter verarbeiten wollen.
Weitere Links
- EWS
- Mailboxrechte
- Termine
- Frei/Belegt Zeiten
- TerminFAQ
- Feiertage
- Reportweb
-
Get-MailboxFolderPermission
http://technet.microsoft.com/de-DE/library/dd335061(v=exchg.141).aspx -
Get-MailboxFolderStatistics
http://technet.microsoft.com/de-de/library/aa996762(v=exchg.141).aspx -
Configure the Availability Service für Cross-Forest Topologies
http://technet.microsoft.com/en-us/library/bb125182(v=exchg.141).aspx