从另一个ps1调用ps1

时间:2018-08-31 05:44:33

标签: powershell

我正在从另一个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

有什么建议吗?

2 个答案:

答案 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