Skip to content

Commit 0f08c87

Browse files
m365-skilling-repo-management[bot]Xelu86sdwheeler
authored
[AutoPublish] main to live - 07/18 13:33 PDT | 07/19 02:03 IST (#4030)
* Update * Move code in DESCRIPTION to an Example (#4031) --------- Co-authored-by: Xelu86 <[email protected]> Co-authored-by: Xelu86 <[email protected]> Co-authored-by: Sean Wheeler <[email protected]>
1 parent ada6488 commit 0f08c87

File tree

1 file changed

+42
-31
lines changed

1 file changed

+42
-31
lines changed

docset/winserver2025-ps/FailoverClusters/Update-ClusterFunctionalLevel.md

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
description: Use this topic to help manage Windows and Windows Server technologies with Windows PowerShell.
33
external help file: Microsoft.FailoverClusters.PowerShell.dll-Help.xml
44
Module Name: FailoverClusters
5-
ms.date: 11/23/2022
5+
ms.date: 07/18/2025
66
online version: https://learn.microsoft.com/powershell/module/failoverclusters/update-clusterfunctionallevel?view=windowsserver2025-ps&wt.mc_id=ps-gethelp
77
schema: 2.0.0
88
title: Update-ClusterFunctionalLevel
@@ -26,34 +26,18 @@ The `Update-ClusterFunctionalLevel` cmdlet updates the functional level of a mix
2626
cluster. You can update the cluster after all nodes have been updated.
2727

2828
Starting 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

3635
We recommend that you upgrade all nodes in the cluster within a month. We don't recommend using a
3736
mixed-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

6650
This 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"
7559
This command updates the cluster functional level of the cluster named `cluster_17`. All of the
7660
nodes 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

8293
Specifies 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
8697
Type: 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

Comments
 (0)