繁体   English   中英

Powershell将switch参数传递给self

[英]Powershell passing switch parameter to self

我有自己调用的powershell脚本(因为脚本的第1阶段是在GAC中加载程序集,所以我需要刷新AppDomain)。 如何将switch参数传递给self。 目前我这样做:

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.Automat ion.SwitchParameter”

据推测,根本不需要调用powershell.exe 将其替换为运算符& ,即在同一会话中调用脚本并避免参数转换和相关问题。 问题是可以解决的,但最好首先避免。 就是这样

& $currentDirectory/Deploy.ps1 -reload:$true -env:$env -provisionsites:$provisionsites

至于问题。 在传递外部应用程序之前, $provisionsites转换为字符串( TrueFalse ,而不是$true$false )。 因此,结果实际参数看起来像-provisionsites:True 然后在新的PowerShell会话中,它将这样的参数传递给脚本Deploy.ps1 它失败,因为不期望字符串TrueFalse ,预期布尔值。

一个可能的解决方法是添加转义$

powershell $currentDirectory/Deploy.ps1 ... -provisionsites:`$$provisionsites

但考虑删除powershell及其问题的调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM