【发布时间】:2018-06-13 08:05:25
【问题描述】:
我有一个带有强制参数的脚本,我们用它来安装一些 SQL 组件,包括用户名和密码,如下所示:
param(
[Parameter(Mandatory=$True,HelpMessage="SQL Server password")]
[ValidateNotNullOrEmpty()]
[string] $SqlServerPassword
)
因此,当用户运行此脚本时,他/她将需要包含 -SqlServerPassword 'SpecialCharacters' 变量字符串。我知道最好的做法是将字符串放在单引号内,但这是训练我们的一些安装管理员的一条艰难道路,而且由于我们的密码库包含特殊字符而没有单引号会导致问题。
我怎样才能重写上面的内容以确保即使用户通过密码而不是单引号,它也将是单引号?谢谢!
【问题讨论】:
-
好吧,首先,如果您在您的环境中支持所有这些版本的 powershell,您应该考虑标准化。
-
另外,您能否扩展一下 "..因为我们的密码库包含没有单引号的特殊字符会导致问题。"?我不明白你的意思。
-
@EBGreen 我得到标准化并同意。但就目前而言,在我们重新设计某些东西之前,我必须处理这个问题,因为人们忘记了,这是一个持续的痛苦。它只是一个随机密码生成器。
-
@EBGreen 道歉,我误解了 - 我们在整个企业中使用 PS 版本 5。
-
啊......好吧,如果我有机会,我会玩这个。我可以重现它。这是一个minimal reproducible example 给任何想要的人:
function foo{param($in) Write-Host $in}; foo abcd$123我怀疑是否有解决方案。你永远不能完全超越愚蠢的程序。
标签: powershell