Introduction

Cluster-Aware Updating (CAU) is a Windows Server 2016 feature that automates the process of applying operating system updates to all nodes in a failover cluster while maintaining high availability. CAU orchestrates the patching sequence — draining workloads from each node, applying updates, restarting, bringing the node back online, and waiting for cluster health to be confirmed before moving to the next node. This guide covers setting up and running CAU on a Windows Server 2016 failover cluster.

Prerequisites

Before configuring CAU, ensure the failover cluster and all nodes are healthy:

# Verify cluster health
Get-Cluster | Select-Object Name,Domain
Get-ClusterNode | Select-Object Name,State,NodeWeight
Test-Cluster -Node 'NODE01','NODE02','NODE03' -Include 'Node Configuration'

# Ensure all nodes are running Windows Server 2016
Get-ClusterNode | ForEach-Object {
    Invoke-Command -ComputerName $_.Name -ScriptBlock {
        [System.Environment]::OSVersion.VersionString
    }
}

# Verify WU access (or WSUS connectivity) from all nodes
Get-ClusterNode | ForEach-Object {
    $r = Invoke-Command -ComputerName $_.Name -ScriptBlock {
        Test-NetConnection -ComputerName 'wsus.contoso.com' -Port 8530
    }
    "$($_.Name): $($r.TcpTestSucceeded)"
}

Installing the CAU Feature

# Install Failover Clustering tools with CAU on all cluster nodes
$nodes = @('NODE01','NODE02','NODE03')
foreach ($node in $nodes) {
    Invoke-Command -ComputerName $node -ScriptBlock {
        Install-WindowsFeature FailoverClustering -IncludeManagementTools
        Install-WindowsFeature RSAT-Clustering-AutomationServer
    }
    Write-Host "CAU feature installed on $node"
}

# Install CAU tools on the management workstation
Install-WindowsFeature RSAT-Clustering-AutomationServer

Configuring CAU in Self-Updating Mode

Self-updating mode allows the cluster to update itself on a schedule without external coordination:

# Add the CAU clustered role to the cluster
Add-CauClusterRole -ClusterName 'CLUSTER01' `
    -MaxFailedNodes 1 `
    -MaxRetriesPerNode 3 `
    -CauPluginName 'Microsoft.WindowsUpdatePlugin' `
    -CauPluginArguments @{'IncludeRecommendedUpdates'='True'} `
    -StartDate '2026-05-01' `
    -DaysOfWeek Sunday `
    -WeeksOfMonth @(3) `
    -EnableFirewallRules `
    -Force

# Verify CAU clustered role
Get-CauClusterRole -ClusterName 'CLUSTER01'

Running a Manual CAU Update Run

# Perform a dry run first to preview which updates will be applied
Invoke-CauRun -ClusterName 'CLUSTER01' `
    -CauPluginName 'Microsoft.WindowsUpdatePlugin' `
    -MaxFailedNodes 1 `
    -MaxRetriesPerNode 3 `
    -RequireAllNodesOnline `
    -WarnAfter (New-TimeSpan -Hours 6) `
    -StopAfter (New-TimeSpan -Hours 12) `
    -Force -RunPluginsSerially

# Actual update run (remove -WhatIf for real execution)
Invoke-CauRun -ClusterName 'CLUSTER01' `
    -CauPluginName 'Microsoft.WindowsUpdatePlugin' `
    -MaxFailedNodes 1 `
    -MaxRetriesPerNode 3 `
    -RequireAllNodesOnline -Force

Monitoring CAU Progress

# View real-time CAU run status
Get-CauRun -ClusterName 'CLUSTER01'

# Watch node status during update
Watch-CauRun -ClusterName 'CLUSTER01'

# Review CAU event logs after completion
Get-WinEvent -ComputerName 'NODE01' `
    -LogName 'Microsoft-Windows-ClusterAwareUpdating/Admin' -MaxEvents 50 |
    Select-Object TimeCreated,Id,LevelDisplayName,Message | Format-List

Configuring Pre and Post-Update Scripts

# Pre-update script — notify monitoring system
$preScript = @"
param([string]`$ClusterName, [string]`$NodeName)
Write-Host "Pre-update: Starting maintenance for `$NodeName in `$ClusterName"
# Set monitoring to maintenance mode
Invoke-RestMethod -Uri "http://monitoring.contoso.com/api/maintenance" `
    -Method POST -Body (@{server=`$NodeName; duration=120} | ConvertTo-Json) `
    -ContentType 'application/json'
"@
$preScript | Set-Content 'C:ScriptsCAU-PreUpdate.ps1'

# Register the scripts with the CAU run profile
Set-CauClusterRole -ClusterName 'CLUSTER01' `
    -PreUpdateScript 'C:ScriptsCAU-PreUpdate.ps1' `
    -PostUpdateScript 'C:ScriptsCAU-PostUpdate.ps1'

Summary

Cluster-Aware Updating on Windows Server 2016 removes the manual effort and risk of patching failover cluster nodes. By automating the drain-update-restart cycle with configurable failure thresholds, retry policies, and pre/post-update scripts, CAU ensures patches are applied consistently across all nodes while cluster workloads remain available. Scheduled monthly updates in self-updating mode provide a fully automated, zero-downtime patching pipeline for production failover clusters.