詳解Win Server2008 R2中的PowerShell
在Windows Serve 2008 R2中,一個重要改進就是PowerShell版本升級為2.0。Win 2008 R2包括一系列新的服務(wù)器管理界面,這些均建立在PowerShell 2.0之上。它新增了240個cmdlets命令集,新的PowerShell圖形用戶界面也增添了開發(fā)功能,從而用戶能更簡單創(chuàng)建自己的命令行。而且,PowerShell將能夠安裝到Windows服務(wù)器內(nèi)核。本文將介紹PowerShell 2.0的ISE以及增強的遠程功能。
Windows PowerShell是專門為系統(tǒng)管理員設(shè)計的一個Windows命令行Shell,包括一個交互式的DOS風(fēng)格命令行窗口和一個腳本環(huán)境,能夠獨立或聯(lián)合應(yīng)用。與大多數(shù)接收和發(fā)送文本信息的Shell不同,Windows PowerShell是建立在.NET common language runtime和.NET Framework基礎(chǔ)之上,接收和回復(fù).NET對象。這樣的特性為Windows的管理和配置提供了新的工具和方法。
PowerShell
Windows PowerShell中的一個重要概念就是“cmdlet”,一個構(gòu)建在Shell的簡單的、單一功能的命令行工具。用戶可以獨立的使用其中的命令,但是其作用依賴于應(yīng)用的任務(wù)和環(huán)境。Windows PowerShell包含超過100條的基本命令行,并且用戶可以自行編寫命令行并共享給其他的用戶。
和大多數(shù)Shell相似,Windows PowerShell讓你有權(quán)訪問計算機的文件系統(tǒng),此外,Windows PowerShell可以讓你訪問其他存儲數(shù)據(jù),如注冊表和數(shù)字簽名證書等,就像訪問文件系統(tǒng)一樣簡單。
Windows Server 2008 R2中的PowerShell升級到2.0,引入了很多新的特性,如遠程管理、完整的腳本環(huán)境、Debug工具等等,下面我們來具體了解一下PowerShell V2中ISE和增強遠程功能的新特性。
一、集成的腳本環(huán)境ISE(Integrated Script Environment)
對于PowerShell的一個基本要求就是能夠簡單的編寫和調(diào)試PowerShell腳本,PowerShell v2捆綁了一個集成的腳本環(huán)境ISE(Integrated Script Environment),使得編寫PowerShell腳本更加容易,ISE包含了一個腳本面板、一個輸出面板和一個命令行面板。
ISE面板
ISE的命令行面板和PowerShell命令行面板非常類似,用戶可以在里面敲入命令,并通過回車來執(zhí)行命令。命令的執(zhí)行結(jié)果會顯示在輸出面板中,可以清楚的跟蹤之前所有命令執(zhí)行的結(jié)果。頂部的腳本面板可以用來編寫和調(diào)試腳本,腳本面板支持多個腳本共同操作,操作便捷。
為了幫助用戶調(diào)試腳本,ISE允許用戶用多種方式設(shè)置調(diào)試中斷點(breakpoint),可以手動設(shè)置,或者在某一特殊條件下自動設(shè)置,后者提供了更好的操作體驗。在設(shè)置中斷點的命令中,用戶需要指定調(diào)試腳本的名稱和坐標。
Set-PSBreakpoint .\[Script-File-Name].ps1 -line X
如果要設(shè)置多個中斷點,指定坐標的時候需要用逗號隔開,如
Set-PSBreakpoint .\[Script-File-Name].ps1 -line X,Y,Z
如果要在調(diào)用特定函數(shù)時設(shè)置中斷點,需要用到Set-PSBreakpoint命令,和-Command參數(shù),以及函數(shù)名稱:
Set-PSBreakPoint -Command [Name-Of-Function]
ISE的調(diào)試器還可以在讀寫一個特定變量時設(shè)置中斷點,下面是在讀寫變量時設(shè)置中斷點的命令:
Set-PSBreakpoint -Variable [Variable-Name] -mode read Set-PSBreakpoint -Variable [Variable-Name] -mode write
中斷點被設(shè)置后具有***的標識符,可以通過Disable-PSBreakpoint命令,刪除標識符來刪除中斷點:
Disable-PSBreakpoint X
二、PowerShell v2的遠程功能增強
PowerShell v2的另一個重要特性是遠程操作能力(PowerSell remoting)的增強,增加了新的命令行Invoke-Command。需要注意的是,PowerSell remoting目前只能支持運行Vista SP1、Windows Server 2008以及Windows 7的計算機,而且需要安裝相應(yīng)版本的遠程管理工具WinRM。這意味著用戶只能通過PowerShell remoting連接安裝PowerShell v2和WinRM的Vista SP1/Win 2008計算機,并不支持Vista(只能安裝PowerShell)和WinXP系統(tǒng)的計算機。
PowerShell v2系統(tǒng)要求和改進
在PowerShell 2.0的CTP預(yù)發(fā)布版本中,Invoke-Expression命令用來連接遠程計算機:
Invoke-Expression –computerName atl-fs-001 –command Get-Process
而如果用戶想運行遠程計算機atl-fs-001 上的Get-Process命令,可以采用新的Invoke-Command命令:
Invoke-Command –computerName atl-fs-001 –scriptblock
可以看到兩個命令中基本參數(shù)是一樣的,PowerShell團隊用Invoke-Command代替了Invoke-Expression命令,用–scriptblock參數(shù)代替了–command,雖然在命令上看到改動并不多,但增進了遠程操作的穩(wěn)定性、安全性和性能。
當然,這條命令還可以支持多臺遠程計算機,如果需要從遠程計算機atl-fs-001, atl-fs-002, 和atl-fs-003上獲得進程信息,可以使用命令:
Invoke-Command –computerName atl-fs-001, atl-fs-002, atl-fs-003 –scriptblock
支持多臺遠程計算機
和Invoke-Expression命令一樣,Invoke-Command可以連接遠程計算機,運行命令,但會立即失去連接。如果需要和遠程計算機的一個持續(xù)連接,可以通過命令創(chuàng)建一個PowerShell會話:
$objRunspace = New-Runspace atl-fs-001, atl-fs-002, atl-fs-003
如果需要獲得更多有關(guān)Invoke-Command命令的信息,可以通過下面這個命令獲得說明和范例:
Get-Help Invoke-Command –full | more
【編輯推薦】