【问题标题】:Calling powershell script with many args from cmd从 cmd 调用带有许多 args 的 powershell 脚本
【发布时间】:2010-12-15 13:37:45
【问题描述】:

我有一个简单的 powershell 脚本。它需要两个参数。两者都是采用字符串参数的方法 (Get-ResourcePool) 的一部分。

如果我在 Powershell 脚本中调用函数定义,像这样:

functName CI *FMS

效果很好。

Powershell 中的函数调用是(因为这个脚本将从外部调用):

FuncName $($args[0], $args[1])

我尝试从 Powershell 编辑器中调用它,在那里我安装了我需要的所有管理单元,如下所示:

C:\Script.ps1 A "*s" 

其中 scrpt 是我的 .ps1 文件的名称。有一个功能。但是,这会失败,并显示参数为 null 或空的错误。

有什么想法吗?

编辑:

函数签名是:

函数 RevertToSnapshot($otherarg, $wildcard)

我在这里使用 $wildcard: $SearchString = [System.String]::Concat("*", $VM通配符) 名称 $SearchString(名称是 powercli 中 get-vm 的参数)。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    这种调用方式:

    FuncName $($args[0], $args[1])
    

    将导致只有一个参数传递给 FuncName - 一个包含两个元素的数组。你可能想要:

    FuncName $args[0] $args[1]
    

    通常,使用 PowerShell,您可以使用空格分隔的参数调用 cmdlet、函数、别名,并且不使用括号。调用 .NET 方法是该规则的一个例外,您必须使用括号和逗号分隔参数,例如:

    [string]::Concat('ab','c')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2019-03-24
      • 2020-10-08
      • 2021-09-13
      • 2016-07-13
      相关资源
      最近更新 更多