以下は、識別子をスクラブしたスクリプトです。Diagnostics の基本クラスは MyCompany.MyApp であり、その基本クラスは Windows Computer です。パラメータを使用してターゲット マシンでこれを直接実行すると、XML が返されます。PC から実行すると空白になります。それはローカルでは理にかなっていますが、ディスカバリーを実行すると、エージェントが対象のマシンでそれを実行すると思いましたか? これまでの私の他のすべての発見はレジストリであったため、完全に間違ったことをしている可能性があります.
Param($sourceId, $managedEntityId, $ComputerName)
$api = New-Object -ComObject 'MOM.ScriptAPI'
$discoveryData = $api.CreateDiscoveryData(0, $SourceId, $ManagedEntityId)
$Diagnostics = Invoke-Command -ComputerName $ComputerName {
Get-WebApplication -Name "diagnostics"
}
foreach ($x in $Diagnostics)
{
$instance = $discoveryData.CreateClassInstance("$MPElement[Name='MyCompany.MyApp.Diagnostics']$")
$instance.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $ComputerName)
$discoveryData.AddInstance($instance)
}