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"
    	    }
    }
    

      

     

  • 相关阅读:
    》》》oracle新建用户
    SVN(subversion )服务端和客户端的下载安装使用
    《《《 【WEB前端】零基础玩转微信小程序——在vscode(Visual Studio Code)安装easy less
    《《《 【WEB前端】零基础玩转微信小程序——新建⼩程序项⽬
    《《《 【WEB前端】零基础玩转微信小程序——新建一个项目页面
    《《《 【WEB前端】零基础玩转微信小程序中的 相关代码dome03.wxml
    cocos2dx 流光着色器
    [NCTF2019]True XML cookbook
    [BJDCTF2020]EasySearch
    [GKCTF2020]老八小超市儿
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/10159924.html
Copyright © 2011-2022 走看看