Pot*_*eer 18 parameters powershell cmd
我正在使用powershell脚本生成带有数据库密码等的配置文件.这个脚本的正常用法是生成并使用密码,但是稍等片刻,我需要访问其他开发人员的数据库,因此我需要将密码传递给powershell脚本.
问题是密码是乱码,包括&符号,分号和花括号.我怎样才能将它传递给powershell的命令行调用?(这个答案和另一个答案是有帮助的,但对分号和花括号没有帮助.)
这是我尝试过的:
powershell .\makeConfig.ps1 -password "xxx<xxxx;xxxxx&x.xxxx}xx/xxx" -otherparam 3
Run Code Online (Sandbox Code Playgroud)
结果:错误消息:不允许使用&符号.&运营商留作将来使用; 用双引号("&")包装&符号以将其作为字符串的一部分传递.
powershell .\makeConfig.ps1 -password "xxx<xxxx;xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3
Run Code Online (Sandbox Code Playgroud)
结果:执行$ password的写主机只会将字符串赋予分号.另外,-otherparam有默认值,而不是我传入命令行的值.
powershell .\makeConfig.ps1 -password "xxx<xxxx`;xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3
Run Code Online (Sandbox Code Playgroud)
结果:write-host $ password现在打印到报价前的第一个反引号.是的,它会输出反引号,这似乎表明一切都在解析所有错误.哦,脚本中调用的其他函数之一引发了一个我以前没见过的异常(异常调用带有"4"参数的"AcquireToken":"authentication_canceled:用户取消认证"),这表明该参数解析完全以一种新的迷人方式进行了解析.这是写入主机$密码产生的:
xxx<xxxx;xxxxx`
powershell .\makeConfig.ps1 -password "xxx<xxxx`";`"xxxxx`"&`"x.xxxx}xx/xxx" -otherparam 3
Run Code Online (Sandbox Code Playgroud)
结果:write-host $ password现在打印到报价前的第一个反引号.第二个参数处于默认状态.(即,与上次相同的结果.)在正面,上一个例子中抛出的异常没有出现.
那么如何从Windows命令行将任意ASCII字符串传递给powershell字符串参数?或者至少,我如何逃脱分号,&符号和花括号?
Jos*_*efZ 22
powershell .\makeConfig.ps1 -password "'xxx<xxxx;xxxxx&x.xxxx}xx/xxx'" -otherparam 3
Run Code Online (Sandbox Code Playgroud)
这里
"双引号将逃脱所有cmd有毒字符,例如<,&除了"自身和%百分号(以及启用延迟扩展时的!感叹号),同时'撇号(单引号)将逃避所有powershell('撇号本身除外).但是,上面提到的异常也可以转义...基于Escape字符,分隔符和引号文章:
cmd和批处理文件Nox*_*xys 13
我正在firebase使用 powershell 脚本运行。我用三双引号这样解决了这个问题:firebase deploy --token "$firebaseToken" --project "$firebaseProject" --message """$releaseMessage"""。URL 在 中$releaseMessage,和号不再引起问题。
| 归档时间: |
|
| 查看次数: |
25654 次 |
| 最近记录: |