我有一个PowerShell脚本,它会调用自己(因为脚本的第一阶段是加载GAC中的程序集,所以需要刷新AppDomain)。我该如何将开关参数传递给自己?目前我的做法是:
if ($provisionsites -eq $true)
{
powershell $currentDirectory/Deploy.ps1 -reload:$true -env:$env -provisionsites
}
else
{
powershell $currentDirectory/Deploy.ps1 -reload:$true -env:$env
}
对我来说,这似乎太啰嗦了。如果我尝试这样做:
powershell $currentDirectory/Deploy.ps1 -reload:$true -env:$env -provisionsites:$provisionsites
它失败了,并显示:
无法将值“System.String”转换为类型“System.Management.Automation.SwitchParameter”
&
不是powershell
的快捷方式。它是一个操作符 "调用命令",如果它是脚本或函数,则在新作用域中(与.
运算符相反,在同一作用域中调用)。在某些情况下,它可以省略,但在您的情况下不能省略,因为命令本身是已评估表达式的结果。至于 "刷新应用程序域",我不知道您的 Deploy.ps1 做了什么。实际上,也许您仍然必须通过 powershell 调用,这意味着启动一个单独的 powershell 进程。这就是为什么我在回答开始时使用了“可能”这个词,我不确定。 - Roman Kuzmin