使用cmd中的许多args调用powershell脚本

时间:2010-12-15 13:37:45

标签: powershell

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

如果我在Powershell脚本中调用函数定义,如下所示:

functName CI *FMS

工作正常。

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

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

我尝试从Powershell编辑器中调用它,我需要安装所有需要的snapins,如下所示:

C:\Script.ps1 A "*s" 

其中scrpt是我的.ps1文件的名称。有一个功能。但是,如果参数为null或为空,则会失败。

任何想法为什么?

编辑:

功能签名是:

功能RevertToSnapshot($ otherarg,$ wildcard)

我在这里使用$ wildcard: $ SearchString = [System.String] :: Concat(“*”, $ VMWildcard) Name $ SearchString(Name是powercli中get-vm的参数)。

1 个答案:

答案 0 :(得分:5)

这种称呼方式:

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

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

FuncName $args[0] $args[1]

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

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