如何转义命令行powershell参数中的和号、分号和大括号?

cyvaqqii  于 2023-03-08  发布在  Shell
关注(0)|答案(3)|浏览(300)

我正在使用powershell脚本生成一个配置文件,其中包含数据库密码等内容,这个脚本的正常用途是生成并使用密码,但有一瞬间,我需要访问一个开发伙伴的数据库,所以我需要将密码传递给powershell脚本。
问题是密码是乱码,包括&号、分号和大括号,我如何将其传递到powershell的命令行调用中呢?(This answer和其他答案很有帮助,但对分号和大括号没有帮助。)
以下是我的尝试:

powershell .\makeConfig.ps1 -password "xxx<xxxx;xxxxx&x.xxxx}xx/xxx" -otherparam 3

结果:错误消息:不允许使用"与"号(&)字符。&运算符保留供将来使用;用双引号("&")括起"&"符号,将其作为字符串的一部分传递。

powershell .\makeConfig.ps1 -password "xxx<xxxx;xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3

结果:对$password执行write-host只会给出分号之前的字符串,而且,-otherparam具有默认值,而不是我传递给命令行的值。

powershell .\makeConfig.ps1 -password "xxx<xxxx`;xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3

结果:write-host $password现在打印到引号前的第一个反勾号。是的,它输出反勾号,这似乎表明所有解析都是错误的。哦,脚本中调用的另一个函数抛出了一个我以前从未见过的异常(使用"4"个参数调用"AcquireToken"的异常:"身份验证已取消:user canceled authentication "),这表明param解析是以一种全新的、令人着迷的方式完成的。下面是write-host $password生成的结果:

xxx<xxxx;xxxxx`

powershell .\makeConfig.ps1 -password "xxx<xxxx`";`"xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3

结果:write-host $password现在打印到引号前的第一个反勾号,第二个参数处于默认状态(也就是说,与上次的结果相同)。从好的方面来说,上一个示例中抛出的异常没有出现。

    • 那么,如何从Windows命令行将任意ASCII字符串传递给powershell字符串参数呢?或者至少,如何转义分号、与号和大括号呢?**
klh5stk1

klh5stk11#

powershell .\makeConfig.ps1 -password "'xxx<xxxx;xxxxx&x.xxxx}xx/xxx'" -otherparam 3

给你

  • 外部"双引号将转义所有cmd有害字符,例如<&等,"本身和%百分号(如果启用了delayed expansion,则为!感叹号)除外,而
  • 内部'撇号(单引号)将转义所有powershell一('撇号本身除外)。

但是,上面提到的异常也可以转义...基于 Escape characters,Delimiters and Quotes 条目:

llmtgqce

llmtgqce2#

我使用powershell脚本运行firebase,我使用三个双引号解决了这个问题,如下所示:firebase deploy --token "$firebaseToken" --project "$firebaseProject" --message """$releaseMessage"""。URL在$releaseMessage中,并且“与”符号不再导致问题。

apeeds0o

apeeds0o3#

我在传递一个SAS令牌时遇到了同样的问题,该令牌由一个带有&号查询字符串的GET URI组成。
"""$sas"""对我很有效-见下文

az storage blob copy start `
    --destination-blob $destinationVHDFileName `
    --destination-container $storageContainerName `
    --account-name $storageAccountName `
    --account-key $storageAccountKey `
    --source-uri """$sas""" `
    --debug `
    --verbose

相关问题