【问题标题】:Using csv as PowerShell script parameter使用 csv 作为 PowerShell 脚本参数
【发布时间】:2012-03-27 07:36:15
【问题描述】:

我正在尝试编写一个 PowerShell 脚本(同时学习)。

我有以下命名参数

param([String] $Workspace = $pwd,
      [String] $Files     = "*",
      [String] $Locales   = "de,es,fr,it,nl,pt_BR,ru",
      [String] $Exception = "TINP_D=TIGF,TIN_F=TIGD",
      [Switch] $Verbose,
      [Switch] $Whatif)

假设 $Locales 我使用 split 循环遍历每个语言环境

foreach ($locale in $Locales.split(",")) {

到目前为止一切顺利。当我在命令上指定一个不带双引号的语言环境列表时,问题就开始了,因为它被检测为字符串数组并变成“de es fr”,这反过来会破坏我的代码,因为它需要一个 CSV 字符串。

$Exception 参数也是如此,但我用逗号分隔,然后用等号分隔。

任何想法,我应该怎么做?

【问题讨论】:

    标签: string powershell csv param


    【解决方案1】:

    有更多的解决方案,最简单的一种是改变参数,使其成为字符串数组

    [String[]] $Locales   = ('de', 'es', ...)
    

    然后只迭代数组

    foreach ($locale in $Locales)
    

    【讨论】:

    • 这种方法的问题是参数列表已经用逗号分隔,并且用逗号定义默认数组值会破坏参数列表
    • +1 实际上,通常您将实际的字符串数组指定给函数/cmdlet。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多