Powershell 获取调用WmiMethod启动的进程的状态

Powershell 获取调用WmiMethod启动的进程的状态,powershell,powershell-2.0,win32-process,Powershell,Powershell 2.0,Win32 Process,刚接触PowerShell,但喜欢我能这么快完成这么多事情的事实:) 无论如何,我正在用PowerShell脚本启动远程进程,因此: $compname = "MY-PC" $myinstallcmd = "c:\install\myprog.exe /s" $proc = Invoke-WmiMethod -class Win32_Process -name Create -ArgumentList ($myinstallcmd) -ComputerName $compname 在我尝试过的

刚接触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上,它挂起了。我现在要做的是获取正在运行的进程的状态,如果它挂起了,杀死它并记录杀死过程,然后继续

我确实在帖子中找到了一个可行的方法 -然而,当我尝试在进程$proc.ProcessId上注册WmiEvent时,我得到了可怕的
0x80070005(E_ACCESSDENIED)
错误。。。我正在以域管理员身份运行PowerShell主机

是否有人可以建议一种方法,让我能够获得我已启动的流程的状态,并能够根据状态采取行动


谢谢

更新:我猜您缺少远程系统凭据:

尝试使用
-Credential
参数将凭据传递到远程系统。这将获取PSCredential对象,因此您可以执行以下操作:

$cred = Get-Credential
Register-WMIEvent -Credential $cred <and other parameters here>
$cred=获取凭证

注册WMIEvent-凭证$cred

添加信息:运行Win7的系统上的Powershell主机,运行Win Vista的目标计算机。将
powershell\u ise
进程作为域管理员帐户运行。
Register WmiEvent
没有
-身份验证
-模拟
参数,我以前遇到这种错误时使用过它…您可以使用-Credential参数provide credentials所以我现在尝试的是:
$proc2=Invoke WmiMethod-AsJob-class Win32\u Process-name Create-ArgumentList($installcmd)-ComputerName$compname-身份验证6-凭据$cred Register WmiEvent-ComputerName$compname-查询“从Win32中选择*,其中ProcessID=$($proc2.ProcessID)”-操作{写入主机“进程ExitCode:$($event.SourceEventArgs.NewEvent.ExitStatus)}-Credential$cred
--我仍然收到错误
Register WmiEvent:访问被拒绝。(HRESULT的例外:0x80070005(E_ACCESSDENIED))
我还应该提到,我确实通过
Get Credential
设置了
$cred
变量,并使用了域管理员帐户