我有一个简单的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的参数)。
答案 0 :(得分:5)
这种称呼方式:
FuncName $($args[0], $args[1])
只会将一个参数传递给FuncName - 一个包含两个元素的数组。你可能想要:
FuncName $args[0] $args[1]
通常,使用PowerShell,您可以使用空格分隔的参数调用cmdlet,函数,别名,而不使用parens。调用.NET方法是这个规则的一个例外,你必须使用parens和逗号分隔参数,例如:
[string]::Concat('ab','c')