使用 Powershell 从任务管理器中检索信息
Retrieving Information from Task Manager using Powershell
我目前正在使用业务自动化软件,其想法是机器人模拟用户操作。有没有办法通过 powershell 访问任务管理器,因为机器人旨在操纵任务管理器,例如传递一个值以启动新任务、结束进程并查看 cpu 等的性能。我知道这可以使用 powershell 脚本或更好的 vb 脚本来实现。请问我该如何实现?
根据记录,我使用的是 windows 7 机器,Powershell 版本为 3.0。
尝试 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'
列出 运行 个进程并终止计算器。
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_ProcessStartTrace
和 Win32_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 /?
我目前正在使用业务自动化软件,其想法是机器人模拟用户操作。有没有办法通过 powershell 访问任务管理器,因为机器人旨在操纵任务管理器,例如传递一个值以启动新任务、结束进程并查看 cpu 等的性能。我知道这可以使用 powershell 脚本或更好的 vb 脚本来实现。请问我该如何实现?
根据记录,我使用的是 windows 7 机器,Powershell 版本为 3.0。
尝试 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'
列出 运行 个进程并终止计算器。
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_ProcessStartTrace
和 Win32_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 /?