Windows Server 2012 叢集資源群組探索探查

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

探索 Windows Server 2012 叢集資源群組特定的內容。

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.ScriptDiscoveryProbe Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Timeoutint$Config/Timeout$逾時 (秒)

Source Code:

<ProbeActionModuleType ID="Microsoft.Windows.6.2.Cluster.ResourceGroups.Discovery.ScriptProbe" Accessibility="Public" RunAs="Cluster!Microsoft.Windows.Cluster.PrivilegedAccount" Batching="false" PassThrough="false">
<Configuration>
<xsd:element minOccurs="1" name="DiscoverySourceId" type="xsd:string"/>
<xsd:element minOccurs="1" name="ClusterName" type="xsd:string"/>
<xsd:element 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.ScriptDiscoveryProbe">
<ScriptName>DiscoverWindows2012ResourceGroups.vbs</ScriptName>
<Arguments>$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$ $Config/ClusterName$ $Config/DiscoverySourceId$ $Target/Id$</Arguments>
<ScriptBody><Script>
'Copyright (c) Microsoft Corporation. All rights reserved.
Option Explicit
SetLocale("en-us")

Dim healthServiceName
Dim clusterName
Dim groups
Dim wmi
Dim sourceId
Dim managedEntityId
Dim oAPI, oDiscoveryData, group, coreClustGroupInst, availableStorageGroupInst

healthServiceName = WScript.Arguments(0)
clusterName = WScript.Arguments(1)
sourceId = WScript.Arguments(2)
managedEntityId = WScript.Arguments(3)

Set wmi = GetObject("winmgmts:\\" + healthServiceName &amp; "\root\mscluster")
Set groups = wmi.ExecQuery("SELECT Name FROM MSCluster_ResourceGroup")

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oDiscoveryData = oAPI.CreateDiscoveryData(0, sourceId, managedEntityId)

For Each group in groups

Dim groupType

'This method is only available on Windows Server 2012
groupType = group.ExecMethod_("GetGroupType").ReturnValue

If groupType = 1 Then

Set coreClustGroupInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.6.2.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 = 2 then

Set availableStorageGroupInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.6.2.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

End If
Next

oAPI.Return(oDiscoveryData)
</Script></ScriptBody>
<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>