首页 > 解决方案 > 无法将参数绑定到参数,因为它是一个空字符串

问题描述

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

 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脚本范围,但这不起作用。

标签: powershellpowershell-module

解决方案


可能是一个迟到的答案,但以防其他人有类似的问题。

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

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


推荐阅读