我正在尝试寻找一种优雅的方法来传递参数给 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,但出现错误:“找不到与参数名‘encodedcommand’匹配的参数”。
所以,好吧,这必须是直接调用powershell.exe。
也尝试了以下命令: powershell.exe -encodedcommand LQB1AG4AIAB0AGUAcwB0AHUAcwBlAHIAIAAtAHAAdwAgAHQAZQBzAHQAcAB3AA== -file Base64ParamTest.ps1
这运行了脚本,但参数没有值。
这的确是我所期望的行为,但不是我希望的。有没有一种方法可以将我的参数本身作为安全编码的字符串进行传递?