Выполнить оператор с тайм-аутом? - PullRequest
6 голосов
/ 24 марта 2011

При возникновении проблемы с использованием Invoke-WmiMethod в скрипте, который при запуске на некоторых компьютерах просто зависает. То, что я хотел бы сделать, это выполнить команду, и если она не вернется в течение определенного периода времени (скажем, от 60 до 120 секунд), то двигаться дальше (также записывая данные о катапультировании в файл). Единственный способ, которым я в настоящее время знаю попытаться сделать это с помощью параметра -AsJob; однако, когда я пытаюсь это сделать, порожденное задание немедленно завершается сбоем (даже на компьютерах, где оператор Invoke-WmiMethod работает без добавления параметра -AsJob.) Другие командлеты, связанные с WMI, работают с этими проблемными машинами, поэтому я не думаю, это проблема с аутентификацией или DCOM.

В любом случае, есть ли другие способы установить время ожидания для оператора в сценарии, которые я могу попробовать?

1 Ответ

3 голосов
/ 24 марта 2011

Хм, не знаю, почему Invoke-WmiMethod не работает, но, возможно, Invoke-Command сработает (думаю, стоит попробовать), например ::1003*

$job = Invoke-Command -cn $computers { Invoke-WmiMethod ... } -AsJob
Wait-Job $job -Timeout 60

Это предполагает, что вы включили удаленное взаимодействие на всех удаленных компьютерах и что они работают под управлением PowerShell 2.0. Убедитесь, что вы запускаете его из командной строки с повышенными правами, если в Vista / Windows 7 или как администратор в XP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...