[玩转系统] 使用 Process cmdlet 管理进程
作者:精品下载站 日期:2024-12-14 03:02:46 浏览:13 分类:玩电脑
使用 Process cmdlet 管理进程
此示例仅适用于 Windows PowerShell 5.1。
您可以使用 PowerShell 中的 Process cmdlet 来管理 PowerShell 中的本地和远程进程。
获取进程
要让进程在本地计算机上运行,请运行不带参数的 Get-Process
。
您可以通过指定进程名称或进程 ID 来获取特定进程。以下命令获取 Idle 进程:
Get-Process -id 0
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
0 0 0 16 0 0 Idle
尽管 cmdlet 在某些情况下不返回数据是正常的,但当您通过 ProcessId 指定进程时,如果 Get-Process
找不到匹配项,则会生成错误,因为通常的目的是检索已知的正在运行的进程。如果没有具有该 ID 的进程,则该 ID 可能不正确或者感兴趣的进程已经退出:
Get-Process -Id 99
Get-Process : No process with process ID 99 was found.
At line:1 char:12
+ Get-Process <<<< -Id 99
您可以使用 Get-Process
cmdlet 的 Name 参数根据进程名称指定进程子集。 Name 参数可以采用逗号分隔列表中的多个名称,并且它支持使用通配符,因此您可以键入名称模式。
例如,以下命令获取名称以“ex”开头的进程。
Get-Process -Name ex*
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
234 7 5572 12484 134 2.98 1684 EXCEL
555 15 34500 12384 134 105.25 728 explorer
由于 .NET System.Diagnostics.Process 类是 PowerShell 进程的基础,因此它遵循 System.Diagnostics.Process 使用的一些约定。这些约定之一是可执行文件的进程名称永远不会在可执行文件名称末尾包含 .exe
。
Get-Process
还接受 Name 参数的多个值。
Get-Process -Name exp*,power*
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
540 15 35172 48148 141 88.44 408 explorer
605 9 30668 29800 155 7.11 3052 powershell
您可以使用Get-Process
的ComputerName参数来获取远程计算机上的进程。例如,以下命令获取本地计算机(由“localhost”表示)和两台远程计算机上的 PowerShell 进程。
Get-Process -Name PowerShell -ComputerName localhost, Server01, Server02
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
258 8 29772 38636 130 3700 powershell
398 24 75988 76800 572 5816 powershell
605 9 30668 29800 155 7.11 3052 powershell
计算机名称在此显示中并不明显,但它们存储在 Get-Process
返回的进程对象的 MachineName 属性中。以下命令使用 Format-Table
cmdlet 显示进程 ID、ProcessName 和 MachineName (ComputerName) 属性的过程对象。
Get-Process -Name PowerShell -ComputerName localhost, Server01, Server01 |
Format-Table -Property ID, ProcessName, MachineName
Id ProcessName MachineName
-- ----------- -----------
3700 powershell Server01
3052 powershell Server02
5816 powershell localhost
这个更复杂的命令将 MachineName 属性添加到标准 Get-Process
显示中。
Get-Process powershell -ComputerName localhost, Server01, Server02 |
Format-Table -Property Handles,
@{Label="NPM(K)";Expression={[int]($_.NPM/1024)}},
@{Label="PM(K)";Expression={[int]($_.PM/1024)}},
@{Label="WS(K)";Expression={[int]($_.WS/1024)}},
@{Label="VM(M)";Expression={[int]($_.VM/1MB)}},
@{Label="CPU(s)";Expression={if ($_.CPU -ne $()){$_.CPU.ToString("N")}}},
Id, ProcessName, MachineName -auto
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName MachineName
------- ------ ----- ----- ----- ------ -- ----------- -----------
258 8 29772 38636 130 3700 powershell Server01
398 24 75988 76800 572 5816 powershell localhost
605 9 30668 29800 155 7.11 3052 powershell Server02
停止进程
PowerShell 为您提供了列出进程的灵活性,但是如何停止进程呢?
Stop-Process
cmdlet 采用Name 或Id 来指定要停止的进程。您停止进程的能力取决于您的权限。有些进程无法停止。例如,如果您尝试停止空闲进程,则会收到错误:
Stop-Process -Name Idle
Stop-Process : Process 'Idle (0)' cannot be stopped due to the following error:
Access is denied
At line:1 char:13
+ Stop-Process <<<< -Name Idle
您还可以使用确认参数强制提示。如果您在指定进程名称时使用通配符,则此参数特别有用,因为您可能会意外匹配某些您不想停止的进程:
Stop-Process -Name t*,e* -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "explorer (408)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):n
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "taskmgr (4072)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):n
通过使用一些对象过滤 cmdlet 可以进行复杂的进程操作。由于 Process 对象具有 Responding 属性,当它不再响应时该属性为 true,因此您可以使用以下命令停止所有无响应的应用程序:
Get-Process | Where-Object -FilterScript {$_.Responding -eq $false} | Stop-Process
您可以在其他情况下使用相同的方法。例如,假设当用户启动另一个应用程序时,辅助通知区域应用程序会自动运行。您可能会发现这在终端服务会话中无法正常工作,但您仍然希望将其保留在物理计算机控制台上运行的会话中。连接到物理计算机桌面的会话的会话 ID 始终为 0,因此您可以使用 Where-Object
和进程 SessionId 来停止其他会话中进程的所有实例。 :
Get-Process -Name BadApp | Where-Object -FilterScript {$_.SessionId -neq 0} | Stop-Process
Stop-Process
cmdlet 没有 ComputerName 参数。因此,要在远程计算机上运行停止进程命令,您需要使用 Invoke-Command
cmdlet。例如,要停止 Server01 远程计算机上的 PowerShell 进程,请键入:
Invoke-Command -ComputerName Server01 {Stop-Process Powershell}
停止所有其他 PowerShell 会话
有时,能够停止除当前会话之外的所有正在运行的 PowerShell 会话可能会很有用。如果会话使用太多资源或无法访问(它可能正在远程运行或在另一个桌面会话中运行),您可能无法直接停止它。但是,如果您尝试停止所有正在运行的会话,则当前会话可能会被终止。
每个 PowerShell 会话都有一个环境变量 PID,其中包含 Windows PowerShell 进程的 Id。您可以根据每个会话的 ID 检查 $PID,并仅终止具有不同 ID 的 Windows PowerShell 会话。以下管道命令执行此操作并返回终止会话的列表(因为使用了 PassThru 参数):
Get-Process -Name powershell | Where-Object -FilterScript {$_.Id -ne $PID} |
Stop-Process -PassThru
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
334 9 23348 29136 143 1.03 388 powershell
304 9 23152 29040 143 1.03 632 powershell
302 9 20916 26804 143 1.03 1116 powershell
335 9 25656 31412 143 1.09 3452 powershell
303 9 23156 29044 143 1.05 3608 powershell
287 9 21044 26928 143 1.02 3672 powershell
启动、调试和等待进程
PowerShell 还附带了 cmdlet,用于启动(或重新启动)、调试进程以及在运行命令之前等待进程完成。有关这些 cmdlet 的信息,请参阅每个 cmdlet 的 cmdlet 帮助主题。
参见
- Get-Process
- Stop-Process
- Start-Process
- Wait-Process
- Debug-Process
- Invoke-Command
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag