Microsoft.SystemCenter.WindowsComputer.IPSubnet.DiscoveryProvider (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource System.CommandExecuterDiscoveryDataSource Default

Source Code:

<DataSourceModuleType ID="Microsoft.SystemCenter.WindowsComputer.IPSubnet.DiscoveryProvider" Accessibility="Internal">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IPAddress" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IPSubnet" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PrincipalName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Interval" type="xsd:integer"/>
</Configuration>
<ModuleImplementation>
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="System!System.CommandExecuterDiscoveryDataSource">
<IntervalSeconds>$Config/Interval$</IntervalSeconds>
<ApplicationName>%windir%\System32\cscript.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>$file/WindowsComputerIPSubnetDiscovery2.vbs$ 0 $MPElement$ $Target/Id$ $Config/IPAddress$ $Config/IPSubnet$ $Config/PrincipalName$</CommandLine>
<TimeoutSeconds>300</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>WindowsComputerIPSubnetDiscovery2.vbs</Name>
<Contents><Script>

'*************************************************************************
' Script Name - Windows Computer IP Subnet Discovery
'
' Purpose - Discovers the subnet a computer's network adapter is a member of
'
' Parameters - IPAddress, IPSubnet, PrincipalName
'
' (c) Copyright 2007, Microsoft Corporation, All Rights Reserved
' Proprietary and confidential to Microsoft Corporation
'*************************************************************************

Dim oAPI,oDiscoveryData, oDiscObject, oDiscObject2, oRel

On Error Resume Next

'Variables
Dim oArgs, SourceType, SourceID, strIPAddress, strSubnetMask, strPrincipalName, ManagedEntityId, strSubnet

Set oArgs = WScript.Arguments

SourceType = oArgs(0)
SourceID = oArgs(1)
ManagedEntityId = oArgs(2)
strIPAddress = oArgs(3)

Set oAPI = CreateObject("Mom.ScriptAPI")
If Err &lt;&gt; 0 Then
Wscript.Quit -1
End if

Set oDiscoveryData = oAPI.CreateDiscoveryData (SourceType, SourceID, ManagedEntityId)
If Err &lt;&gt; 0 Then
Wscript.Quit -1
End if

if StrComp(strIPAddress,"0.0.0.0") = 0 then
Call oAPI.Return(oDiscoveryData)
wscript.quit
end if

if oArgs.Count &lt; 6 Then
Call oAPI.Return(oDiscoveryData)
Wscript.Quit -1
End If

strSubnetMask = oArgs(4)
strPrincipalName = oArgs(5)

'calculate the subnet
strSubnet = calculateSubnet(strIPAddress, strSubnetMask)

'Add to the discovery bag
Set oDiscObject= oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.Computer.IPSubnetMembership']$")
oDiscObject.AddProperty "$MPElement[Name='Microsoft.Windows.Computer.IPSubnetMembership']/IPSubnet$", strSubnet
oDiscObject.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", strPrincipalName

call oDiscoveryData.AddInstance(oDiscObject)

Call oAPI.Return(oDiscoveryData)

function calculateSubnet(sIPAddress, sSubnetMask)

Dim ipSplit, maskSplit, ipSubnet, strOctet

ipSplit = Split(sIPAddress,".")
maskSplit = Split(sSubnetMask,".")
ipSubnet = ""

for i = 0 to 3
ipSubnet = ipSubnet &amp; CStr(CByte(ipSplit(i)) AND CByte(maskSplit(i))) &amp; "."
next

' remove the trailing '.'

calculateSubnet = Left(ipSubnet, Len(ipSubnet) - 1)

end function


</Script></Contents>
</File>
</Files>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>