_Custom MSA P2000 Discovery PSscript Controller

Custom.MSA.P2000.DiscoveryPSscript.Controller (Discovery)

Element properties:

TargetCustom.MSA.P2000.ClassCustom.MSA.Instance
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
PSscript4 DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Source Code:

<Discovery ID="Custom.MSA.P2000.DiscoveryPSscript.Controller" Enabled="true" Target="Custom.MSA.P2000.ClassCustom.MSA.Instance" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Custom.MSA.P2000.ClassCustom.Controller">
<Property TypeID="Custom.MSA.P2000.ClassCustom.Controller" PropertyID="contrName"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="PSscript4" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoveryPSscriptController.ps1</ScriptName>
<ScriptBody><Script>
param($sourceId,$managedEntityId,$computerName,$msaName,$folderPath)

$api = New-Object -ComObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $sourceId, $ManagedEntityId)


[xml]$GetContXML = Get-Content "$folderPath\show__controller_statistics.xml"
while (($i -lt 2) -and ($GetContXML -eq $null)){
$i++
Start-Sleep -Seconds 5
[xml]$GetContXML = Get-Content "$folderPath\show__controller_statistics.xml"
}

$ObjectXMLElements=$GetContXML.RESPONSE.OBJECT

foreach ($objElement in $ObjectXMLElements) {

$controllerName=($objElement.property | ? {$_.name -eq 'durable-id'}).'#text'
if ($controllerName -ne $null) {
$instance = $DiscoveryData.CreateClassInstance("$MPElement[Name='Custom.MSA.P2000.ClassCustom.Controller']$")

$instance.AddProperty("$MPElement[Name='Custom.MSA.P2000.ClassCustom.MSA.Instance']/msaName$", $msaName)
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computerName)
$Instance.AddProperty("$MPElement[Name='Custom.MSA.P2000.ClassCustom.Controller']/contrName$", $controllerName)

$discoveryData.AddInstance($instance)
}
}
$discoveryData
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>sourceId</Name>
<Value>$MPElement$</Value>
</Parameter>
<Parameter>
<Name>managedEntityId</Name>
<Value>$Target/Id$</Value>
</Parameter>
<Parameter>
<Name>computerName</Name>
<Value>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Parameter>
<Parameter>
<Name>folderPath</Name>
<Value>$Target/Property[Type="Custom.MSA.P2000.ClassCustom.MSA.Instance"]/folderPath$</Value>
</Parameter>
<Parameter>
<Name>msaName</Name>
<Value>$Target/Property[Type="Custom.MSA.P2000.ClassCustom.MSA.Instance"]/msaName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>