2014-06-06 4 views
0

Я не могу понять, как получить числа, которые не отвечали при использовании -asjob, мог ли кто-нибудь посоветовать?Powershell: обработка ошибок при использовании параметра -asjob

try{ 
    gwmi "Win32_OperatingSystem" -ComputerName $ordis -asjob 
    $resu=get-job | ? {$_.psjobtypename -eq "wmijob" } |wait-job |receive-job 
} 
catch{"error"} 
$resu | select PSCOMPUTERNAME, @{name="lastboottime";expression={$_.converttodatetime($_.lastbootuptime)}} |sort lastboottime |ft 
remove-job * -force 

некоторые хосты не удалось из-за ошибки, но я не знаю, те, которым

Le Serveur RPC n'est па Disponible. (Исключение от HRESULT: 0x800706BA)
+ CategoryInfo: InvalidResult: (:) [], COMException
+ FullyQualifiedErrorId: JobStateFailed

+0

Для таких скриптов я использую CSV-файл с именами компьютеров. 'Import-CSV' дает сборку для итерации. Я сохраняю результаты запроса в другой коллекции, а затем обновляю поля CSV (для ответивших хостов) и сохраняю их с помощью Export-CSV. –

+0

@AlexanderObersht вы не пользуетесь преимуществами параллельной обработки, как это –

+0

Я использую параллельную обработку запросов. Обработка результатов занимает незначительное время. Если вам интересно, я могу опубликовать свой код. –

ответ

1

Добавить еще одну строку, чтобы захватить неудачные работы после $resu | select.. заявления, попытаться/поймать не будет работать, поскольку вы создаете запросы wmi в отдельные пробелы.

.... 
Get-Job -State Failed | Select-Object -ExpandProperty Location 
remove-job * -force 
+0

Мне пришлось перебирать childjobs, чтобы получить информацию: 'get-job -state failed | select -expand childjobs | ? {$ _. state -eq "failed"} | select -expand location' –