gpt4 book ai didi

powershell - 如何在命令行 powershell 参数中转义符号、分号和花括号?

转载 作者:行者123 更新时间:2023-12-03 13:30:15 25 4
gpt4 key购买 nike

我正在使用 powershell 脚本生成一个包含数据库密码等的配置文件。这个脚本的正常用途是生成并使用密码,但一时之间,我需要访问一个开发人员的数据库,所以我需要将密码传递到powershell脚本中。

问题是密码是乱码,包括与号、分号和花括号。如何将其传递给 powershell 的命令行调用? ( This answer 和这个 other 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 的写主机只会将字符串提供给分号。此外, -otherparam 具有其默认值,而不是我传递给命令行的值。
powershell .\makeConfig.ps1 -password "xxx<xxxx`;xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3

结果: write-host $password 现在打印到引用前的第一个反引号。是的,它输出反引号,这似乎表明一切都解析错误。哦,脚本中调用的其他函数之一抛出了我以前从未见过的异常​​(使用“4”参数调用“AcquireToken”的异常:“authentication_canceled:用户取消身份验证”),这表明参数解析完全以一种新的和迷人的方式进行。这是 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 字符串参数呢?或者至少,我如何转义分号、与号和花括号?

最佳答案

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

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

  • 但是,上面注意到的异常也可以转义……
    基于转义字符、分隔符和引号文章:
  • cmd and batch-file
  • powershell
  • 关于powershell - 如何在命令行 powershell 参数中转义符号、分号和花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142786/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com