【问题标题】:functions and parameters in powershellpowershell中的函数和参数
【发布时间】:2014-10-21 07:51:30
【问题描述】:

如何在脚本中添加多个函数,然后通过输入参数调用它们?例如在下面的代码中,它意味着更改本地连接中的配置,所以我想像这样调用函数 SscriptNAme -Change 192.168.0.1, 255.255.255.255, 192.168.0.2。我想在同一个脚本中有其他函数,我也想通过输入参数来调用:

function Change{

$S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name = 'Local              Area Connection' source=static addr=$args[0] mask=$args[1] gateway=$args[2] gwmetric=0")

}

function ChangeOne{ 

$S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name = 'Local   Area Connection' source=static addr=$args[0] mask=$args[1] gateway=$args[2] gwmetric=0")

}

谁能告诉我我的方向是否正确,并给我一些关于如何去做的指示。谢谢

【问题讨论】:

    标签: function powershell parameters scripting


    【解决方案1】:

    您可以通过 1 个 google 查询找到此内容,但您可以这样做:

    function Change{
    param(
    [parameter(Mandatory=$true,Position=0)]
    [string] $address,
    [parameter(Mandatory=$true)]
    [string] $mask,
    [parameter(Mandatory=$true)]
    [string] $gw,
    [int] $metric=0
    )
    
    Do Stuff
    
    }
    

    调用函数:

    Change -address $address -mask $mask -gw $gw -metric $metric
    

    指标不是强制性的,默认为 0。

    如果参数地址、掩码和gw包含一个值,它们也会得到testet,以防强制参数之一为空或不存在,函数将抛出错误。

    您还可以为参数分配一个位置,这样您就不必为这样的调用使用标志(在地址上显示):

    Change $address -mask $mask -gw $gw
    

    更多关于参数在这里:

    Technet

    但我敦促您不要以这种方式使用 netsh 甚至 invoke-expression,这类东西有 cmdlet!例如:

    Get-NetAdapter "Ethernet" | New-NetIPAddress $address -Defaultgateway $gw -PrefixLength $sn
    

    【讨论】:

      【解决方案2】:
      function Change
      {
          param($addr, $mask, $gw, $metric=0)
          $S=$executionContext.InvokeCommand.NewScriptBlock("netsh interface ip set address name='Local              Area Connection' source=static addr=$addr mask=$mask gateway=$gw gwmetric=$metric")
      
      }
      
      #To call use this, note, no commas between args, and $metric is defined 0 by default.
      Change 192.168.0.2 255.255.255.255 192.168.0.1  
      

      【讨论】:

        猜你喜欢
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 2021-01-11
        • 2015-01-12
        • 2013-10-10
        • 1970-01-01
        相关资源
        最近更新 更多