Заранее спасибо.
Вот скрипт Powershell4, который мы запускаем:
$process = Get-WMiObject Win32_Service -Filter "Name ='HotKeyService'"
write-host Process Name = $process.name
write-host Process ID = $process.processid
$oopid = $process.processid
stop-process -id $oopid -force
wait-process -id $oopid -timeout 60 -WarningAction SilentlyContinue
-------------------------------
working directory: C:\Program Files\HK\HK.HotKeyService
При этом я получаю:
Process Name = HotKeyService
Process ID = 0
Ошибка №1
stop-process : Невозможно остановить процесс "Idle (0)" из-за следующей
ошибки: Отказано в доступе At C:\Windows\TEMP\tmp206027652026805712.ps1:6 char:1 + stop-process -id $oopid - force + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (System.Diagnostics.Process (Idle):Process) [Stop-Process], ProcessCommandException + FullyQualifiedErrorId: CanNotStopProcess, Microsoft.PowerShell.Command s.StopProcessCommand
Ошибка №2
wait-process : эта команда остановила работу, потому что не может ждать в процессе «System Idle». Укажите другой процесс и снова запустите команду. В C:\Windows\TEMP\tmp206027652026805712.ps1:7 char:1 + wait-process -id $oopid -timeout 60 -WarningAction SilentlyContinue + ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ Информация о категории : ObjectNotFound: (System.Diagnostics.Process
(Idle):Process) [Wait-Process], ProcessCommandException + FullyQualifiedErrorId : WaitOnIdleProcess,Microsoft.PowerShell.Commands. Команда ЖдатьПроцесс
===============================
command exit code: 0
Приведенный выше код является частью более крупного процесса, который запускается во многих службах на серверах Windows 2012 и рабочих станциях Win 7. Иногда, хотя это терпит неудачу, и я не знаю, почему. В этом случае извлекается правильное имя службы, которое можно увидеть в выводе команды, но PID равен 0, что не может быть правильным, поскольку это PID процесса бездействия системы.
Родительское программное обеспечение, вызывающее этот сценарий PS, позже показывает, что файлы в папке установки HotKey не могут быть обновлены, поскольку «(Процесс не может получить доступ к файлу, поскольку он используется другим процессом)», что имеет смысл, поскольку служба HotKeyService не правильно остановиться.
Я снова запустил родительское программное обеспечение, и оно работало правильно на том же сервисе.
Мой вопрос: как Get-WMIObject может вернуть правильное имя службы, но затем на следующем шаге показать нулевой PID? Я не могу понять это.
Спасибо за помощь. КДж