zoukankan      html  css  js  c++  java
  • 函数用法

    与其他语言一样,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

    【补充】

      为powershell脚本设置参数变量

    编写一个a.ps1的脚本,内容如下

     

    为脚本传入参数,命令行可以识别到ps1脚本中的参数名。

     

     【补充】使用另一个脚本中定义的函数

    若a.ps1脚本中定义了两个函数  

      

    在其他脚本中调用a.ps1脚本中的函数:

    . "脚本路径"      #调用方法

      

    2、函数的返回值

      powershell中的函数可以有多个返回值,并且可以不用return返回,每一条输出都是一个返回值。但是一旦使用return后续的代码将不会执行。

    function duo
    {
        $a=1
        $b=2
        echo $a
        echo $b
        echo "123"
        return "xyz"
    
    }
    

      函数duo中,可以看出,输出了3个值,并使用return返回了一个值,此时该函数将会有4个返回值,以数组形式返回,在调用时可以:

    $a,$b,$c,$d = duo
    

      若要取出特定的某个值,可以:

    $a = duo
    echo $a[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
    }

      

     7、函数的开关

      我们在使用ping命令时候,通常会用到一个-t的参数,这个参数的作用是一直ping,若不跟这个参数只ping4次,作用相当于开关。下面的小例子就实现了刚才的功能

    	function p
    	{
    	    param(
    	        [switch]  #开关参数
    	        $t
    	    )
    	
    	    if($t)
    	    {
    	        echo "......"
    	    }
    	    else
    	    {
    	        echo "4"
    	    }
    }
    

      

     

  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/10159924.html
Copyright © 2011-2022 走看看