22description : Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.
33external help file : Microsoft.FailoverClusters.PowerShell.dll-Help.xml
44Module Name : FailoverClusters
5- ms.date : 11/23/2022
5+ ms.date : 07/18/2025
66online version : https://learn.microsoft.com/powershell/module/failoverclusters/update-clusterfunctionallevel?view=windowsserver2025-ps&wt.mc_id=ps-gethelp
77schema : 2.0.0
88title : Update-ClusterFunctionalLevel
@@ -26,34 +26,18 @@ The `Update-ClusterFunctionalLevel` cmdlet updates the functional level of a mix
2626cluster. You can update the cluster after all nodes have been updated.
2727
2828Starting with Windows Server 2016, you can add a node that runs a more recent version of the Windows
29- operating system into a cluster of nodes that run a previous version of the Windows operating
30- system. To add a cluster node, use the ` Add-ClusterNode ` cmdlet.
29+ operating system (OS) into a cluster of nodes that run a previous version of the Windows OS.
3130
32- After you add a node that runs a different version of the Windows operating system , the cluster
33- becomes a mixed-version cluster. You can implement a mixed-version cluster to continue to run while
34- you upgrade the operating system on each node in the cluster.
31+ After you add a node that runs a different version of the Windows OS , the cluster becomes a
32+ mixed-version cluster. You can implement a mixed-version cluster to continue to run while you
33+ upgrade the OS on each node in the cluster.
3534
3635We recommend that you upgrade all nodes in the cluster within a month. We don't recommend using a
3736mixed-version cluster permanently.
3837
39- You can use this cmdlet to support a rolling operating system upgrade for a cluster. If you use
40- cluster that runs Hyper-V in which all the nodes run Windows Server 2012 R2, you can upgrade the
41- nodes of that cluster without downtime for your virtual machines.
42-
43- First, drain one cluster node by specifying the ** Drain** parameter of the ` Suspend-ClusterNode `
44- cmdlet. This cmdlet causes all virtual machines to live-migrate to one of the other hosts.
45-
46- Next, remove the host from the cluster by using the ` Remove-ClusterNode ` cmdlet.
47-
48- Next, install a new version of the operating system. Don't perform an upgrade or in-place
49- installation.
50-
51- Next, add the Hyper-V role and the ** Failover Clustering** feature by using the
52- ` Install-WindowsFeature ` cmdlet. For more information, type ` Get-Help Install-WindowsFeature ` .
53-
54- Finally, add the node into the cluster by using the ` Add-ClusterNode ` cmdlet.
55-
56- Repeat these steps for each node of the cluster.
38+ You can use this cmdlet to support a rolling OS upgrade for a cluster. If you use a cluster that
39+ runs Hyper-V in which all the nodes run Windows Server 2012 R2, you can upgrade the nodes of that
40+ cluster without downtime for your virtual machines.
5741
5842## EXAMPLES
5943
@@ -64,7 +48,7 @@ Update-ClusterFunctionalLevel -WhatIf
6448```
6549
6650This command tests whether an update would finish successfully. Because the command includes the
67- ** WhatIf** common parameter, the command doesn't perform the update.
51+ ** WhatIf** parameter, the command doesn't perform the update.
6852
6953### Example 2: Update a cluster functional level
7054
@@ -75,12 +59,39 @@ Update-ClusterFunctionalLevel -Cluster "cluster_17"
7559This command updates the cluster functional level of the cluster named ` cluster_17 ` . All of the
7660nodes of this cluster must already be updated before you run this command.
7761
62+ ### Example 3: Rolling OS upgrade of a cluster
63+
64+ First, drain one cluster node by specifying the ** Drain** parameter of the ` Suspend-ClusterNode `
65+ cmdlet. This cmdlet causes all virtual machines to live-migrate to one of the other hosts.
66+
67+ Next, remove the host from the cluster by using the ` Remove-ClusterNode ` cmdlet.
68+
69+ Next, perform an in-place upgrade to install the new version of the OS. Note that a cluster can only
70+ be upgraded one OS version at a time, for example:
71+
72+ - Windows Server 2012 R2 to Windows Server 2016
73+ - Windows Server 2016 to Windows Server 2019
74+ - Windows Server 2019 to Windows Server 2022
75+ - Windows Server 2022 to Windows Server 2025
76+
77+ Next, add the ** Hyper-V** role and the ** Failover Clustering** feature, if not already installed, by
78+ running the following command:
79+
80+ ``` powershell
81+ Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
82+ Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
83+ ```
84+
85+ Finally, add the node into the cluster by using the ` Add-ClusterNode ` cmdlet.
86+
87+ Repeat these steps for each node in the cluster.
88+
7889## PARAMETERS
7990
8091### -Cluster
8192
8293Specifies the name of the cluster on which to run this cmdlet. If the input for this parameter is
83- ` . ` or it is omitted, then the cmdlet runs on the local cluster.
94+ ` . ` or it's omitted, then the cmdlet runs on the local cluster.
8495
8596``` yaml
8697Type : String
@@ -164,13 +175,13 @@ This cmdlet returns a **Cluster**. This cmdlet updates the functional level of t
164175
165176## NOTES
166177
167- * This cmdlet performs a one-time, one-way transformation of the cluster functional level. You
168- cannot lower this level.
178+ Once you update the cluster functional level using this cmdlet, the change is permanent and can't be
179+ reverted to a previous level.
169180
170181## RELATED LINKS
171182
172- [Add-ClusterNode](./Add-ClusterNode .md)
183+ [Add-ClusterNode](add-clusternode .md)
173184
174- [Suspend-ClusterNode](./Suspend-ClusterNode .md)
185+ [Suspend-ClusterNode](suspend-clusternode .md)
175186
176- [Remove-ClusterNode](./Remove-ClusterNode .md)
187+ [Remove-ClusterNode](remove-clusternode .md)
0 commit comments