PowerShell函數(shù)跟其它的編程語言的函數(shù)差不多,主要涉及輸入?yún)?shù)、處理、輸出參數(shù)、返回值、如何調(diào)用等方面的內(nèi)容,下面逐一介紹。
1、PowerShell函數(shù)定義
定義函數(shù)使用function關(guān)鍵字,使用自定義的標(biāo)識(shí)符作為函數(shù)名,使用一對(duì)大括號(hào)括起函數(shù)體。如下:
復(fù)制代碼 代碼如下:
function <函數(shù)名>{
<函數(shù)體>;
}
舉例:
復(fù)制代碼 代碼如下:
function Test-Fun{
$args0 = $args[0]
$args1 = $args[1]
Write-Host "p1=$args[0], p2=$args[1]"
Write-Host "p1=$args0, p2=$args1"
}
在做這個(gè)例子的時(shí)候,洪哥遇到了很悲推的一幕。感覺完全相同的兩種輸出方式,結(jié)果是截然不同。洪哥只能說,雙引號(hào)中的$args變量,居然不管后面的中括號(hào)和下標(biāo),真TMD的太詭異了,慎用!真相如下:
復(fù)制代碼 代碼如下:
PS > function Test-Fun{
>> $args0 = $args[0]
>> $args1 = $args[1]
>> $msg = "p1=$args[0], p2=$args[1]"
>> Write-Host "p1=$args[0], p2=$args[1]"
>> Write-Host $msg
>> Write-Host "p1=$args0, p2=$args1"
>> }
>>
PS > test-fun 111 222
p1=111 222[0], p2=111 222[1]
p1=111 222[0], p2=111 222[1]
p1=111, p2=222
2、PowerShell函數(shù)輸入?yún)?shù)
在函數(shù)體中,使用Param()方法來定義函數(shù)的輸入?yún)?shù),如下:
復(fù)制代碼 代碼如下:
function <函數(shù)名>{
Param($p1,$p2,...);
<函數(shù)體>;
}
關(guān)于PowerShell函數(shù)輸入?yún)?shù)的更多詳細(xì)介紹,比如“位置參數(shù)”、“名稱參數(shù)”、“參數(shù)屬性”等,請(qǐng)移步“PowerShell教程之PowerShell函數(shù)輸入?yún)?shù)”。3、PowerShell函數(shù)返回值
PowerShell會(huì)把所有函數(shù)體中的輸出打包成一個(gè)System.Array對(duì)象當(dāng)作返回值。雖然PowerShell也支持return語句,但是洪哥前面講的這句話仍然有效。所以,這個(gè)return就是擺設(shè)。
4、PowerShell函數(shù)調(diào)用
函數(shù)的調(diào)用很簡(jiǎn)單,跟VB調(diào)用函數(shù)的方式差不多。如下:
復(fù)制代碼 代碼如下:
<函數(shù)名> [[-參數(shù)名1] 參數(shù)值1[, [-參數(shù)名2] 參數(shù)值2], ...]
舉例:
Test-Fun "參數(shù)值"
Test-Fun "參數(shù)值1", "參數(shù)值2", "參數(shù)值3"
Test-Fun -p1 "參數(shù)值1" -p2 "參數(shù)值2"