Enumerating Objects with the Failover Cluster Automation Server
[The Failover Cluster Automation Server is available for use in Windows Server 2008. It may be altered or unavailable in subsequent versions.]
The following example demonstrates a simple use of the <job> tag to separate functionality in a Windows Script Host script. The example consists of two separate files, MyClusterScriptLibrary.vbs and ClusEnum.wsf.
'''''''''''''''''''''''''''''''
'
' MyClusterScriptLibrary.vbs
'
' Contains global data and common functions.
'
'''''''''''''''''''''''''''''''
Option Explicit
Public objArgs, objCluster
Public Function Connect()
'
' Opens a global cluster object. Using Windows Script Host syntax,
' the cluster name or "" must be passed as the first argument.
'
Set objArgs = WScript.Arguments
Set objCluster = CreateObject("MSCluster.Cluster")
objCluster.Open objArgs(0)
End Function
Public Function Disconnect()
'
' Dereferences global objects. Used with Connect.
'
Set objCluster = Nothing
Set objArgs = Nothing
End Function
Public Function GetEnumString(objCollection, strDelimiter)
'
' Returns a delimited string of names from a collection.
' Objects in the collection must support the Name property.
'
Dim objEnum
For Each objEnum in objCollection
GetEnumString = GetEnumString & objEnum.Name & strDelimiter
Next
Set objEnum = Nothing
End Function
<?xml version="1.0" encoding="US-ASCII"?>
<!--==================================================================
; clusenum.wsf (requires MyClusterScriptLibrary.vbs to run!)
;
; Enumerates cluster objects. Each type of object is contained
; within a job identified by the object type. Usage syntax:
;
; cscript //job:[object type] clusenum.wsf [cluster name]
;
; Use "" for the cluster name to specify the local cluster.
;
; Legal object types: group
; network
; network interface
; node
; resource
; resource type
;
; Example: to enumerate the groups in the local cluster, enter
;
; cscript //job:"groups" clusenum.wsf ""
;
===================================================================-->
<package id="clusenum">
<job id="groups">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.ResourceGroups, vbCrLf)
Disconnect
]]>
</script>
</job>
<job id="networks">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.Networks, vbCrLf)
Disconnect
]]>
</script>
</job>
<job id="network interfaces">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.NetInterfaces, vbCrLf)
Disconnect
]]>
</script>
</job>
<job id="nodes">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.Nodes, vbCrLf)
Disconnect
]]>
</script>
</job>
<job id="resources">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.Resources, vbCrLf)
Disconnect
]]>
</script>
</job>
<job id="resource types">
<!-- The following line references the MSCLUS type library. -->
<reference guid="{F2E606E0-2631-11D1-89F1-00A0C90D061E}" version="1.0"/>
<script language="VBScript" src="MyClusterScriptLibrary.vbs"/>
<script language="VBScript">
<![CDATA[
Option Explicit
Connect
WScript.Echo GetEnumString(objCluster.ResourceTypes, vbCrLf)
Disconnect
]]>
</script>
</job>
</package>