0

以下は、識別子をスクラブしたスクリプトです。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)
}
4

1 に答える 1

0

As the first, most obvious reason, you don't output the discovery data onto output stream (StdOut). Just simple add $discoveryData at a new line by the end of your script.

Moreover, more information about your class and MP architecture required. I'd probably recommend you to use Windows!Microsoft.Windows.ComputerRole as base class and host it on target computer object.

Regards Max

于 2016-10-06T22:22:41.627 に答える