11. PoweShell - 函数

  • PowerShell 函数

    1. 介绍

      PowerShell脚本中,可以将常用的代码块集成在一个函数内,这样提高脚本的高可用性和易维护性;当需求变化发生时候,只需改进或删除对应的代码块即可;

      代码块即函数;函数使用”$input”变量来从管道中获取信息;函数,在获取数据时,$input变量会接受所有的信息;

       

  1. 筛选器

    它是函数的一种特殊形式,使用”$_”变量来从管道中获取信息;在获取信息时,$_变量会一边接受来自管得符的信息,一边进行筛选(运算)操作;

     

    对于函数:管道符将数据一次以集合方式传入函数内部,函数需要使用循环或递归方式处理;

     

    对于筛选器:管道符没传入一个数据,代码就执行一次,直至所有数据传入完毕;

     

     

  2. 声明函数

    Function (关键字) 函数名 (参数) {代码}

    Function time {get-date}

     

  3. 调用函数

    Time

    结果: Monday,April 27, 2015 3:42:23 PM”

     

  4. 函数的阶段处理

    在函数中,还可以进一步分为下列3个处理步骤:

    1. begin - 只在函数第一次开始时执行一次,适用于放置初始化函数的代码。

    2. process - 每一次调用函数时都执行

    3. end - 只在函数结束时执行一次

     

    并不是所有的函数都需要这三个步骤,但是一旦选择使用这种函数表达格式,在这三个代码块之外不能再存在其他代码,并且,每个代码块只能出现一次。

     

    一个典型的例子:

    function fun{ 

    begin{ 

       "Start"

       $i=1 

     

    process{ 

       "run "+$i

       $_.name

        $i++

     

    end{ 

       "End"

     

    ls | fun

     

    注意以上代码等价于:

     

    Function fun{

    “run”

    $_.name

    }

     

    结果:

    PS C:\> ls

     

     

     

       Directory: C:\

    Mode                LastWriteTime     Length Name

    ----                -------------     ------ ----

    d----        1/27/2015  12:41 PM            Bitlocker

    d----        1/29/2015  12:04 PM            CCM

    d----         2/2/2015   2:28 PM            CritFix

    d----        1/26/2015   4:28 PM            Intel

    d----        8/22/2013  11:22 PM            PerfLogs

    d-r--        2/12/2015   1:19 PM            Program Files

    d-r--         4/2/2015   9:24 AM            Program Files (x86)

    d----        1/28/2015   1:38 PM            Tools

    d-r--        3/17/2015  10:14 AM            Users

    d----        4/16/2015   1:52 AM            Windows

     

     

    PS C:\> ls | fun

    Start

    run 1

    Bitlocker

    run 2

    CCM

    run 3

    CritFix

    run 4

    Intel

    run 5

    PerfLogs

    run 6

    Program Files

    run 7

    Program Files (x86)

    run 8

    Tools

    run 9

    Users

    run 10

    Windows

    End

     

  5. 具体实例

    实例一:

    Function add ($x,$y)

    {

    $n =$x+$y

    “$x+$y = $n”

    }

    调用: add 1 1

    结果:1+1=2

    实例二:param ()参数

    Function add ()

    {

    Param($x,$y)  ##参数声明

    $n =$x+$y

    “$x+$y = $n”

    }

    调用: add 2 2

    结果:2+2=4

    实例三:使用管道符接受过滤好的变量,返回D:\下面123的目录;

function FindWindowsFolder

{

 $input |where-object {$_.Name -eq "123“} 

}

使用如下语句调用:

ls -path d:\ | FindWindowsFolder <enter>

运行结果:

PS C:\> ls -path d:\ | FindWindowsFolder

 

 

   Directory: D:\

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----        4/27/2015   3:52 PM            123

 

 

 

 

 

参考:http://marui.blog.51cto.com/1034148/294775

http://marui.blog.51cto.com/1034148/295412 

本文出自 “Ricky's Blog” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1639290

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。