1. 程式人生 > >函式用法

函式用法

與其他語言一樣,powershell也存在自己的函式,這節主要介紹一些函式的用法。


1、定義一個函式

function add      #add是函式名
{
    param(        #函式內部包含的變數,[int]表示定義的變數只能是整型
        [int]$a,
        [int]$b
    )
    echo "$a + $b"    #函式體,具體執行的程式碼
}
PS C:\> add 2 3        #呼叫函式,2  3 是傳入add函式的兩個變數,若傳入的變數不是整型會報錯
2 + 3

PS C:\> add 2
2 + 0

PS C:\> add          #整型變數不足兩個變數預設是0,字元型變數預設是“”
0 + 0

PS C:\> add 1 2 3
1 + 21

 

2、函式的返回值

  當函式只有一個返回值時,返回的是一個值,若有多個返回值時,返回一個數組。

function a([int] $x)
{
    "$x"
    "$x + $x"
    "$x * $x"
}
PS C:\> $b = a 2

PS C:\> $b
2
2 + 2
2 * 2

PS C:\> $b[1]
2 + 2

PS C:\> $b -is [array]
True

  

   3、限定引數的值的範圍

   函式中傳入的引數可以提前設定好值,這個方法是ValidateSet

,可以理解成列舉。

function meiju 
{
    param(
        [ValidateSet('a','b','c')]      #設定$n的取值範圍是“a”,“b”,“c”其中之一
        $n  
    )
    echo "$n"
}
PS C:\> meiju b    #傳入的值是“abc”其中之一
b

  若傳入abc以外的值會報錯:

  

  4、限定傳入引數的個數

  powershell的函式中給出了一個限定傳入引數個數的方法,ValidateCount,可以設定傳入值得個數。

function num
{
    param(
        [ValidateCount(1,3)]    #限定允許傳入的值是1-3個,不符合要求報錯
        [string[]]          #聲名$a是一個字串陣列
        $a
    )
    echo $a
}
PS C:\> num 1,2,3    #num函式接收一個數組,陣列的長度是3
1  
2
3

  若陣列的長度大於3,則報錯

 

 

  5、萬能變數

    一般的,我們在設定變數時候會提前聲名變數的型別,字元型、整型、日期型......,若不宣告可以接受整型也可以接受字元型,但是如果我們不知道有多少個變數要傳入可以用$args,它是一個萬能的變數,不限傳入的個數,也不限定型別,也可以省略定義。

function all
{
    foreach($i in $args)
    {
        echo $i
    }
}
PS C:\> all 1
1

PS C:\> all 'abc'
abc

PS C:\> all 'abc' 123 '1q2w' 4.12p
abc
123
1q2w
4.12p

  

  6、隱藏輸入的密碼

   在Parameter這個限制語句之前加了一句“[System.Security.SecureString]”,這個修飾語句用於將輸入引數設定為安全字串型別,這樣輸入這個引數的值時,就會變成星號了

function secret
{
    param(
        [System.Security.SecureString]
        [parameter(mandatory=$true)]
        $passwd
    )

    $mima = (New-Object System.Management.Automation.PSCredential("ticp",$passwd)).GetNetworkCredential().Password
    echo $mima
}