Benutzer-Werkzeuge

Webseiten-Werkzeuge


powershell:ad:fix-calendarsettings

Fix-CalendarSettings.ps1

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.

Das Skript

Fix-CalendarSettings.ps1
<#
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
powershell/ad/fix-calendarsettings.txt · Zuletzt geändert: 2024/05/27 08:36 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki