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