我正在研究一种通过PS和WMI远程停止和重新启动进程的方法。我可以轻松停止/终止该过程,但我也想重新启动该过程,但我在执行此操作时遇到问题。以下是我用来远程停止/终止进程的脚本。知道我可以添加什么然后重新启动相同的过程吗?
$comp = read-host -Prompt "Enter computer name"
(Get-WmiObject Win32_Process -ComputerName $comp | ?{ $_.ProcessName -match "PhotoScreensaver.scr" }).Terminate()
虽然我确信您可以使用 WMI 执行此操作,但还有一种更简单的方法。 Powershell有一个名为Invoke-Command
的内置cmdlet,用于远程代码执行。 还有用于控制流程的Start-Process
和Stop-Process
。
Invoke-Command -ComputerName $Computer -ScriptBlock {
Start-Process $ProcessName
Stop-Process $ProcessName
}
如果您处于域环境中,则可能必须使用-Authentication Kerberos
选项来获取对远程计算机的权限。
我还想指出,这些进程将在远程计算机上的不同会话中打开。 如果用户已登录,则不会在其会话中执行。 为此,您需要另一个工具,例如SysInternals人员的PSExec
。