【问题标题】:Passing unknown number of values to PowerShell script parameter?将未知数量的值传递给 PowerShell 脚本参数?
【发布时间】:2018-01-16 13:59:56
【问题描述】:

我熟悉如何从命令行接受参数或参数并将它们传递给 PowerShell:

powershell.exe -file myscript.ps1 -COMPUTER server1 -DATA abcd
[CmdletBinding()]
Param(
    [Parameter(Mandatory=$True)]
    [string]$computer,

    [Parameter(Mandatory=$True)]
    [string]$data
)

这很好,但是如果 $computer 参数不止一个项目并且数量未知怎么办?例如:

Powershell.exe -file myscript.ps1 -COMPUTER server1, server2, server3 -DATA abcd

这里我们不知道会有多少$computer 项目。总会有一个,但可能有 2、3、4 等等。如何最好地实现这样的目标?

【问题讨论】:

    标签: powershell parameter-passing


    【解决方案1】:

    您可以改用[String[]]$Computer 使参数[String]$Computer 接受多个字符串(或array)。

    示例:

    Function Get-Foo {
        [CmdletBinding()]
        Param (
           [Parameter(Mandatory=$True)]
           [String[]]$Computer,
    
           [Parameter(Mandatory=$True)]
           [String]$Data
        )
    
        "We found $(($Computer | Measure-Object).Count) computers"
    }
    
    Get-Foo -Computer a, b, c -Data yes
    
    # We found 3 computers
    
    Get-Foo -Computer a, b, c, d, e, f -Data yes
    
    # We found 6 computers
    

    【讨论】:

      【解决方案2】:

      在参数定义中指定。从[String] 更改为字符串数组[String[]]

      [CmdletBinding()]
      Param(
         [Parameter(Mandatory=$True)]
          [string[]]$computer,
      
         [Parameter(Mandatory=$True)]
          [string]$data
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-01
        • 2015-06-07
        • 2017-05-08
        • 2019-07-07
        • 1970-01-01
        • 2013-04-27
        • 2012-12-10
        相关资源
        最近更新 更多