strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next
用这个命令也行:nbtstat -a <cluster name>
cluster res "Cluster IP Address" /priv
/////////////////////////////////////////////////////
vector<wstring> GetCoreClusterIPAddresses()
{
vector<wstring> coreIPAddresses;
wstring coreGroup = GetCoreClusterGroup();
HCLUSTER hCluster = OpenCluster(NULL);
if(hCluster)
{
HGROUP hCoreGroup = OpenClusterGroup(hCluster, coreGroup.c_str());
if(hCoreGroup)
{
DWORD index = 0, type = 0, nameSize = MAX_PATH;
wstring resourceName;
resourceName.resize(MAX_PATH);
HGROUPENUM hGroupEnum = ClusterGroupOpenEnum(hCoreGroup, CLUSTER_GROUP_ENUM_CONTAINS);
if(hGroupEnum)
{
DWORD status = ClusterGroupEnum(hGroupEnum, index, &type, &resourceName[0], &nameSize);
while(ERROR_SUCCESS == status)
{
HRESOURCE hResource = OpenClusterResource(hCluster, &resourceName[0]);
if(hResource)
{
wstring resourceType;
resourceType.resize(MAX_PATH);
DWORD resourceTypeSize = MAX_PATH;
if(ERROR_SUCCESS == ClusterResourceControl(hResource, NULL, CLUSCTL_RESOURCE_GET_RESOURCE_TYPE, NULL, NULL, &resourceType[0], MAX_PATH, &resourceTypeSize))
{
if(_wcsicmp (resourceType.c_str(), L"IP Address") == 0 || _wcsicmp (resourceType.c_str(), L"IPv6 Address") == 0 )
{
wstring privProperties;
privProperties.resize(4096);
DWORD propSize;
if(ERROR_SUCCESS == ClusterResourceControl(hResource, NULL, CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES, NULL, NULL, &privProperties[0], 4096, &propSize))
{
LPWSTR pPropValue = 0;
ResUtilFindSzProperty(&privProperties[0], propSize, L"Address", &pPropValue);
coreIPAddresses.push_back(pPropValue);
if(pPropValue)
LocalFree(pPropValue);
}
}
}
CloseClusterResource(hResource);
}
index++;
nameSize = MAX_PATH;
resourceName.resize(MAX_PATH);
status = ClusterGroupEnum(hGroupEnum, index, &type, &resourceName[0], &nameSize);
}
ClusterGroupCloseEnum(hGroupEnum);
}
CloseClusterGroup(hCoreGroup);
}
CloseCluster(hCluster);
}
return coreIPAddresses;
}
wstring GetCoreClusterGroup()
{
wstring coreGroup;
HCLUSTER hCluster = OpenCluster(NULL);
if(hCluster)
{
HRESOURCE hClusterName = NULL, hClusterIPAddress = NULL, hClusterQuorum = NULL;
if(ERROR_SUCCESS == ResUtilGetCoreClusterResources(hCluster, &hClusterName, &hClusterIPAddress, &hClusterQuorum))
{
coreGroup.resize(MAX_PATH);
DWORD groupSize = MAX_PATH;
GetClusterResourceState(hClusterName, NULL, NULL, &coreGroup[0], &groupSize);
if(hClusterName)
CloseClusterResource(hClusterName);
if(hClusterIPAddress)
CloseClusterResource(hClusterIPAddress);
if(hClusterQuorum)
CloseClusterResource(hClusterQuorum);
}
CloseCluster(hCluster);
}
return coreGroup;
}
获取Windows Cluster IP的VBS脚本和命令(无powershell)
最新推荐文章于 2024-01-23 21:39:10 发布