【发布时间】:2011-07-19 22:48:13
【问题描述】:
刚接触 PowerShell,但我很喜欢到目前为止我可以这么快做这么多事情的事实 :)
无论如何,我正在 PowerShell 脚本中启动一个远程进程:
$compname = "MY-PC"
$myinstallcmd = "c:\install\myprog.exe /s"
$proc = Invoke-WmiMethod -class Win32_Process -name Create -ArgumentList ($myinstallcmd) -ComputerName $compname
在我尝试过的大多数 PC 上,Invoke-WmiMethod cmdlet 都能正常工作,但在一台 PC 上,它就挂了。我现在要做的是获取正在运行的进程的状态,如果它已挂起,则将其杀死并记录杀死,然后继续。
我确实在帖子中找到了一种可能的方法来做到这一点
Starting a process remotely in Powershell, getting %ERRORLEVEL% in Windows - 但是,当我尝试对进程 $proc.ProcessId 执行 Register-WmiEvent 时,我遇到了可怕的 0x80070005 (E_ACCESSDENIED) 错误...我正在以域管理员身份运行 PowerShell 主机。
任何人都可以提出一种方法来获取我已启动的流程的状态,并能够根据状态采取行动吗?
谢谢!
【问题讨论】:
标签: powershell powershell-2.0 win32-process