3. Powershell關鍵命令介紹

3. Powershell關鍵命令介紹

我們將在這介紹三種簡單的但是很關鍵的命令,這些命令能夠讓你的 Powershell之旅更加順利。
當你學習的時候,請記住一條軍規,那就是Powershell的動詞-名詞(Verb-noun)結構, 就如get-PSProvider命令,get是動詞,PSProvider是名詞。
今天要介紹的三條關鍵命令是:get-comand, get-help, get-member


1. Get-Command

我們就從get-command開始,它是用來列出Powershell所有的動詞-名詞結構,當然,這些也被稱爲內置的cmdlets。
假設你已經打開了Powershell窗口,上面有提示,類似PS>;, 現在你只要輸入一個帶連字符號的語句:
get-command
 
clip_p_w_picpath002
 
我們可以使用通用符 星號 * 來過濾該列表,比如:
Get-command out*
clip_p_w_picpath004
 
Get-command add*
clip_p_w_picpath006
 
Get-command get-*
clip_p_w_picpath008
 
下面就是顯示以set開頭的cmdlets
Get-command set* -commandtype cmdlet
clip_p_w_picpath010
 
我們可以把這些輸出以表格形式來顯示,(Format-table), 這裏將用到 Powershell的管道符號 |, 具體語句是:
Get-command | format-table name,definition –auto
 
clip_p_w_picpath012
 
我們現在只是體會、測試和感覺Powershell, 因此你完全可以按照建議進行任何的自我體驗。 當你看到諸多內置命令時,隨便選定一個cmdlet作爲研究對象,比如
Get-psprovider
 
下面就是我運行這個命令的結果
clip_p_w_picpath014
 
家庭作業: 使用PSProvider
get-psprovider | Get-member
clip_p_w_picpath016
 

命令: PSSnapin

PSSnapin向我們展示內置cmdlets的來源於哪裏
Get-pssnapin
 
clip_p_w_picpath018
 
Get-PSSnapin |ft name, description –autosize
clip_p_w_picpath020
 
你可能也注意到,
  • .  每個Powershell的名詞都是唯一的,PSSnapin,command,PSProvider。
  • .  每個管道符|後面連着FT 意思是將輸出格式作爲一個表格形式(Format-Table),相對的是,把輸出作爲清單形式那就是使用 fl (Format-list). FT後面連着屬性的名稱,每個名稱以分號分開。
  •  . 命令的最後是-autosize, 他讓Powershell每列的寬度自動調整適應。
  •  . 當你使用 format-table 或者ft, 試着在後面加上-autosize,或者-auto,會讓你的輸出更緊湊、美觀。
下面這個例子,我使用了ft來省略Description屬性,只是顯示名稱
Get-PSSnapin |ft name
clip_p_w_picpath022


2. Get-Help

拒絕傲慢,把驕傲丟在一邊,求助Powershell的內置幫助吧。 我們所需要學習的是如何尋求Powershell內置的幫助以及它能給我們帶來的好處。
也許老的DOS系統的幫助的經歷,讓我們不太願意再求助內置的幫助,但是,難道我需要建議大家都使用互聯網的搜索來得到嗎?幸好,這個現象沒有在Powershell中出現。
Powershell的幫助有很多很有趣的開發,比如-full和-example, 一般來說-examples也可以工作,這是在Powershell裏面非常少見的一個名詞的複數。
嘗試下面這個例子:
Get-help get-wmiobject
clip_p_w_picpath024
 
請注意: get-help不需要管道符號。事實上,管道符只會妨礙到get-help。
對下面的語句,Powershell會直接報錯
Get-help | get-wmiobject cim_chip
clip_p_w_picpath026
 
因此,我們還是按照簡單的模式來輸入
Get-help get-wmiobject
clip_p_w_picpath028
 

我的經驗之談

對於初學者而言,Powershell的幫助是最愛;然而對於中級高手而言,卻會忽略掉Powershell幫助;對於大師而言,他又會迴歸到使用get-member。 Powershell大師之所以是大師,是因爲他們知道如何使用、什麼時候使用合適的工具,比如get-help工具。

隱藏的Powershell 關於About文件

在Powershell文件夾裏面(又被稱爲 $PSHome **), 你會發現全部的關於(about)文件。在這些文件裏面,都是以About_開頭,你將會發現很多的內容,比如foreach。
我的經驗是,通過輸入get-hep foreach你不能直接的得到幫助,但是你可以通過直接讀該文件而得到大量幫助信息 $PSHome\about_foreach.help.txt
 
clip_p_w_picpath030
下面這個cmdlet向我們展示了About文件的名稱
 
# List all the About help files        
$i=0        
$Homes = get-ChildItem "$PSHome\about*.*" -recurse        
foreach ($About in $Homes) {$About.name; $i++}
 
結果: 55個文件清單(根據版本不同數字可能不同)
clip_p_w_picpath032
 
**在我的系統裏面, $PShome就是在 C:\WINDOWS\system32\WindowsPowerShell\v1.0
clip_p_w_picpath034


3. Get-Member

從我以前犯的錯誤得出來的教訓,希望你能夠銘記Get-member用法。關鍵點就是我們要把對象放在開頭,而不是在命令的後面,另外一個教訓就是我經常忘了管道符。
正確的格式是:
Get-process | get-member
clip_p_w_picpath036
錯誤
  •  get-Member | get-Process  (順序錯誤)
  • get-Process get-Member (忘記了管道符)
家庭作業
 
Get-process | Get-Member -Membertype property
clip_p_w_picpath038
 
Get-process | Get-Member -Membertype method
clip_p_w_picpath040
 
從上面來看,所有的命令都不區分大小寫的,比如get-Process, Get-Process 和get-Process, 三者的結果都一樣。在Powershell裏面, 大寫的命令語句不會影響命令執行。


Tab鍵的自動完成

可能是考慮到我們比較懶,Powershell也提供了支持tab鍵自動完成的功能。 一旦你輸入了足夠的命令來確保該語句唯一,即不會被別的重複的時候,你可以直接按tab鍵,powershell就會自動完成接下來的命令。
Get-process get-mem(tab鍵)會自動擴展成:get-process get-member.
你可能也知道了,tab鍵的自動完成不但對某個命令起作用,對於所有的命令都起作用。
同樣,當你使用Powershell的參數的時候,你也可以使用相同的自動填寫功能。比如
-auto就等同於-autosize, -f就是相當於-filter.
Powershell裏面有太多的自動完成了。


總結:Powershell命令行

如果你和一位經驗豐富的Powershell用戶,或者和某位專家聊天,他們都會告訴你,成功的祕訣就是簡單。
請堅守這個定律直到你成功了。而這個基本定律的三大幫手就是,get-command, get-member和get-help
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章