使用powershell和wmi停止然后启动远程进程

使用powershell和wmi停止然后启动远程进程,powershell,wmi,remote-process,Powershell,Wmi,Remote Process,我正在研究一种通过PS和WMI远程停止和重新启动进程的方法。我可以很容易地停止/终止这个过程,但我也想重新启动这个过程,我在这样做时遇到了问题。下面是我用来远程停止/终止进程的脚本。你知道我可以添加什么来重新启动同样的过程吗 $comp = read-host -Prompt "Enter computer name" (Get-WmiObject Win32_Process -ComputerName $comp | ?{ $_.ProcessName -match "PhotoScr

我正在研究一种通过PS和WMI远程停止和重新启动进程的方法。我可以很容易地停止/终止这个过程,但我也想重新启动这个过程,我在这样做时遇到了问题。下面是我用来远程停止/终止进程的脚本。你知道我可以添加什么来重新启动同样的过程吗

$comp = read-host -Prompt "Enter computer name"
(Get-WmiObject Win32_Process -ComputerName $comp | ?{     $_.ProcessName -match "PhotoScreensaver.scr" }).Terminate()

虽然我确信你可以用WMI来实现这一点,但还有一种更简单的方法。Powershell有一个内置cmdlet,名为
Invoke Command
,用于远程代码执行。还有用于控制流程的
启动流程
停止流程

Invoke-Command -ComputerName $Computer -ScriptBlock {
    Start-Process $ProcessName
    Stop-Process $ProcessName
}
如果您在域环境中,您可能必须使用
-Authentication Kerberos
选项来获得远程计算机的权限


我还想指出,这些进程将在远程计算机上的不同会话中打开。如果用户登录,它将不会在其会话中执行。为此,您需要SysInternals人员提供另一个工具,如
PSExec

谢谢Colyn1337!我想你已经回答了我的问题。实际上,我使用Invoke命令cmndlet的方式与您建议的方式非常相似,但没有得到预期的结果。由于您的输入,我确信这是因为该进程正在另一个会话中执行。你知道我不必去PSExec的高层就可以做到这一点吗?我时不时地会问这个问题,但还没有弄明白。这可能必须在.net层完成。再次衷心感谢您的帮助。我明白了,如果我在PSExec中运行上述脚本,它是否能够在当前用户所在的会话中远程启动进程?或者,我需要添加一些其他信息吗?是的。。。。。但是,您不会使用Invoke命令来执行此操作。因为PSExec在本地计算机上运行,并远程连接到其他主机上的会话。在您的脚本中,您只需调用psexec并将错误处理和条件设置包装在其周围。Ok。非常感谢。另外,我只是想听听你的想法……当我在PS中尝试上面的命令时,我实际上得到了一个与我们所讨论的内容不相关的错误。下面是我输入的内容:$comp=read host-Prompt“Enter computer name”(获取WmiObject Win32_进程-ComputerName$comp |?{$\进程名-match“PhotoScreensaver.scr”})。Terminate()调用命令-ComputerName$computer-ScriptBlock{启动进程$ProcessName