如果是Windows 7,那么Powershell 2.0已經(jīng)預裝了。不過Windows XP就沒那么幸運了,需要自己安裝Powershell。Windows XP的Powershell 2.0集成在Windows Management Framework Core中,下載地址有點長,在這里:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=60cb5b6c-6532-45e0-ab0f-a94ae9ababf5#QuickDetails。如果搜索的話,就搜KB968930。
如果想知道是否已經(jīng)安裝了Powershell,有個很簡單的辦法:用[Win+R]打開“運行”窗口,輸入“powershell”,回車。如果打開了Powershell控制臺,那就是已經(jīng)安裝了Powershell啦。如果想查看Powershell的版本,有好幾種辦法,比如
- PS F:\> $Host.Version.ToString()
- 2.0
- PS F:\> $PSVersionTable
- Name Value
- ---- -----
- CLRVersion 2.0.50727.4961
- BuildVersion 6.1.7600.16385
- PSVersion 2.0
- WSManStackVersion 2.0
- PSCompatibleVersions {1.0, 2.0}
- SerializationVersion 1.1.0.1
- PSRemotingProtocolVersion 2.1
- PS F:\> Get-Host
- Name : ConsoleHost
- Version : 2.0
- InstanceId : 6632b7de-43d1-4ad1-8fcf-f632bdbd8387
- UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
- CurrentCulture : zh-CN
- CurrentUICulture : zh-CN
- PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
- IsRunspacePushed : False
- Runspace : System.Management.Automation.Runspaces.LocalRunspace
- PS F:\>
從開始菜單啟動“Windows Powershell”,或者通過“運行→powershell”打開的就是Powershell的控制臺窗口。默認的控制臺是80字符x25字符大小,黑底白字的窗口,不過這些都可以自定義。
和CMD控制臺窗口一樣,右鍵單擊Powershell控制臺窗口的頂部標題欄位置,在彈出的菜單中選擇“屬性”,即可打開控制臺窗口的屬性對話框。這個對話框有4個標簽頁:“選項”、“字體”、“布局”、“顏色”。
設置完并“確定”之后,設置的內(nèi)容被保存,同時窗口會根據(jù)設置立即改變。關(guān)閉控制臺窗口之后,下次以同樣的方式打開Powershell控制臺窗口,那么這些設置都會自動加載并應用。
為什么要說“同樣的方式打開”?如果常用CMD的話,這原因是一樣的,所以這些設置的保存都與Powershell的快捷方式有關(guān)。不用知道Windows是通過什么樣的方式讓設置與快捷方式相關(guān)的,但效果就是,通過不同的快捷方式打開的Powershell控制臺,應用的是不同的設置。比如,通過開始菜單打開的Powershell和通過“運行”窗口打開的Powershell,兩個控制臺窗口的設置就是不同的。
Powershell控制臺的快捷鍵和CMD控制臺的快捷鍵一樣,常用的有如下一些:
← →
|
左右移動光標
|
↑ ↓
|
在命令歷史中滾動選擇歷史中的命令,便于重復執(zhí)行命令,當然也可以先修改再執(zhí)行
|
Home
|
將光標移動到當前命令的第1個字符位置
|
End
|
將光標移動到當前命令的最后1個字符之后
|
Ctrl+Home
|
從當前位置開始,清除當前命令中前面所有字符
|
Ctrl+End
|
從當前位置開始,清除當前命令中后面所有字符
|
Backspace
|
向前刪除1個字符
|
Del
|
向后刪除1個字符
|
Esc
|
清除當前已經(jīng)輸入的命令
|
F3
|
顯示上次執(zhí)行的命令。如果通過↑和↓鍵選擇了歷史命令,并通過Esc、Backspace、Del清除或刪除了部分內(nèi)容,則F3可以恢復顯示這條歷史命令。如果按F3之前輸入了部分內(nèi)容,那F3顯示的歷史命令中相應的位置由輸入的字符替代。(這個說起來很麻煩,自己試試就知道了)
|
Tab
|
輸入命令時補全命令、文件,或者對象成員
|
Powershell腳本文件是以.ps1作為擴展名的。曾經(jīng)以為.ps1是Powershell 1.0的腳本文件擴展名,而Powershell 2.0的腳本文件擴展名是.ps2,但經(jīng)過試驗,Powershell目前不管哪個版本,都不認.ps2這個擴展名。
Powershell只認識ANSI編碼(在簡體中文Windows下就是GBK)的腳本文件。如果你把腳本文件用UTF-8格式保存,而腳本中又正好有中文的話,Powershell在執(zhí)行腳本的時候會將中文都顯示成亂碼,偶爾還會報告語法錯誤。
示例說話,先來個Hello World:
- #hello.ps1
- "Hello World"
腳本中的第1句注釋不是必須的——對了,Powershell腳本使用#號來標記行注釋,#可以出現(xiàn)在一行的行首,也可以是其它位置,總之,一行內(nèi)在它之后的內(nèi)容都被認為是注釋內(nèi)容了——回頭來說,這個腳本只干了一件事情,就是輸出Hello World。
是不是有點疑惑,因為這里沒有看到任何一個命令。是的,Powershell就是這么神奇,常量值、變量值或者通過表達式運行出來的值,可以直接輸出到控制臺。所以Powershell可以用作計算器,比如,在控制臺中輸入命令:
- PS F:\>1 + 3 * 4 # 這將會直接輸出運算結(jié)果13
- 13
扯遠了?,F(xiàn)在回過頭來運行hello.ps1,不過很遺憾,如果你是第一次執(zhí)行Powershell腳本,那么有可能會得到一個錯誤消息:
- PS F:\> .\hello.ps1
- 無法加載文件 F:\hello.ps1,因為在此系統(tǒng)中禁止執(zhí)行腳本。有關(guān)詳細信息,請參閱 "get-help about_signing"。
- 所在位置 行:1 字符: 12
- + .\hello.ps1 <<<<
- + CategoryInfo : NotSpecified: (:) [], PSSecurityException
- + FullyQualifiedErrorId : RuntimeException
錯誤報告說系統(tǒng)禁止執(zhí)行腳本——因為Powershell的執(zhí)行策略阻止了這個被它認為不安全的腳本運行。
Powershell的執(zhí)行策略有4個:
當前使用的什么執(zhí)行策略,可以通過“Get-ExecutionPolicy”查看;默認情況下,Powershell的執(zhí)行策略是Restricted。為了方便進行練習,可以通過“Set-ExecutionPolicy”命令將執(zhí)行策略改為“RemoteSigned”,就像這樣
- PS F:\> Get-ExecutionPolicy # 查看當前的執(zhí)行策略
- Restricted
- PS F:\> Set-ExecutionPolicy RemoteSigned # 回車后會有確認提示,當然選Y
- 執(zhí)行策略更改
- 執(zhí)行策略可以防止您執(zhí)行不信任的腳本。更改執(zhí)行策略可能會使您面臨 about_Execution_Policies
- 幫助主題中所述的安全風險。是否要更改執(zhí)行策略?
- [Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值為“Y”): Y
- PS F:\>
現(xiàn)在,Hello World終于運行出來了
- PS F:\> .\hello.ps1
- Hello World
- PS F:\>
知道為什么要在hello.ps1前面加上“.\”么?如果有研究精神,就該試試不加“.\”的hello.ps1。雖然執(zhí)行會出現(xiàn)錯誤,但錯誤信息里說得很清楚,包括為什么這樣不行,以及應該怎么樣。
既然已經(jīng)開始使用Powershell,那么有兩個伙伴會一直陪伴你的Powershell生涯:錯誤信息和Help。
中文Windows下的Powershell,其大部分錯誤信息都包含有中文的說明,請不要忽略它,因為如果不了解錯誤原因,就不清楚該如何去更正。而錯誤信息正是了解錯誤原因最直接的途徑。
如果不清楚該怎么做,Help通常會提供給你非常有效有信息。比如,直接在控制臺里輸入Help并回車,控制臺里就會出現(xiàn)一大段文字說明Help可以干什么,并在備注里提供了一些有效的參考信息。然后就可以根據(jù)提示嘗試一下“help get-command”,從新的信息中你就可以接觸到Powershell中的各種命令了——哦,在Powershell中它們叫Cmdlet。
更多建議: