<b>簡介</b>
Windows Powershell是專為系統管理者設計的全新Windows指令行界面外殼程式。可以說,它就是模仿了Linux的shell而設計的。與linux中的bash什麼的一樣,它也包含了互動式的提示和腳本環境。兩者可以組合也可以獨立使用。
在Powershell中出現了一個叫cmdlet的概念,它是嵌入到外殼程式中的一個簡單的單一功能指令行工具。每個cmdlet都可以單獨使用,當然也可以用腳本讓它們組合在一起使用。Powershell包含了一百多個基本的核心cmdlet,使用者也可以自己編寫cmdlet。其實,cmdlet可以簡單的了解成内部指令。隻是在Powershell中附帶了更多的内部指令。
這些cmdlet(全稱是command-let)的格式都是一緻的:“指令-對象”
那麼,與我們熟悉的cmd.exe、SH、KSH、CSH和BASH等外殼有什麼不同呢?按官方文檔的說法有:
--Powershell不處理文本,僅針對于.net平台
--附帶大量一緻界面的内置指令
--所有指令使用同一指令分析程式,指令學習輕松。(就是說都是MS做的,而不像linux那樣混亂,是以指令風格一緻)
另外,以前許多在cmd.exe下,或者bash下執行的指令,在powershell中也都可以執行(其實是轉換成powershell中的類似指令執行)。
<b>Powershell cmdlet</b>
cmdlet(讀作"command-let")是powershell中,用于操作對象的單一功能指令。可以通過其名稱格式識别,-前後分隔的分别是動詞和名詞,例如:get-help、get-process、start-service
傳統的外殼中,指令是從非常簡單(例如attrib.exe)到非常複雜(如netsh.exe)的可執行程式。而在powershell中,多數cmdlet非常簡單,它們設計為與其它cmdlet組合使用。例如"get"用于檢索資料,"set"用于建立或修改資料,"format"僅設定資料格式,"out"僅将輸出定向到指定的目标。
<b>腳本語言</b>
powershell中使用新的腳本語言而不是重用現有語言。因為它是用于管理.net對象的,而且需要為cmdlet提供一緻的環境,它要支援複雜的任務,要與.net中使用的進階語言(比如C#)一緻。
在powershell中可以運作以前所有的指令行程式,也可以啟動圖形界面的windows程式。還可以捕獲程式生成的文本。
<b>管道</b>
powershell中支援管道,與linux和cmd中的用法都一緻。例如:ipconfig|findstr 字元
就可以把ipconfig輸出的文字中包含指定字元串的行提取出來。但是要注意findstr對大小寫是敏感的。
大家可以試試:ipconfig|findstr Gateway
<b>交換式環境與腳本</b>
與其它的shell程式相同,Powershell也支援完全互動式環境。在提示符下輸入指令會執行,或按需求發送到其它指令或重定向到檔案中。
同時,Powershell中也完全支援腳本。在Powershell中,腳本檔案 的擴充名為.ps1,要運作腳本,在指令提示符下鍵入該腳本的名稱即可。(腳本的擴充名是可選的)
例如:
c:\test\testscript.ps1
或
c:\test\testscript
即使腳本在目前目錄中,也必須指定腳本檔案的完全限定路徑。若要訓示目前目錄,請鍵入目錄名稱或使用點 (.) 表示目前目錄(這一點與linux相同,而不同于cmd)。例如:
.\testscript.ps1
雖然腳本在一些企業中非常有用 -- 甚至是必需的,但是它們可以用于傳播惡意代碼。是以,Windows PowerShell 中的安全政策(稱為執行政策)允許您确定腳本是否可以運作,以及它們是否必須包括數字簽名。
為了消除明顯的風險,Windows PowerShell 中的執行政策都不允許通過輕按兩下腳本的圖示來運作它。有關詳細資訊,請鍵入:
get-help about_signing
Windows PowerShell 還包括一種非常豐富的腳本語言,使用該語言可以建立從最簡單到非常複雜的腳本。它支援用于循環、條件、流控制和變量指派的語言結構。
本文轉自 霜寒未試 51CTO部落格,原文連結:http://blog.51cto.com/51bbs/147882,如需轉載請自行聯系原作者