Получить статус процесса, запущенного Invoke-WmiMethod - PullRequest
4 голосов
/ 21 марта 2011

Впервые в PowerShell, но мне нравится тот факт, что я так много могу сделать так быстро:)

В любом случае, я запускаю удаленный процесс в скрипте PowerShell следующим образом:

$compname = "MY-PC"
$myinstallcmd = "c:\install\myprog.exe /s"
$proc = Invoke-WmiMethod -class Win32_Process -name Create -ArgumentList ($myinstallcmd) -ComputerName $compname

На большинстве компьютеров, которые я пробовал, командлет Invoke-WmiMethod работает нормально, но на одном компьютере он зависает. Теперь я хочу получить статус запущенного процесса, и если он завис, убить его и записать в журнал, а затем двигаться дальше.

Я нашел возможный способ сделать это в посте Удаленный запуск процесса в Powershell, получение% ERRORLEVEL% в Windows - однако, когда я пытаюсь выполнить Register-WmiEvent для процесса $ proc.ProcessId, я получаю страшную ошибку 0x80070005 (E_ACCESSDENIED). .. Я использую хост PowerShell от имени администратора домена.

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

Спасибо!

1 Ответ

0 голосов
/ 22 марта 2011

Обновление: я полагаю, вам не хватает учетных данных удаленной системы:

Попробуйте передать учетные данные в удаленную систему с помощью параметра -Credential.Для этого требуется объект PSCredential, и, следовательно, вы можете сделать что-то вроде:

$cred = Get-Credential
Register-WMIEvent -Credential $cred <and other parameters here>

Проверьте, разрешает ли одно из следующих действий ошибку отказа в доступе:

0x80070005 (DCOM ACCESS_DENIED) Эта ошибка возникает, когдаподключенный пользователь не распознается или каким-либо образом ограничен удаленным сервером (например, пользователь может быть заблокирован).Это происходит чаще всего, когда учетные записи находятся в разных доменах.Недавние изменения в безопасности WMI также могут вызвать эту ошибку:

  • Пустые пароли, ранее разрешенные, не разрешены в Windows XP и Windows Server 2003.

  • WMI не разрешает асинхронные обратные вызовы клиенту Windows 98.Вызов, подобный SWbemServices.ExecNotificationQueryAsync с компьютера с Windows 98 на компьютер с Windows XP, приведет к ошибке «Отказано в доступе», возвращенной на компьютер с Windows 98.

  • Возможно, настройка доступа к конфигурации DCOM былаизменилось.

  • Если на целевом компьютере установлена ​​Windows XP, значение Forceguest в разделе реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa может быть настроено для принудительного отключения учетной записи гостя (значение равно нулю)).

Источник: http://technet.microsoft.com/en-us/library/ee692772.aspx

...