Das Skript sucht nach Mailboxen, deren Kalender-Konfiguration nicht in der Westeuropäischen Zeitzone liegt und deren erste Kalenderwoche nicht der deutschen ISO-Norm entspricht und ändert die Einstellungen auf die deutschen Standard-Werte.
<# Skript: Fix-CalendarSettings.ps1 Autor: Henning Löser Version: 1.1 Datum: 20.12.2018 Funktion: - Bei der Neuanlage von Mailboxen werden die Kalenderwochen nach amerikanischer Norm angelegt (Nicht ISO 8601). - Das Standard-Datum steht auf "Pacific Standard Time" und muss auf "W. Europe Standard Time" geändert werden. - Durch das Ändern der Zeitzone veschiebt sich die "WorkingHoursEndTime" in den folgenden Tag und damit vor die "WorkingHoursStartTime", was zu Fehlern bei der Objektverwaltung führt. Die Zeiten werden auf 8 und 17 Uhr in der neuen Zeitzone festgelegt Das Skript sucht nach diesen Einstellungen und ändert sie auf den deutschen Standard. Nicht zu verarbeitende Mailboxen unter "$Skips" eintragen. Das ist evtl. für Postfächer von Personen im Ausland interessant. #> # Zu übespringende Mailboxen # Format: $Skips = @("samaccountname1","samaccountname2","samaccountname3") $Skips = @("p.larkworthy.anke") # Logging einschalten $logpath="C:\ProgramData\Skripte\log\Fix-CalendarSettings" if (!(Test-path $logpath)) { New-Item -ItemType directory $logpath } Start-Transcript -LiteralPath "$logpath\$(Get-Date -Format yyyMMdd).log" -Append # Alte Logfiles löschen $MaxAge="90" # Tage get-childitem -Path $logpath | where-object {$_.lastwritetime -lt (get-date).addDays(-$MaxAge)} | Foreach-Object { remove-item $_.FullName } # Powershell Exchange-SnapIn importieren Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 # Alle Mailboxen abfragen $Mbxs=Get-Mailbox -ResultSize unlimited # Mailboxen ausschließen, die nicht verarbeitet werden sollen foreach ($Skip in $Skips) { if ($mbxs.samaccountname -contains $Skip) { Write-Host "$Skip`: Kalendereinstellung wird nicht geändert" $Mbxs = $mbxs | Where-Object samaccountname -NotLike $Skip } Else { Write-Host "$Skip`: Auszulassende Mailbox nicht gefunden" -ForegroundColor Red } } $Mbxs = $Mbxs | Sort-Object samaccountname foreach ($Mbx in $Mbxs) { # Kalenderwochen auf ISO ändern if ((Get-MailboxCalendarConfiguration $Mbx.Name).firstweekofyear -notlike "FirstFourDayWeek") { Write-Host "$($Mbx.name)`: Ändere Kalendereinstellung zu `"FirstFourDayWeek`"" -ForegroundColor Green Set-MailboxCalendarConfiguration -Identity $($Mbx.name) -FirstWeekOfYear FirstFourDayWeek } Else { Write-Host "$($Mbx.name)`: Kalendereinstellung bereits korrekt, keine Anpassung vorgenommen" -ForegroundColor Yellow } # Timezone auf "W. Europe Standard Time" ändern und Arbeitszeit auf 08 bis 17 Uhr verschieben $tz=($Mbx | Get-MailboxCalendarConfiguration | select-object WorkingHoursTimeZone).WorkingHoursTimeZone.ExTimeZone.id if ($tz -notlike "W. Europe Standard Time") { Write-Host "$($Mbx.samaccountname)`: Timzone $tz" $Mbx | Set-MailboxCalendarConfiguration -WorkingHoursTimeZone "W. Europe Standard Time" -WorkingHoursStartTime 08:00:00 -WorkingHoursEndTime 17:00:00 } Else { Write-Host "$($mbx.samaccountname)`: Timzone $tz" -ForegroundColor Green } } Stop-Transcript