【发布时间】:2011-09-11 20:43:09
【问题描述】:
我正在尝试找到一种将参数传递给 powershell 脚本的优雅方法,其中字符串可以包含任意数量的需要转义的特殊字符。例如,带有特殊字符的复杂密码。
我正在查看 -encodedcommand 选项,但似乎这只是为了传递编码的脚本块,而不是参数的编码版本。
例如,考虑以下脚本:
param(
[Parameter()][Alias("un")][string]$Username,
[Parameter()][Alias("pw")][string]$Password
)
Write-Host "Username: $Username"
Write-Host "Password: $Password"
字符串'-un testuser -pw testpw'是base64编码如下: LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA==
我尝试将脚本作为 .ps1 文件调用并使用上述字符串传递 -encodedcommand,但得到错误“找不到与参数名称“编码命令”匹配的参数
所以,很好,这必须是直接调用 powershell.exe。
还尝试了以下方法: powershell.exe -encodedcommand LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA== -file Base64ParamTest.ps1
这运行了脚本,但参数没有值。
这符合我的预期,但不是我希望的那样。有没有办法将我的参数本身作为安全编码的字符串实际传递?
【问题讨论】:
-
我的 B 计划是仅对密码值本身进行 Base64 编码,而不是对整个参数字符串进行编码,然后在脚本中对其进行解码。很简单,但想知道我是否错过了一种更简单的自动完成方法
标签: powershell parameters command-line-arguments