License File Discovery datasource

TheBackbone.SMP04.License.Discovery.DS (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
TheBackbone.SMP04.License.Discovery.DS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Frequencyint$Config/Frequency$FrequencySpecifies the frequency to run the discovery
Debugbool$Config/Debug$DebugEnables the debug option in the discovery script

Source Code:

<DataSourceModuleType ID="TheBackbone.SMP04.License.Discovery.DS" Accessibility="Public">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Frequency" minOccurs="1" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Debug" minOccurs="0" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Frequency" Selector="$Config/Frequency$" ParameterType="int"/>
<OverrideableParameter ID="Debug" Selector="$Config/Debug$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="TheBackbone.SMP04.License.Discovery.DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/Frequency$</IntervalSeconds>
<SyncTime/>
<ScriptName>TheBackbone.SMP04.License.Discovery</ScriptName>
<ScriptBody><Script>param($Element, $TargetId, $LicenseFile, $PrincipalName, $Debug)

function Debug ($eventId, $Message)
{
if($Debug)
{
$oAPI.LogScriptEvent("TheBackbone.SMP04.License.Discovery.ps1", $eventId, 0, $Message)
}
}

Debug 1050 "Script Started"

# Get access to the scripting API
$oAPI = new-object -comObject "MOM.ScriptAPI"
$Discovery = $oAPI.CreateDiscoveryData(0, $Element, $TargetId)

if(!(Test-Path ($LicenseFile)))
{
$oAPI.LogScriptEvent("TheBackbone.SMP04.License.Discovery.ps1", 1051, 2, "License file $LicenseFile could not be found, exit")

#Give back an empty discovery property bag so the license object is removed when there is no license file present.
$Discovery

exit
}

try
{
$instance = $Discovery.CreateClassInstance("$MPElement[Name='TSL!TheBackbone.SMP04.License.Class']$")
$instance.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$",$LicenseFile)
$instance.AddProperty("$MPElement[Name='TSL!TheBackbone.SMP04.License.Class']/LicenseFile$",$LicenseFile)
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$",$PrincipalName)
$Discovery.AddInstance($instance)

$Discovery

$oAPI.LogScriptEvent("TheBackbone.SMP04.License.Discovery.ps1", 1053, 0, "License file discovered")
}
catch
{
$oAPI.LogScriptEvent("TheBackbone.SMP04.License.Discovery.ps1", 1057, 2, "Exception creating discovery data, exit")
exit 1
}

Debug 1069 "Script ended"
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>Element</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>TargetId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>LicenseFile</Name>
<Value>$Target/Property[Type="TSL!TheBackbone.SMP04.Collector.Class"]/CollectorPath$License.lic</Value>
</Parameter>
<Parameter>
<Name>PrincipalName</Name>
<Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>Debug</Name>
<Value>$Config/Debug$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="TheBackbone.SMP04.License.Discovery.DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>