无法将参数绑定到参数,因为它是一个空字符串

时间:2018-11-01 10:30:10

标签: powershell powershell-module

从已创建并导入到主脚本中的模块调用函数时出现此错误:

 Run-RemoteScript : Cannot bind argument to parameter 'Targets' because it 
is an empty string.
At C:\Scripts\Script.ps1:114 char:39
+             Run-RemoteScript -Targets $targets -RunMethod $runMethod  ...
+                                       ~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [Run-RemoteScript], 
ParameterBindingValidationException
+ FullyQualifiedErrorId : 
ParameterArgumentValidationErrorEmptyStringNotAllowed,Run-RemoteScript`

在我的模块中,-Target被定义为这样的参数:

[Parameter(Mandatory, Position = 0)][String[]]$Targets,

在我的主脚本(导入我的模块)中,$targets的定义如下:

$Targets = Set-TargetList

我尝试使用global脚本作用域,但这没有用。

1 个答案:

答案 0 :(得分:2)

可能是一个较晚的答案,但如果其他人有类似的问题。

就我而言,它是一个字符串数组。当成员字符串中至少有一个为空或为null时,它将被拒绝。

在您要调用的参数中将AllowEmptyString设置为属性,或者在传递成员之前检查成员是否不是空字符串。