PowerShell 2.0 實踐(四)管理Windows進程

來源:互聯網
上載者:User

上一次我們對Windows服務進行了簡單的管理,學習了擷取本地及遠端電腦上服務的方法,以及尋找特定服務,開始、結束、暫停、恢複服務等操作。本次我們來關注一下Windows管理中另一個核心內容:進程管理。

測試指令碼下載

本系列所有指令碼均在Windows Server 2008 R2 DataCenter (PowerShell 2.0) + PowerGUI Script Editor Free Edition x64中測試通過。

 

進程是作業系統結構的基礎,是一個正在執行的程式,是電腦中正在啟動並執行程式執行個體,可以分配給處理器並由處理器執行的一個實體。由單一順序的執行顯示,是一個由目前狀態和一組相關的系統資源所描述的活動單元。

PowerShell中與進程相關的命令主要有5個:

Get-Process

Start-Process

Stop-Process

Debug-Process

Wait-Process

 

  1. 首先來查看一下進程對象的成員:

Get-Process | Get-Member

運行結果:

可以看到,Get-Process返回的是.NET對象System.Diagnostics.Process的執行個體,其中有5個別名非常重要:

Handles

進程開啟的控制代碼數

NPM

進程正在使用的非分頁式記憶體量,以KB為單位

PM

進程正在使用的可分頁的記憶體量,以KB為單位

VM

進程正在使用的虛擬記憶體量,以MB為單位。虛擬記憶體包括磁碟上分頁檔案中的儲存

WS

進程工作集的大小,以KB為單位。工作集包括進程最近引用的記憶體的頁面

 

查看佔用分頁記憶體最多的前10個進程:

Get-Process | Sort
PM
-Descending | Select
-First 10

運行結果:

擷取所有佔用 > 50 MB的進程,並倒排序:

Get-Process | Where {$_.WS -gt 50MB} | Sort
WS
–Descending

運行結果:

 

在PowerShell 2.0中,還可以查看遠端電腦上的進程。

如所示,虛擬機器中電腦的IP為:192.168.200.132:

Get-Process
-ComputerName
192.168.200.132

運行結果:

 

  1. 開啟一個進程。在PowerShell 2.0中,可以在本機電腦上使用Start-Process來啟動一個進程:

Start-Process
iexplore.exe

Start-Process只能用於本機電腦。

運行結果:

注意,預設會啟動32位的程式,如果想啟動64位的程式,需要添加-FilePath參數,指明64位程式所在位置:

Start-Process
-FilePath
"C:\Program Files\Internet Explorer\iexplore.exe"

運行結果:

 

  1. 結束進程。

首先啟動一個記事本進程,並記錄下來,接著線程休眠3秒,然後結束該進程:

$notepad
= [System.Diagnostics.Process]::Start("notepad")

[System.Threading.Thread]::Sleep(3000)

Stop-Process
-Id
$notepad.Id

運行結果:

3秒後記事本會自動關閉。

 

4、擷取Word進程所在的目錄資訊:

(Get-Process
WINWORD).MainModule

運行結果:

 

擷取Excel進程依賴的庫資訊

Start-Process
EXCEL

(Get-Process
EXCEL).Modules

Stop-Process
-Name
EXCEL

運行結果:

 

擷取進程的中繼資料:

Get-Process | Select Company,Product,ProductVersion

運行結果:

Google Chrome的版本號碼居然沒有被正確識別J

 

設定進程優先順序:

每個進程都有相應的優先順序,優先順序決定它何時運行和接收多少 CPU 時間。最終的優先順序共 32 級,是從 0 到 31 的數值,稱為基本優先順序別(Base Priority Level)。系統按照不同的優先順序調度進程的運行,0-15 級是普通優先順序,進程的優先順序可以動態變化,高優先順序進程優先運行,只有高優先順序進程不運行時,才調度低優先順序進程運行,優先順序相同的進程按照時間片輪流程執行。16-31 級是即時優先順序,即時優先順序與普通優先順序的最大區別在於相同優先順序進程的運行不按照時間片輪轉,而是先啟動並執行進程就先控制 CPU,如果它不主動放棄控制,同級或低優先順序的進程就無法運行。

可由PriorityClass屬性讀寫,有效值列表:Normal, Idle, High, RealTime, BelowNormal, AboveNormal。

$process
=
Get-Process
WINWORD

Write-Host
$process.PriorityClass

$process.PriorityClass
=
"High"

Write-Host
$process.PriorityClass

運行結果:

可見,Word的優先順序由Normal變為了High。

 

5、調試進程:

Debug-Process
-Name
WINWORD

會彈出提示視窗選擇調試器:

 

等待進程結束

Wait-Process
-Name
notepad

指令碼輸入視窗會一直等待,直到該進程結束後才可以繼續輸入:

關閉記事本視窗後:

 

小結:

本次對Windows進程進行了簡單的管理操作,相比Windows服務來說進程管理略顯單一,主要是查看進程與設定進程優先順序,但是重要性是一樣的。進程和服務是Windows的基礎功能,維繫著啟動並執行程式,如果設定不當可能會引起系統不穩定。此外,PowerShell 2.0增強了遠端能力,方便了遠端管理操作。下一次我們來關注一下註冊表的相關操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.