使用 powershell 和 wmi 停止然后启动远程进程
Using powershell and wmi to stop and then start a remote process
我正在研究一种通过 PS 和 WMI 远程停止和重新启动进程的方法。我可以轻松地 stop/terminate 这个过程,但我也想重新启动这个过程,但我在这样做时遇到了问题。下面是我用来远程 stop/terminate 该过程的脚本。知道我可以添加什么然后重新启动相同的进程吗?
$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
。
我正在研究一种通过 PS 和 WMI 远程停止和重新启动进程的方法。我可以轻松地 stop/terminate 这个过程,但我也想重新启动这个过程,但我在这样做时遇到了问题。下面是我用来远程 stop/terminate 该过程的脚本。知道我可以添加什么然后重新启动相同的进程吗?
$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
。