使用 Powershell 从任务管理器中检索信息

Posted

技术标签:

【中文标题】使用 Powershell 从任务管理器中检索信息【英文标题】:Retrieving Information from Task Manager using Powershell 【发布时间】:2016-05-03 13:18:26 【问题描述】:

我目前正在使用业务自动化软件,其想法是机器人模拟用户操作。有没有办法通过powershell访问任务管理器,因为机器人是为了操纵任务管理器,例如传入一个值来启动一个新任务,结束一个进程并查看cpu的性能等。我知道这可以使用 powershell 脚本或更好的 vb 脚本来实现。请问我该如何实现?

作为记录,我使用的是带有 powershell 3.0 版的 windows 7 机器。

【问题讨论】:

哪种机器人? @MathiasR.Jessen 更像是虚拟机。该机器人系统被称为 Blue Prism 【参考方案1】:

列出正在运行的进程并终止计算器。

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

For Each objItem in colItems
    msgbox objItem.ProcessID & " " & objItem.CommandLine
    If objItem.name = "Calculator.exe" then objItem.terminate
Next

监控记事本退出并重新启动。

还可以使用Win32_ProcessStartTraceWin32_ProcessStartStopTrace

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set objEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM Win32_ProcessStopTrace")

Do
    Set objReceivedEvent = objEvents.NextEvent
    msgbox objReceivedEvent.ProcessName
    If lcase(objReceivedEvent.ProcessName) = lcase("Notepad.exe") then 
        Msgbox "Process exited with exit code " & objReceivedEvent.ExitStatus
        WshShell.Run "c:\Windows\notepad.exe", 1, false
    End If
Loop

WMIC 命令行程序使用与 vbscript(和 powershell)相同的类,因此您可以使用它来寻求帮助。

wmic /?
wmic path win32_process /?

或使用 wmic 中唯一可用的别名 process 别名为 win32_process

wmic process /?
wmic process call /?
wmic process get /?

以及 wmic 的其他用途

wmic /node /?
wmic /format /?

【讨论】:

【参考方案2】:

尝试get-process 获取正在运行的进程列表。

使用即get-process myprocess |stop-process,您可以停止myprocess

对于新进程,您可以 & 它们 (& C:\Windows\System32\taskmgr.exe) 或使用 start-process(查看 Get-help Start-Process 以获得帮助)cmdlet。 您也可以为此使用Invoke-WmiMethod

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList taskmgr.exe'

【讨论】:

以上是关于使用 Powershell 从任务管理器中检索信息的主要内容,如果未能解决你的问题,请参考以下文章

如何获取正在运行的进程的进程ID,如任务管理器中所示

使用 VBA 从 Access 运行后从任务管理器中删除 Excel 任务

从任务管理器中隐藏进程

防止从任务管理器中杀死进程,反转

powershell 从注册表中检索软件包的卸载信息

从任务管理器中隐藏 WPF 应用程序 - 错误