加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

函数用法

发布时间:2020-12-15 23:07:20 所属栏目:安全 来源:网络整理
导读:与其他语言一样,powershell也存在自己的函数,这节主要介绍一些函数的用法。 1、定义一个函数 function add #add是函数名{ param( #函数内部包含的变量,[int]表示定义的变量只能是整型 [int]$a,[int]$b ) echo "$a + $b" #函数体,具体执行的代码} PS C:

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

  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读