2016-09-22 10 views
0

Ниже приведен мой сценарий с очищенными идентификаторами. Базовым классом для диагностики является MyCompany.MyApp, а базовым классом является компьютер Windows. Если я запускаю это на целевой машине напрямую с параметрами, я возвращаю XML. Если я запустил свой компьютер, он будет пустым. Это имеет смысл локально, но я думал, когда вы запускаете открытия, которые агент запускает на машине, на которую вы нацеливаете? Все мои другие открытия до сих пор были реестром, поэтому я могу сделать что-то совершенно неправильное.Discovery Script не работает

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

Как первая, наиболее очевидная причина, вы не выводите данные обнаружения в выходной поток (StdOut). Просто добавьте $discoveryData в новую строку к концу вашего скрипта.

Кроме того, требуется дополнительная информация о вашей архитектуре класса и MP. Я бы рекомендовал вам использовать Windows!Microsoft.Windows.ComputerRole в качестве базового класса и разместить его на целевом компьютерном объекте.

С уважением Макс.