![](/img/trans.png)
[英]Powershell: Type error on self-elevation to admin when passing switch parameter value
[英]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
转换为字符串( True
或False
,而不是$true
或$false
)。 因此,结果实际参数看起来像-provisionsites:True
。 然后在新的PowerShell会话中,它将这样的参数传递给脚本Deploy.ps1
。 它失败,因为不期望字符串True
或False
,预期布尔值。
一个可能的解决方法是添加转义$
powershell $currentDirectory/Deploy.ps1 ... -provisionsites:`$$provisionsites
但考虑删除powershell
及其问题的调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.