LibraryMSCS by Chad Miller 29 months ago (modification of post by Chad Miller view diff)
View followups from Chad Miller | diff | embed code: <script type="text/javascript" src="http://PoshCode.org/embed/2426"></script>download | new post
Although Windows Server 2008 R2/Powershell 2.0 includes a FailoverClusters module, it only works on a machine running cluster service and NOT against Windows 2003/2008 clusters. This script provides a library functions for working with Microsft Cluster Services (MSCS) using the WMI MSCluster* class. Base class properties are extended with additional info from association classes.
- # ------------------------------------------------------------------------
- ### <Script>
- ### <Author>
- ### Chad Miller
- ### </Author>
- ### <Description>
- ### Defines functions for working with Microsoft Cluster Service (MSCS)
- ### </Description>
- ### <Usage>
- ### . ./LibraryMSCS.ps1
- ### </Usage>
- ### </Script>
- # ------------------------------------------------------------------------
- #######################
- function Get-Cluster
- {
- param($cluster)
- gwmi -class "MSCluster_Cluster" -namespace "root\mscluster" -computername $cluster
- } #Get-Cluster
- #######################
- function Get-ClusterName
- {
- param($cluster)
- Get-Cluster $cluster | select -ExpandProperty name
- } #Get-ClusterName
- #######################
- function Get-ClusterNode
- {
- param($cluster)
- gwmi -class MSCluster_Node -namespace "root\mscluster" -computername $cluster | add-member -pass NoteProperty Cluster $cluster
- } #Get-ClusterNode
- #######################
- function Get-ClusterSQLVirtual
- {
- param($cluster)
- gwmi -class "MSCluster_Resource" -namespace "root\mscluster" -computername $cluster | where {$_.type -eq "SQL Server"} | Select @{n='Cluster';e={$cluster}}, Name, State, @{n='VirtualServerName';e={$_.PrivateProperties.VirtualServerName}}, @{n='InstanceName';e={$_.PrivateProperties.InstanceName}}, `
- @{n='ServerInstance';e={("{0}\{1}" -f $_.PrivateProperties.VirtualServerName,$_.PrivateProperties.InstanceName).TrimEnd('\')}}, `
- @{n='Node';e={$(gwmi -namespace "root\mscluster" -computerName $cluster -query "ASSOCIATORS OF {MSCluster_Resource.Name='$($_.Name)'} WHERE AssocClass = MSCluster_NodeToActiveResource" | Select -ExpandProperty Name)}}
- } #Get-ClusterSQLVirtual
- #######################
- function Get-ClusterNetworkName
- {
- param($cluster)
- gwmi -class "MSCluster_Resource" -namespace "root\mscluster" -computername $cluster | where {$_.type -eq "Network Name"} | Select @{n='Cluster';e={$cluster}}, Name, State, @{n='NetworkName';e={$_.PrivateProperties.Name}}, `
- @{n='Node';e={$(gwmi -namespace "root\mscluster" -computerName $cluster -query "ASSOCIATORS OF {MSCluster_Resource.Name='$($_.Name)'} WHERE AssocClass = MSCluster_NodeToActiveResource" | Select -ExpandProperty Name)}}
- } #Get-ClusterNetworkName
- #######################
- function Get-ClusterResource
- {
- param($cluster)
- gwmi -ComputerName $cluster -Namespace "root\mscluster" -Class MSCluster_Resource | add-member -pass NoteProperty Cluster $cluster |
- add-member -pass ScriptProperty Node `
- { gwmi -namespace "root\mscluster" -computerName $this.Cluster -query "ASSOCIATORS OF {MSCluster_Resource.Name='$($this.Name)'} WHERE AssocClass = MSCluster_NodeToActiveResource" | Select -ExpandProperty Name } |
- add-member -pass ScriptProperty Group `
- { gwmi -ComputerName $this.Cluster -Namespace "root\mscluster" -query "ASSOCIATORS OF {MSCluster_Resource.Name='$($this.Name)'} WHERE AssocClass = MSCluster_ResourceGroupToResource" | Select -ExpandProperty Name }
- } #Get-ClusterResource
- #######################
- function Get-ClusterGroup
- {
- param($cluster)
- gwmi -class MSCluster_ResourceGroup -namespace "root\mscluster" -computername $cluster | add-member -pass NoteProperty Cluster $cluster |
- add-member -pass ScriptProperty Node `
- { gwmi -namespace "root\mscluster" -computerName $this.Cluster -query "ASSOCIATORS OF {MSCluster_ResourceGroup.Name='$($this.Name)'} WHERE AssocClass = MSCluster_NodeToActiveGroup" | Select -ExpandProperty Name } |
- add-member -pass ScriptProperty PreferredNodes `
- { @(,(gwmi -namespace "root\mscluster" -computerName $this.Cluster -query "ASSOCIATORS OF {MSCluster_ResourceGroup.Name='$($this.Name)'} WHERE AssocClass = MSCluster_ResourceGroupToPreferredNode" | Select -ExpandProperty Name)) }
- } #Get-ClusterGroup
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository