PowerShell for Failover Clustering: Getting Started
Published Mar 15 2019 01:38 PM 471 Views
First published on MSDN on May 21, 2009

Hi Cluster Fans,

Amongst the long list of features that is being added in Windows Server R2, Clustering team is also providing a set of PowerShell cmdlets (“command-lets”) to manage your Failover Cluster.  Hopefully this is not news for most cluster administrators as we have publishing information on the blog and in our webcasts .  We have written a guide for using PowerShell in the Beta release and will add additional information shortly for the RC release: PowerShell for Failover Clustering in Windows Server 2008 R2 .

Cluster PowerShell cmdlets have come a long way from Beta to RC.  There have been quite a few changes in some of the cmdlets, cmdlet names and parameter names.  These changes have been made to improve stability, consistency among cmdlets and to ensure that they are self-discoverable.

Naming Convention

All Cluster cmdlets adhere to the naming convention guide line set by the PowerShell Team.  Every cmdlet can be broke in two parts, a verb and a noun .

While designing the names of these cmdlets, we took action oriented approach.  What I mean is, all our cmdlets corresponds to an action that can be performed on a cluster object.  This should give administrators a jump start with using clustering cmdlets to reduce the learning curve.


Below is a table that lists all the verbs used by cluster cmdlets with an explanation.  The table does not detail the cmdlets.  The Idea is to help familiarize yourself with the verbs and that should help a user discover the right cmdlets for the operation.




The verb is self explanatory.   All the cmdlets that start with the verb Add would add the noun to the Cluster.  For example, Add-ClusterDisk, would add Disks to the cluster, Add-ClusterGroup would add a group to the cluster.


We have only one cmdlet that has the Block verb and that is Block-ClusterAccess.  This cmdlet is used to manage user permissions and block would deny permissions on the cluster.


Cmdlets starting with Clear should help an administrator recover or re-claim a lost node or disk due to incomplete cleanup or information still lingering on them due to incomplete cleanup.


This should be the simplest and easily discoverable.  The Get-Cluster* cmdlets are to query either individual or all cluster object. For example, Get-ClusterNode is equivalent to Cluster.exe Node, Get-ClusterGroup is equivalent to Cluster.exe Group.


Cmdlets starting with Grant are among the set of cmdlets available to manage user permissions on Cluster.  This can be paired up with Block .


If you need to perform a Move operation on a cluster object, you need to be looking at cmdlets that start with Move to update the location of a cluster resource or group.


There is only one cmdlet that start with New and that is New-Cluster used to create a cluster.


Cmdlets starting with Remove should help you deletedestroy a cluster object that you do not need.  For example, Remove-ClusterGroup, will delete a group.  Remove-Cluster should destroy the cluster.


We have a cmdlet Repair-ClusterShareVolume that would enable us to Run ChkDisk and Defrag on a CSV Volume.  This cmdlet needs to be run on a cluster node.


Any cluster object that can be suspended (paused) can be resumed using Resume-Cluster* cmdlets.


This verb is not as obvious and a little harder to understand, but not really if you continue reading  :).

Set-Cluster* cmdlets were introduced to make some non-trivial tasks trivial, for example, setting values of cluster object parameter ( private properties), setting Group preferred owner list, or resource owner list.


Cmdlets starting with Start are equivalent to Online or bringing a cluster resource up.  For example, Start-ClusterResource, Start-ClusterGroup, Start-Cluster, Start-ClusterNode.


Stop is equivalent to Offline.


After knowing about Resume , you can guess that Suspend is used to pause a resource.


Some interesting and more common cmdlets start with Test verb.

Version history
Last update:
‎Mar 15 2019 01:38 PM
Updated by: