Exchange 2016 DAG: Server aus den Wartungsmodus (Maintenance) per Powershell nehmen
Problem:
Auch beim beenden des Maintenance-Modus wollte ich das ganze Skripten und standardisieren.
Lösung:
Im Endeffekt arbeitet das PowerShell alle vorherigen Befehle in umgekehrter Reihenfolge ab, um den Server wieder sauber online zu nehmen. Ich schwenke die Datenbanken NICHT automatisch zurück sondern überlasse es der automatischen PreferenceMoveFrequency die Datenbanken wieder zurückzuschwingen (Default: 1 Stunde).
Man kann die PreferenceMoveFrequency abfragen mit folgenden Befehl:
Theoretisch kann man diese auch anpassen oder mit einer Time von "00:00:00" deaktivieren.
Hier mein Skript zum Beenden des Wartungs-Modus (Maintenance). Am Ende des Skripts gebe ich noch einige Prüfroutinen aus, um zu sehen, dass alle Dienste und Komponenten wieder korrekt laufen - das ist aber noch ausbaufähig.
Auch beim beenden des Maintenance-Modus wollte ich das ganze Skripten und standardisieren.
Lösung:
Im Endeffekt arbeitet das PowerShell alle vorherigen Befehle in umgekehrter Reihenfolge ab, um den Server wieder sauber online zu nehmen. Ich schwenke die Datenbanken NICHT automatisch zurück sondern überlasse es der automatischen PreferenceMoveFrequency die Datenbanken wieder zurückzuschwingen (Default: 1 Stunde).
Man kann die PreferenceMoveFrequency abfragen mit folgenden Befehl:
Get-DatabaseAvailabilityGroup | Format-Table Name, Preference*
Theoretisch kann man diese auch anpassen oder mit einer Time von "00:00:00" deaktivieren.
Hier mein Skript zum Beenden des Wartungs-Modus (Maintenance). Am Ende des Skripts gebe ich noch einige Prüfroutinen aus, um zu sehen, dass alle Dienste und Komponenten wieder korrekt laufen - das ist aber noch ausbaufähig.
Write-Host "Server-Komponeten werden aktiv gesetzt" Set-ServerComponentState $env:ComputerName –Component ServerWideOffline –State Active –Requester Maintenance # ClusterNode wieder UP setzen Write-Host "ClusterNode wird online genommen" Resume-ClusterNode –Name $env:ComputerName # Mailbox-Datenbank wier online setzen und für Rückschwenk aktivieren # KEIN aktives zurückschwenken Write-Host "Mailboxdatenbanken werden wieder aktiv genommen" Write-Host "Es wird keine Datenbank aktiv zurückgenommen" Set-MailboxServer $env:ComputerName –DatabaseCopyAutoActivationPolicy Unrestricted Set-MailboxServer $env:ComputerName –DatabaseCopyActivationDisabledAndMoveNow $false # Hub-Transport wieder ACTIVE setzen - MAils werden wieder angenommen Write-Host "Hub-Transport wird online genommen - Mails werden wieder angenommen" Set-ServerComponentState $env:ComputerName –Component HubTransport –State Active –Requester Maintenance # Aktivierung Defender und PS-Restriction-Policy Write-Host "Defender und PS-Policy werden wieder aktiviert" Set-MpPreference -DisableRealtimeMonitoring $false Set-ExecutionPolicy RemoteSigned -force # Prüfen ob immer noch imWartungsmodus if ((Get-ClusterNode -Name $env:Computername).state -eq "Up") { Write-Host "Server $env:ComputerName befindet sich im NORMALMODUS" -ForegroundColor Green } Else { Write-Host "Server $env:ComputerName befindet sich immer noch im WARTUNGSMODUS" -ForegroundColor Red Write-Host "Bitte prüfen Sie die Dienste und Eventlogs auf Fehler" -ForegroundColor Red } # Prüfroutinen für Dienste und Komponenten - jeweils mit Pause für Prüfung Write-Host "###########################################################" -ForegroundColor Yellow Write-Host "####### Ausgabe aller wichtigen Dienste zur Prüfung #######" -ForegroundColor Yellow Write-Host "###########################################################" -ForegroundColor Yellow write-host "`n" Write-Host "--- ClusterNode muss UP sein ---" -ForegroundColor Yellow Get-ClusterNode –Name $env:ComputerName Pause Write-Host "--- Test-ServiceHealth ---" -ForegroundColor Yellow Write-Host "Alle Rollen müssen RequiredServicesRunning auf TRUE stehen" -ForegroundColor Yellow write-host "`n" Test-ServiceHealth | ft -AutoSize Pause Write-Host "--- Überprüfen aller Server-Komponenten ---" -ForegroundColor Yellow Write-Host "Alle Komponenten ACTIVE bis auf ForwardSyncDaemon und ProvisioningRps" -ForegroundColor Yellow write-host "`n" Get-ServerComponentState $env:ComputerName | where {$_.State -ne "Active"} | ft PAuse Write-Host "Anzeigen aller Datenbanken" -ForegroundColor Yellow write-host "`n" Get-MailboxDatabaseCopyStatus -Server $env:ComputerName | ft Write-Host "Fertig!" -ForegroundColor Green