提前致谢。
以下是我们正在运行的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
答案 0 :(得分:1)
如果您看到Win32_Service
实例的ProcessId
值为0
,则表示该服务尚未运行。
你会发现:
(Get-WMiObject Win32_Service -Filter "Name ='HotKeyService'").State
是Stopped