在腳本學校(Scripting School)專欄的前面內容裡
我們討論了如何收集用戶輸入
為其分配變量
並將變量記錄到幫助文檔裡
這次我們將要解釋如何檢索電腦中進程的基本信息
如何使用Windows PowerShell結束你不想要的進程
檢索進程信息
Windows PowerShell中的getprocess cmdlet可以幫助你檢索電腦中的進程信息不帶任何參數地運行這個命令你可以獲得如下所示的輸出
Handles
NPM(K)
PM(K)
WS(K)
VM(M)
CPU(s)
ID ProcessName
XConfig
alg
ati
evxx
ati
evxx
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比記住進程名稱困難但這對防止結束共享電腦上其他人的進程有幫助
From:http://tw.wingwit.com/Article/os/xtgl/201311/9181.html