我正在从另一个ps1调用ps1脚本,这可以正常工作。现在,我想将参数从父ps1传递给子ps1。 例如 1. master.ps1和client.ps1是两个脚本。 2. client.ps1有两个参数,我想通过master.ps1传递给它。
主脚本代码:
Param(
[Parameter(Mandatory=$True,Position=4)]
[string]$clientid,
[Parameter(Mandatory=$True,Position=4)]
[string]$clientname
)
Invoke-Expression "$bpath\client.ps1" "$clientid" "$clientname"
错误:
Invoke-Expression : A positional parameter cannot be found that accepts argument
有什么建议吗?
答案 0 :(得分:0)
您可以测试:
& .\YourScript.ps1 Arg1 Arg2
但是如果您想保留Invoke-Expression
,则可以使用其他解决方案:
Invoke-Expression -Command ".\YourScript.ps1 Arg1 Arg2"
答案 1 :(得分:0)
参数可以完全作为数组传递到单个$ var中,或者如果传递的参数很少,则应在其前面加上参数名称。尝试以下一种应该起作用的
Invoke-Expression "$bpath\client.ps1" -clientid $clientid -clientname $clientname
或者您可以直接传递$ var,如果您在“ $ var”前面加上前缀,它将变成字符串而不是参数
Invoke-Expression "$bpath\client.ps1" $clientid $clientname