下面是我的脚本,标识符已清除。诊断的基类是MyCompany.MyApp,其基类是Windows计算机。如果我直接使用参数在目标机器上运行它,我将返回XML。如果我从我的电脑上运行它是空白的。这在本地有意义,但我想当你发现代理在你所针对的机器上运行它时?到目前为止,我所有的其他发现都是注册表,所以我可能做错了。
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)
}
答案 0 :(得分:0)
作为第一个最明显的原因,您不会将发现数据输出到输出流(StdOut)。只需在脚本末尾的新行添加$discoveryData
即可。
此外,还需要有关您的类和MP体系结构的更多信息。我可能建议您使用Windows!Microsoft.Windows.ComputerRole
作为基类并将其托管在目标计算机对象上。
此致 最大