Anrop för identifiering av Windows Server 2016- och 1709+-klusterresursgrupper

Microsoft.Windows.10.0.Cluster.ResourceGroups.Discovery.ScriptProbe (ProbeActionModuleType)

Identifierar egenskaper som är specifika för en resursgrupp i Windows Server 2016- och 1709+-kluster.

Element properties:

TypeProbeActionModuleType
IsolationAny
AccessibilityPublic
RunAsMicrosoft.Windows.Cluster.PrivilegedAccount
InputTypeSystem.BaseData
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
Script ProbeAction Microsoft.Windows.PowerShellDiscoveryProbe Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Timeoutint$Config/Timeout$Timeout(sek)

Source Code:

<ProbeActionModuleType ID="Microsoft.Windows.10.0.Cluster.ResourceGroups.Discovery.ScriptProbe" Accessibility="Public" RunAs="Cluster!Microsoft.Windows.Cluster.PrivilegedAccount" Batching="false" PassThrough="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="DiscoverySourceId" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="ClusterName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Timeout" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Timeout" Selector="$Config/Timeout$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<ProbeAction ID="Script" TypeID="Windows!Microsoft.Windows.PowerShellDiscoveryProbe">
<ScriptName>Discover.Windows.10.0.ResourceGroups.ps1</ScriptName>
<ScriptBody><Script>param($healthServiceName, $clusterName, $sourceId, $managedEntityId)
#Copyright (c) Microsoft Corporation. All rights reserved.

try{
$groups = Get-CimInstance -Computer $healthServiceName -NameSpace 'root\mscluster' -Query "SELECT Name FROM MSCluster_ResourceGroup" -ErrorAction Stop
}catch{
import-module cimcmdlets
$groups = Get-CimInstance -Computer $healthServiceName -NameSpace 'root\mscluster' -Query "SELECT Name FROM MSCluster_ResourceGroup" -ErrorAction Stop
}
$oAPI = new-object -comobject MOM.ScriptAPI
$oDiscoveryData = $oAPI.CreateDiscoveryData(0, $sourceId, $managedEntityId)

ForEach($group in $groups)
{
#This method is only available on Windows Server 2012
try{
$method =invoke-CimMethod -InputObject $group -MethodName GetGroupType -ErrorAction Stop
}catch{
import-module cimcmdlets
$method =invoke-CimMethod -InputObject $group -MethodName GetGroupType -ErrorAction Stop
}
$groupType = $method.ReturnValue

If($groupType -eq 1)
{
$coreClustGroupInst = $oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.10.0.Cluster.CoreClusterGroup']$")
$coreClustGroupInst.AddProperty("$MPElement[Name='ClusLibrary!Microsoft.Windows.Cluster.Component']/ClusterName$",$clusterName);
$coreClustGroupInst.AddProperty("$MPElement[Name='ClusLibrary!Microsoft.Windows.Cluster.Component']/ObjectName$",$group.Name);
$oDiscoveryData.AddInstance($coreClustGroupInst);
}ElseIf($groupType -eq 2){
$availableStorageGroupInst = $oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.10.0.Cluster.AvailableStorageGroup']$")
$availableStorageGroupInst.AddProperty("$MPElement[Name='ClusLibrary!Microsoft.Windows.Cluster.Component']/ClusterName$", $clusterName);
$availableStorageGroupInst.AddProperty("$MPElement[Name='ClusLibrary!Microsoft.Windows.Cluster.Component']/ObjectName$", $group.Name);
$oDiscoveryData.AddInstance($availableStorageGroupInst)
}
}
$oDiscoveryData</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>healthServiceName</Name>
<Value>$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>clusterName</Name>
<Value>$Config/ClusterName$</Value>
</Parameter>
<Parameter>
<Name>sourceId</Name>
<Value>$Config/DiscoverySourceId$</Value>
</Parameter>
<Parameter>
<Name>managedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>$Config/Timeout$</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="Script"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
<InputType>System!System.BaseData</InputType>
</ProbeActionModuleType>