在脚本学校(Scripting School)专栏的前面内容里
我们讨论了如何收集用户输入
为其分配变量
并将变量记录到帮助文档里
这次我们将要解释如何检索电脑中进程的基本信息
如何使用Windows PowerShell结束你不想要的进程
检索进程信息
Windows PowerShell中的getprocess cmdlet可以帮助你检索电脑中的进程信息不带任何参数地运行这个命令你可以获得如下所示的输出
Handles
NPM(K)
PM(K)
WS(K)
VM(M)
CPU(s)
ID ProcessName
XConfig
alg
atievxx
atievxx
csrss
ctfmon
如果你不确定NPMWSVM这些缩写分别代表什么可以借助下面的表格
资源名称
缩写
描述
Handles
无
进程的智能指针编号对内存的存储区域开放当句柄(handles)关闭时内存被释放
Nonpaged pool (in kilobytes)
NPM(nonpaged memory)
非分页池是从不分页到硬盘的存储器因此访问速度更快
Paged pool (in kilobytes)
PM(paged memory)
如果有空间需求分页池有可能发送给磁盘这使得分页池比非分页池更大(因为存储器空间仅受磁盘上的页面文件限制)一些内存读取操作可能耗时更长因为需要的的数据存储在硬盘上
Working set (in kilobytes)
WS
工作集是指一个进程占用物理内存的页面集只有存储在物理内存(当前没有分页到磁盘)的数据才在工作集中
Virtual memory (in megabytes)
VM
只用于进程的虚拟内存数量
CPU time (in seconds)
CPU (s)
进程占用的处理器时间(包括所有可用的处理器)
Process ID
无
给定进程的唯一标识符即使在一台共享式电脑上每个进程都只有一个唯一的进程ID
Process name
无
进程的易记标识但不同于进程ID它不一定是唯一的注意你还会接触到很多其它进程属性要想查看它们的属性名称键入getprocess | getmember即可基本列表对我们今天的目的来说已经足够了但是如果你要操作这些进程属性就需要查看完整的列表
如何检索最高负载的进程
你不一定需要所有进程的列表但你有必要大致了解哪些进程占用了大部分的资源举例来说一个进程的工作集(如上面的表格所描述)可以很好地指示其系统内存压力的情况为了找出工作集大于MB的所有进程输入下面的命令
getprocess | whereobject {$_WorkingSet gt }
记住美元符号代表变量现在我们来看这些进程的名称工作集属性及其工作集是否是大于(上面命令中的gt) 给定值的
这个命令会找到每个进程并把结果发送给whereobject cmdlet做评价然后你就会收到跟完全列表格式一模一样的一个列表但这个列表要短得多
结束不必要的进程
如果你管理自己的电脑很容易获取一些无用进程比如有一天你在机场想联机最后可能在电脑里留下Boingo客户端进程你下载过某一个系统审核软件的试用版本吗?即使你有几个月都没有使用过它进程列表仍可能包含系统审核代理
当然任务管理器也可以为你显示进程但getprocess更容易查看数据比如你可以不使用滚动条查看一个完整列表你需要应付这些垃圾进程但同时你也可以结束它们(在终止一个进程前你应该确定知道自己在干什么如果你并不确定哪个进程是干什么用的不要贸然结束它)
要结束一个进程先从整个列表或最消耗资源的前十个进程中检索出它们的识别信息然后运行stopprocess命令如果不带任何参数运行该命令它会提示你输入进程ID号(仅仅输入进程名称是无法结束进程的)你可以根据自己意愿结束多个进程完成后按Enter键就会退出cmdlet
你也可以使用–name parameterstopprocess –name processname等命令通过名称来停止进程然而我并不推荐这样做你应该养成用进程ID结束进程的习惯尽管记住进程ID比记住进程名称困难但这对防止结束共享电脑上其他人的进程有帮助