Skip to content

Commit

Permalink
New command: Get-DbaWsfcResourceGroup (dataplat#8474)
Browse files Browse the repository at this point in the history
  • Loading branch information
potatoqualitee authored Aug 6, 2022
1 parent 7ee5759 commit f506887
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 0 deletions.
1 change: 1 addition & 0 deletions dbatools.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@
'Get-DbaWsfcNetworkInterface',
'Get-DbaWsfcNode',
'Get-DbaWsfcResource',
'Get-DbaWsfcResourceGroup',
'Get-DbaWsfcResourceType',
'Get-DbaWsfcRole',
'Get-DbaWsfcSharedVolume',
Expand Down
1 change: 1 addition & 0 deletions dbatools.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -958,6 +958,7 @@ $script:windowsonly = @(
'Get-DbaWsfcNetworkInterface',
'Get-DbaWsfcNode',
'Get-DbaWsfcResource',
'Get-DbaWsfcResourceGroup',
'Get-DbaWsfcResourceType',
'Get-DbaWsfcRole',
'Get-DbaWsfcSharedVolume',
Expand Down
80 changes: 80 additions & 0 deletions functions/Get-DbaWsfcResourceGroup.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
function Get-DbaWsfcResourceGroup {
<#
.SYNOPSIS
Gets information about one or more resource groups in a failover cluster.
.DESCRIPTION
Gets information about one or more resource groups in a failover cluster.
All Windows Server Failover Clustering (Wsfc) commands require local admin on each member node.
.PARAMETER ComputerName
The target cluster name. Can be a node or the cluster name itself.
.PARAMETER Credential
Allows you to login to the cluster using alternative credentials.
.PARAMETER Name
Allows you to login to the cluster using alternative credentials.
.PARAMETER EnableException
By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with "sea of red" exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this "nice by default" feature off and enables you to catch exceptions with your own try/catch.
.NOTES
Tags: WSFC, FCI, WindowsCluster, HA
Author: Chrissy LeMaire (@cl), netnerds.net
Website: https://dbatools.io
Copyright: (c) 2018 by dbatools, licensed under MIT
License: MIT https://opensource.org/licenses/MIT
.LINK
https://dbatools.io/Get-DbaWsfcResourceGroup
.EXAMPLE
PS C:\> Get-DbaWsfcResourceGroup -ComputerName cluster01
Gets resource group information from the failover cluster cluster01
.EXAMPLE
PS C:\> Get-DbaWsfcResourceGroup -ComputerName cluster01 | Select-Object *
Shows all resource values, including the ones not shown in the default view
#>
[CmdletBinding()]
param (
[parameter(ValueFromPipeline)]
[DbaInstanceParameter[]]$ComputerName = $env:COMPUTERNAME,
[PSCredential]$Credential,
[string[]]$Name,
[switch]$EnableException
)
begin {
function Get-ResourceGroupState ($state) {
switch ($state) {
-1 { "Unknown" }
0 { "Online" }
1 { "Offline" }
2 { "Failed" }
default { $state }
}
}
}
process {
foreach ($computer in $computername) {
$cluster = Get-DbaWsfcCluster -ComputerName $computer -Credential $Credential
$resources = Get-DbaCmObject -Computername $computer -Credential $Credential -Namespace root\MSCluster -ClassName MSCluster_ResourceGroup
if ($Name) {
$resources = $resources | Where-Object Name -in $Name
}
foreach ($resource in $resources) {
$resource | Add-Member -Force -NotePropertyName State -NotePropertyValue (Get-ResourceGroupState $resource.State)
$resource | Add-Member -Force -NotePropertyName ClusterName -NotePropertyValue $cluster.Name
$resource | Add-Member -Force -NotePropertyName ClusterFqdn -NotePropertyValue $cluster.Fqdn
$resource | Select-DefaultView -Property ClusterName, ClusterFqdn, Name, State, PersistentState, OwnerNode
}
}
}
}
14 changes: 14 additions & 0 deletions tests/Get-DbaWsfcResourceGroup.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
. "$PSScriptRoot\constants.ps1"

Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object { $_ -notin ('whatif', 'confirm') }
[object[]]$knownParameters = 'ComputerName', 'Credential', 'Name', 'EnableException'
$knownParameters += [System.Management.Automation.PSCmdlet]::CommonParameters
It "Should only contain our specific parameters" {
(@(Compare-Object -ReferenceObject ($knownParameters | Where-Object { $_ }) -DifferenceObject $params).Count ) | Should Be 0
}
}
}

0 comments on commit f506887

Please sign in to comment.