Exchange 2019 CU, és SU frissítés
Az alábbiakban bemutatom, hogy lehet az Exchange Cumulative Update (összegző frissítést), és SU-t (bizonsági updatet) szabályosan feltelepíteni. Itt fontos megjegyezni, hogy két tagú DAG (database availability group)-ról eseik szó, ahol nincs third–party SMTP load balancer.
Természetesen .NET Framework függő, hogy a CU telepíthető-e az infrasturktúránkra, például, ha .NET Framework 4.8- as van a szervereken, akkor tudunk frissíteni a legújabb CU 13-as verzió-ra, amennyiben alacsonyabb a verzió akkor ez nem lehetséges, és .NET Framework update is kell. A .NET Framework követelményeknek utána kell mindig nézni, jelen esetben a lenti tesztnél már 4.8 volt fent, és CU 12 ről kezdtem az updatet.
A tesztkörnyezet:
Aktuális Exchange verzió lekérdezése:
Exchange paracskészlet betöltése PowerShell ISE-be:
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Exchange verzió lekérdezése a szervereinkről:
$ExchangeServers = Get-ExchangeServer | Sort-Object Name
ForEach ($Server in $ExchangeServers) {
Invoke-Command -ComputerName $Server.Name -ScriptBlock { Get-Command Exsetup.exe | ForEach-Object { $_.FileversionInfo } }
}

Legfrisebb telepítőkészletek letöltése:
Az internetről, Microsoft -tól le kell tölteni a legfrisebb szoftver-eket:
Legfrisebb CU (egész Exchange 2019 iso-t tartalmazza):
A hozzátartozó legfrisebb SU (security update):
Mindkét szerverre, DAGServer1, és DAGServer2 -re is fel kell másolni, odakészíteni.
Active Directory előkészítése
Meg kell nézni az interneten az adott összegző update AD verzió követelményeit (Microsoft hivatalos oldal):
Az alábbi parancsokkal lehet lekérdezni a három féle verzió számot (Scheme, Forest, Domain):
Exchange Schema Version
$sc = (Get-ADRootDSE).SchemaNamingContext
$ob = "CN=ms-Exch-Schema-Version-Pt," + $sc
Write-Output "RangeUpper: $((Get-ADObject $ob -pr rangeUpper).rangeUpper)"
RangeUpper: 17003
Exchange Object Version (forest)
$cc = (Get-ADRootDSE).ConfigurationNamingContext
$fl = "(objectClas=msExchOrganizationContainer)" # itt objectClass= -t kell írni, a wordpress-emnek nem tetszett így
Write-Output "ObjectVersion (Configuration): $((Get-ADObject -LDAPFilter $fl -SearchBase $cc -pr objectVersion).objectVersion)"
ObjectVersion (Configuration): 16759
Exchange Object Version (domain)
$dc = (Get-ADRootDSE).DefaultNamingContext
$ob = "CN=Microsoft Exchange System Objects," + $dc
Write-Output "ObjectVersion (Default): $((Get-ADObject $ob -pr objectVersion).objectVersion)"
ObjectVersion (Default): 13242
Először az Exchange telepítő-ből az alábbi CMD ben futtatott parancsokkal Enterprise + Scheme admin jogosultságokkal rendelkező rendszergazda felhasználóval frissíteni kell az AD scheme-t (AD objektumok, és azok hivatkozásait tartalmazó adatbázis), Forest, és Domain-t. Abban az esetben, ha a fent vizsgált verzió számok nem felelnek meg pontosan a telepíteni kívánt CU követelményeinek.
Intézőből be kell tölteni a CU-ISO -ját, és a fent tárgyalt rendszergazda user nevében el kell indítani egy CMD ablakot:
(fontos, hogy a betöltött ISO meghajtójára át kell lépni, pl. F:, és onnan kell futtatni az alábbi parancsokat)
setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms_DiagnosticDataON
setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms_DiagnosticDataON
setup.exe /PrepareDomain /IAcceptExchangeServerLicenseTerms_DiagnosticDataON
Amennyiben sikeresen lefut mind három parancs, a fent megjelölt Scheme, Forest, és Domain verziókat le kell kérdezni újra, és ha az megegyezik az adott CU interneten ellenőrzött verziószámaival csak akkor lehet tovább menni!
DAGServer1 (DAG első tagjának előkészítése maintenace mód-hoz)
Server Hub transport (levélforgalom írányításáért felelős) komponens draining módba állítani, és az üzenet átirányítás a másik szerverre:
Set-ServerComponentState -Identity DAGServer1 -Component HubTransport -State Draining -Requester Maintenance
Redirect-Message -Server DAGServer1 -Target DAGServer2
Restart-Service MSExchangeTransport
Maintenance módba állítás, és vizsgálat:
cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.\StartDagServerMaintenance.ps1 -ServerName DAGServer1 -MoveComment Maintenance -PauseClusterNode
Set-ServerComponentState DAGServer1 -Component ServerWideOffline -State Inactive -Requester Maintenance
Get-MailboxServer DAGServer1 | Format-List DatabaseCopyAutoActivationPolicy
Get-Queue
UPGRADE:
Abból a CMD ablakból ahonnan a scheme updatet is futtattuk el kell indítani a frissítést, itt is az ISO meghajtóján a gyökér-ben kell lennünk, pl. F:
Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /Mode:Upgrade

A végén ki kell írnia, hogy sikeresen lefutott (SUCCESSFUL), bő fél óra körübelül mire befejezi (teszt rendszeremben ennyi volt, de környezet függő természetesen).
Security Update telepítése, itt csak next next finish, a végén server restart:
Maintenance módból való kilépés:
cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.\StopDagServerMaintenance.ps1 -serverName DAGServer1
Set-ServerComponentState -Identity DAGServer1 -Component HubTransport -State Active -Requester Maintenance
Set-ServerComponentState DAGServer1 -Component ServerWideOffline -State Active -Requester maintenance
Get-ServerComponentState -id DAGServer1
Nagyon fontos, hogy az 5. sorban levő powershell parancs eredményét ellenőrizzük, mert a komponenseknek Active módba kell visszajönnie, ha ez nem történik meg, nem tudjuk a DAG másik tagján is folytatni a karbantartást.
Itt látható, hogy az összes fő komponens visszajött active-ba, a maintenance módból való kilépés megtörtént.
Tesztelő parancsok:
Get-ClusterNode (on DAG members)
Test-ServiceHealth
Test-MAPIConnectivity
Get-MailboxDatabaseCopyStatus
Test-ReplicationHealth
Látható, hogy a DAG egyes tagja már frisebb mint a kettes:
DAGServer2 (DAG második tagjának előkészítése maintenace mód-hoz):

Karbantartási utáni feladatok:
Adatbázisok újraeleosztása a DAG tagjai között:
cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.\RedistributeActiveDatabases.ps1 -DagName DAGServer1 -BalanceDbsByActivationPreference:$True
Outlook kliens csatlakozások tesztelése, Outlook web access tesztelése, mail flow (levél küldés, fogadás tesztelése), ha van anonymous levélküldés tesztelése telnet -el. Amennyiben hybrid Exchange mailbox migrációk tesztelése felhő, és földi rendszer között oda – vissza. Outlook elérhetőségi információk tesztelése (presence).