PS4,Get-WMIObject为内部开发的服务返回PID = 0

时间:2017-10-31 12:24:13

标签: powershell get-wmiobject

提前致谢。

以下是我们正在运行的Powershell4脚本:

 {'id':'6726','Codigo':'AlmNumTrab','Denominacion':'Almacen','Descripcion':'Almacenes','TipoCampo':'2','TipoIntroduccion':'0'}

有了这个我得到:

$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

错误#1

  

停止过程:无法停止过程"空闲(0)"因为以下
      错误:访问被拒绝       在C:\ Windows \ TEMP \ tmp206027652026805712.ps1:6 char:1       + stop-process -id $ oopid -force       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:CloseError:(System.Diagnostics.Process(Idle):P          rocess)[Stop-Process],ProcessCommandException       + FullyQualifiedErrorId:CouldNotStopProcess,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       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~           + CategoryInfo:ObjectNotFound :( System.Diagnostics.Process
      (IDL          e):Process)[Wait-Process],ProcessCommandException           + FullyQualifiedErrorId:       WaitOnIdleProcess,Microsoft.PowerShell.Commands。          WaitProcessCommand

Process Name = HotKeyService
Process ID = 0

上面的代码是在Windows 2012服务器和Win 7工作站上的许多服务上运行的更大进程的一部分。有时虽然它失败了但我不知道为什么。在这种情况下,检索正确的服务名称,可以在命令ouptut中看到,但PID为0,这可能是正确的,因为它是系统空闲进程的PID。 / p>

稍后调用此PS脚本的父软件显示HotKey安装文件夹中的文件无法更新,因为"(进程无法访问该文件,因为它正由另一个进程使用)",这是有道理的,因为HotKeyService服务没有正确停止。

我再次运行了父软件,它在同一服务上运行正常。

我的问题是Get-WMIObject如何返回正确的服务名称,然后在下一步显示PID为零?我无法解决这个问题。

感谢您的帮助。 KJ

1 个答案:

答案 0 :(得分:1)

如果您看到Win32_Service实例的ProcessId值为0,则表示该服务尚未运行。

你会发现:

(Get-WMiObject Win32_Service -Filter "Name ='HotKeyService'").State

Stopped