系統維護管理中大家常在命令提示符(cmdexe)下進行操作對Windows PowerShell鮮有接觸或者使用其實在微軟的計劃中Windows PowerShell將成為CDM的繼任者是下一代命令行工具Windows PowerShell目前最高版本為並且已經集成到Windows Server 及Windows 中Windows PowerShell使得IT管理員更容易地控制系統管理和加速自動化作為系統管理員應該掌握和使用它筆者因為工作需要開始學習Windows PowerShell下面和大家分享幾個非常實用的Windows PowerShell應用實例
Windows PowerShell的安裝
在Windows Server 中已經集成了Windows PowerShell不過默認情況下並沒有安裝大家可以在服務管理器中進行安裝而不用從網上下載對於Windows 的用戶系統已經默認安裝了Windows PowerShell 直接使用就可以了對於其他版本的Windows用戶可以微軟的網站x?FamilyID=deacbbefacfdaabc&DisplayLang=en下載
善用Windows PowerShell幫助
Windows PowerShell是新的命令和腳本規范初學者會有一定的陌生感不容易上手其實善用Windows PowerShell幫助可以幫助大家盡快了解其命令規范
運行Windows PowerShell輸入並執行getcommand會返回Windows PowerShell提供的個命令的信息這些命令囊括了管理服務進程事件日志證書注冊表以及使用 Windows Management Instrumentation (WMI)等系統管理的方方面面如果要獲取其中的某個命令的使用幫助信息比如我們要獲取getcommand這個命令的使用幫助可以執行命令gethelp getcommand獲取其他命令的幫助信息的方法類似(圖)
圖 Windows Powershell
另外為大家提供幾個很實用的技巧如果命令的幫助信息比較多一屏呈不下可用通道符號|進行分屏顯示例如getcommand | more將逐屏顯示Windows PowerShell所有的程序集gethelp getservice full將會顯示getservice這一程序集的詳細幫助(包括示例)gethelp getservice –parameter *將會列出GetService程序集的所有參數及參數說明help getservice –parameter *作用和前面一個命令一樣但是將會逐屏顯示有時基於需要我們還需要使用通配符Windows PowerShell中的通配符使用與CMD有區別可以執行命令gethelp about_wildcard獲取通配符使用的幫助信息(圖)
圖 Windows Powershell
活用別名提升操作效率
Windows PowerShell中的命令雖然可讀性強但是命令比較長輸入起來比較費事這樣我們可以根據需要創建個性的易記的命令別名來提高命令輸入的效率降低命令輸入錯誤的概率
比如我們要為getservice命令創建別名實現輸入gs可調用該命令可Windows PowerShell命令行中執行setalias gs getservice來實現這樣當我們執行gs其實就是執行getservice(圖)
圖 Windows Powershell
除此之外我們還可以在Windows PowerShell中為系統中的應用程序創建別名這樣我們調用某個程序時就不用進入其所在路徑並輸入程序名進行調用了例如我們要為活動目錄工具dsmgmtexe創建別名ad可以在Windows PowerShell命令行中執行setalias ad c:\windows\system\dsmgmtexe其中ad就是命令別名c:\windows\system\是dsmgmtexe所在路徑我們在Windows PowerShell命令行中執行ad可以看到調用了dsmgmtexe工具(圖)
圖 Windows Powershell
當然可以創建別名也可以刪除別名比如我們要刪除剛才創建的dsmgmtexe的別名ad可以在Windows PowerShell命令行下執行removeitem alias:ad即可這樣當我們執行別名ad時會顯示錯誤因為它已經被刪除了(圖)
圖 Windows Powershell
自定義函數實現特殊需要
Windows PowerShell優於CMD的一個特性是可以創建自定義函數以實現某些特殊需要其實函數和上面的別名比較類似不過函數比別名要復雜它可以使用參數我們可以通過函數來創建復雜PowerShell命令的快捷方式比如我們創建一個名為displayRunningService的函數以顯示當前服務器上正在運行的所有服務可以執行命令function displayRunningService {getservice | whereobject {$_Status eq Running}}其中function申明創建函數displayRunningService是函數名{getservice | whereobject {$_Status eq Running}}是篩選出當前所有狀態為Running的系統服務即當前正在運行的服務函數創建完畢後如果此後我們要查看當前服務器中正在運行的服務只需在Windows PowerShell的命令行下執行displayRunningService即可如果要刪除該函數我們只需執行RemoveItem Function: displayRunningService就可以了(圖)
圖 Windows Powershell
上面的例子只是Windows PowerShell自定義函數的一個簡單的例子在系統管理中管理員完全可以根據自己的需要創建各種函數實現一勞永逸快速進行系統的管理和維護此外Windows PowerShell中也可創建帶參數的自定義函數以滿足更復雜靈活的系統管理的需要
快速訪問注冊表
訪問注冊表是Windows PowerShell一個非常實用的特性利用該功能我們可以實現對注冊表的快速訪問通過注冊表鍵值了解系統狀況特別是在某些特殊情況下比如注冊表被鎖時這應該是我們通往注冊表的一條通道在Windows PowerShell的命令行下可執行cd path hklm:\可進入注冊表HKEY_LOCAL_MACHINE主鍵路徑下繼續執行dir可顯示HKLM主鍵下的各子鍵執行cd Software\Microsoft\Windows\CurrentVersion\Run進入系統自啟動項下執行gp *將顯示RUN項的屬性以及下面的鍵值輸出結果中前面四個為RUN項的屬性據此管理員可進行進行分析啟動項是否正常說明一下剛才輸入的命令中Gp *是getitemproperty path name *的快捷方式簡化的輸入(圖)
圖 Windows Powershell
獲取詳細的系統信息
Windows PowerShell和系統底層函數無縫結合我們可以利用其提供的對象獲取詳細的系統信息比如我們要獲取服務器的DNS信息可以在Windows PowerShell中執行命令GetWMIObject win_service filter name=DNS | formattable以查看當前DNS運行狀態其中GetWMIObject win_service是使用WMI對象獲取系統服務信息filter name=DNS是篩選其中的DNS服務當然我們可以替換ame=DNS的DNS獲取其他服務信息formattable是以列表的形式顯示結果另外我們還可以加入computer參數獲取域中其他主機的DNS信息比如執行命令GetWMIObject win_service filter name=DNS computer | formattable可以獲取域中jp主機的DNS運行信息(圖)
圖 Windows Powershell
總結上面六個應用實例只是Windows PowerShell應用中極少的一部分並且每一部分的實例只是其簡單應並沒要深入下去毫不諱言Windows PowerShell的一個非常強大的系統管理工具系統通過本文大家能夠對其引起重視它進而學習它使用它提升你的系統管理維護效率
From:http://tw.wingwit.com/Article/os/xtgl/201311/9059.html