Windows PowerShell 採用所謂「別名」(Aliasing) 的機制,讓使用者使用替代名稱來參照命令。有了別名,熟悉其他殼層的使用者即可在 Windows PowerShell 中反覆使用早已熟知的通用命令名稱執行類似的作業。儘管本文件不打算深入討論 Windows PowerShell 別名,您仍可在開始使用 Windows PowerShell 時就使用別名。

別名是將您所輸入的命令名稱關聯到另一個命令。例如,Windows PowerShell 的內部函數 Clear-Host 會清除輸出視窗。如果您在命令提示字元輸入 clsclear 命令,Windows PowerShell 便會將其解譯成 Clear-Host 函數的別名並執行 Clear-Host 函數。

這個功能有助於使用者學習 Windows PowerShell。其一,Cmd.exe 和 UNIX 的使用者大部分早已熟知許多命令的名稱,而即使 Windows PowerShell 功能相當的命令未必產生相同的結果,但形式上卻非常相近,所以使用者不需要先記住 Windows PowerShell 名稱就能直接應用於工作的執行。其次,已經熟悉其他殼層的使用者在學習新殼層時,會有挫折最主要的原因即為「手指反射動作」導致出錯。若您已有多年的 Cmd.exe 使用經驗,當您想要清除佈滿輸出的螢幕畫面時,可能會不假思索地輸入 cls 命令然後按 ENTER 鍵。如果 Windows PowerShell 沒有提供 Clear-Host 函數的別名,您就會看到「'cls' is not recognized as a cmdlet, function, operable program, or script file.」錯誤訊息,然後束手無策地不知該如何清除輸出。

下表摘列了 Windows PowerShell 中可用的 Cmd.exe 和 UNIX 常見命令:

cat

dir

mount

rm

cd

echo

move

rmdir

chdir

erase

popd

sleep

clear

h

ps

sort

cls

history

pushd

tee

copy

kill

pwd

type

del

lp

r

write

diff

ls

ren

 

如果您已習慣使用這些命令,而又想知道 Windows PowerShell 原生命令的實際名稱,則可使用 Get-Alias 命令:

PS> Get-Alias cls

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           cls                             Clear-Host

為了提高範例的可讀性,《Windows PowerShell 使用手冊》盡量避免使用別名。不過,如果您正在研究從別處取得的 Windows PowerShell 程式碼片段或想要自行定義別名,儘早了解別名仍將有所幫助。本節剩餘的部分將討論標準別名以及如何自行定義別名。

解讀標準別名

以上所述的別名是為了和其他介面維持名稱相容而設計,但 Windows PowerShell 內建的別名則有所不同,通常是基於簡潔的目的而設計。這些簡短名稱比較方便輸入,但若您不知其原意就完全無法判讀。

Windows PowerShell 嘗試在清楚和簡潔之間謀求折衷辦法,因而提供一組以一般動詞和名詞的速記名稱為主的標準別名。這樣一來,只要您知道速記名稱就能判讀一般 Cmdlet 的基礎別名集合。例如,在標準別名中,動詞 Get 縮寫成 g,動詞 Set 縮寫成 sItem 縮寫成 i,名詞 Location 縮寫成 l,名詞 Command 則縮寫成 cm

以下簡短範例將說明其組合方式。Get-Item 的標準別名是 g (代表 Get) 和 i (代表 Item) 的組合:gi。Set-Item 的標準別名是 s (代表 Set) 和 i (代表 Item) 的組合:si。Get-Location 的標準別名是 g (代表 Get) 和 l (代表 Location) 的組合:gl。Set-Location 的標準別名是 s (代表 Set) 和 l (代表 Location) 的組合:sl。Get-Command 的標準別名是 g (代表 Get) 和 cm (代表 Command) 的組合:gcm。縱然實際上並沒有 Set-Command Cmdlet,但如果有的話,您就能聯想到其標準別名是 s (代表 Set) 和 cm (代表 Command) 的組合:scm。甚至,熟悉 Windows PowerShell 別名的使用者一看見 scm 便可猜到此別名是指 Set-Command。

建立新別名

您可以使用 Set-Alias Cmdlet 自行建立別名。例如,下列陳述式建立了<解讀標準別名>中所討論的 cmdlet 標準別名:

Set-Alias -Name gi -Value Get-Item
Set-Alias -Name si -Value Set-Item
Set-Alias -Name gl -Value Get-Location
Set-Alias -Name sl -Value Set-Location
Set-Alias -Name gcm -Value Get-Command

Windows PowerShell 內部會在啟動期間使用像這樣的命令,但這些別名均無法變更。若您嘗試實際執行上述任何命令,就會出現錯誤表示無法修改別名。例如:

PS> Set-Alias -Name gi -Value Get-Item

Set-Alias : Alias is not writeable because alias gi is read-only or constant and cannot be written to.

At line:1 char:10

+ Set-Alias <<<< -Name gi -Value Get-Item




目錄