函數(shù)是自定義的Powershell代碼,有三個(gè)原則:
簡(jiǎn)短:函數(shù)名簡(jiǎn)短,并且顯而易見(jiàn)。
聚合:函數(shù)可以完成多個(gè)操作。
封裝和擴(kuò)展:將一批Powershell語(yǔ)句進(jìn)行封裝,實(shí)現(xiàn)全新的功能需求。
函數(shù)的結(jié)構(gòu)由三部分組成:函數(shù)名,參數(shù),函數(shù)體
復(fù)制代碼 代碼如下:
Function FuncName (args[])
{
code;
}
使用函數(shù)作為別名
假如Powershell不支持”cd..” 命令,你可以通過(guò)定義函數(shù)實(shí)現(xiàn)這個(gè)功能:
復(fù)制代碼 代碼如下:
PS C:Powershell> Function cd.. { cd ..}
PS C:Powershell> cd..
PS C:>
假如Powershell不支持Ping命令,也可以如法炮制:
復(fù)制代碼 代碼如下:
PS C:PowerShell> Function Ping2 { PING.EXE -n 1 $args }
PS C:PowerShell> Ping2 www.mossfly.com
正在 Ping mossfly.com [116.255.205.70] 具有 32 字節(jié)的數(shù)據(jù):
請(qǐng)求超時(shí)。
116.255.205.70 的 Ping 統(tǒng)計(jì)信息:
數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 0,丟失 = 1 (100% 丟失),
控制臺(tái)上多行輸入定義函數(shù)
復(fù)制代碼 代碼如下:
PS C:PowerShell> Function MyPing
>> {
>> PING.EXE -n 1 $args
>> }
>>
PS C:PowerShell>
把函數(shù)精簡(jiǎn)成一行
你 可以將一個(gè)函數(shù)定義在一行上,但是這樣閱讀和理解起來(lái)就不方便,可以在每條命令后加分號(hào)進(jìn)行分割。
復(fù)制代碼 代碼如下:
PS C:PowerShelltest> Function cd...{ cd.. ; cd.. }
PS C:PowerShelltest> cd...
PS C:>
使用文本編輯器
函數(shù)可以在文本編輯器上編寫(xiě),寫(xiě)完以后復(fù)制進(jìn)Powershell控制臺(tái)即可。如果控制臺(tái)設(shè)置為快速編輯模式,從記事本復(fù)制后,直接在控制臺(tái)鼠標(biāo)右鍵即可完成黏貼。
更新函數(shù)
如果要更新已經(jīng)定義好的函數(shù),簡(jiǎn)單的方法是重新定義,這樣新的定義會(huì)覆蓋舊的定義。但是如果函數(shù)代碼沒(méi)有保存副本,可以先將函數(shù)定義導(dǎo)出到ps文件,然后就可以編輯了。
復(fù)制代碼 代碼如下:
PS C:PowerShell> $function:MyPing | Out-File myPing.ps1
PS C:PowerShell> $function:MyPing
PING.EXE -n 1 $args
PS C:PowerShell> $function:MyPing | Out-File myPing.ps1
PS C:PowerShell> .myPing.ps1
必須指定 IP 地址。
PS C:PowerShell> notepad.exe $$
刪除函數(shù)
控制臺(tái)定義的函數(shù)只會(huì)在當(dāng)前會(huì)話生效,一旦控制臺(tái)退出,會(huì)自動(dòng)消失。在不關(guān)閉控制臺(tái)的條件下刪除一個(gè)已經(jīng)定義好的函數(shù),可是使用虛擬驅(qū)動(dòng)器的方法:
復(fù)制代碼 代碼如下:
PS C:PowerShell> del Function:myPing
PS C:PowerShell> myPing
無(wú)法將“myPing”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。請(qǐng)檢查名稱的
拼寫(xiě),如果包括路徑,請(qǐng)確保路徑正確,然后重試。
所在位置 行:1 字符: 7
+ myPing
+ CategoryInfo : ObjectNotFound: (myPing:String) [], CommandNotFo
undException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [3,General]: 未找到命令 myPing,但它確實(shí)存在于當(dāng)前位置。Windows Pow
Shell 默認(rèn)情況下不從當(dāng)前位置加載命令。如果信任此命令,請(qǐng)改為鍵入 ".myPing"。有
關(guān)更多詳細(xì)信息,請(qǐng)參閱 "get-help about_Command_Precedence"。