在 PowerShell 中使用命令別名
如果具備使用傳統 Windows 命令提示字元殼層 (cmd.exe) 的經驗,您可能也熟悉批次命令,例如:
- dir,用於列出檔案和資料夾。
- cd,用於變更目錄。
- mkdir,用於建立新的目錄。
在許多案例中,您可以在 Windows PowerShell 內繼續使用這些命令,因為在幕後,這些命令會執行原生的 PowerShell Cmdlet。 dir 命令會執行 Get-ChildItem、cd 命令會執行 Set-Location 而 mkdir 命令會執行 New-Item。 這些命令適用於 PowerShell,因為其是執行相等動作的 Cmdlet 別名。
別名和參數
請務必注意,別名通常不支援原始命令所使用的參數。 例如,若在主控台中執行 dir /o:d 命令,您將收到錯誤,因為 Get‑ChildItem 不會辨識 /o:d 參數。 您可以改為使用 dir | sort LastAccessTime 以遞增順序列出依上次存取日期和時間排序的目前資料夾內容。
Get-Alias
PowerShell 不僅包含舊版批次和 Linux 命令的別名。 也提供其他別名,例如 gci (Get-ChildItem),您可以用於將完整命令取代為其縮寫的標記法,並將所需的輸入量降到最低。 您可以使用 Get-Alias Cmdlet 來探索別名、所屬定義和執行的命令。 沒有包含參數的 Get‑Alias 會傳回已定義的所有別名。 您可以使用 -Name 參數 (位置參數),此參數也接受萬用字元以尋找特定別名的定義。 例如,執行 Get-Alias di* 命令會傳回 diff 和 dir 的別名。
您也可以使用 Get-Alias Cmdlet 來探索新的 Cmdlet。 例如,您使用 del 批次命令來刪除檔案或資料夾。 您可以輸入 Get-Alias del 命令來探索 del 是否為 Remove-Item 的別名。 您也可以執行 Get‑Alias -definition Remove-Item 命令來反轉探索程序,以探索 Remove-Item 是否有多個其他別名,包含 rd、erase 和 ri。
參數也可以有別名。 例如,-s 參數是 Get‑ChildItem Cmdlet 中 -Recurse 的別名。 事實上,對於參數,如果命令中確實包含的名稱部分足以唯一識別該參數,您可以使用如別名的部分參數名稱。
New-Alias
您也可以使用 New-Alias Cmdlet 來建立可對應至任何 Cmdlet 的自訂別名。 不過,請注意,在 Windows PowerShell 工作階段之間不會儲存自訂別名。 每次開啟 Windows PowerShell 時,您可以使用 Windows PowerShell 設定檔來重新建立別名。
延伸閱讀:如需有關建立和使用 PowerShell 設定檔的詳細資訊,請參閱 about_Profiles。
別名的缺點
別名可以協助您快速輸入命令,但通常會造成指令碼更難檢閱和理解。 其中一個原因是動詞-名詞語法清楚定義要執行的動作。 這種語法建立的命令,讀起來和看起來如同自然語言。 參數和部分參數名稱的別名會造成指令碼更難檢閱。 在大部分情況下,使用 Tab 鍵自動完成會讓命令輸入幾乎與輸入別名名稱一樣快,同時確保命令精確性。