【问题标题】:How do I execute a dos command with variable arguments如何使用可变参数执行 dos 命令
【发布时间】:2014-04-12 01:48:55
【问题描述】:

如果我跑:

<somecommand> -e "SHOW DATABASES" -u<user> -p<password>

它运行。但如果我尝试:

<somecommand> -e "SHOW DATABASES" -u$sqlUser -p$sqlPassword

它失败了,因为变量没有被扩展。

在 powershell 中完成此任务的最简单方法是什么?

【问题讨论】:

    标签: powershell argument-passing variable-expansion


    【解决方案1】:

    假设 somecommand 是一个 exe(或您所说的 DOC 命令),请尝试以下方式:

    <somecommand> -e "SHOW DATABASES" "-u$sqlUser" "-p$sqlPassword"
    

    【讨论】:

    • 我想我尝试了 4095 种其他方法......但这确实有效!感谢您的回复!
    • PowerShell 在这种情况下将使用参数解析模式,这意味着它试图让您指定字符串参数而不必使用引号(这会很快变老)。看到 -u$sqlUser 很聪明,在这种情况下它会扩展变量,但是 -u$sqlUser 将其视为字符串。您可以强制 PowerShell 通过将双引号括起来(以及相邻的文本)来扩展变量。
    • 是的,当然-u"$sqlUser" 也可以。传递给 exe 时,无论是 "-u$sqlUser" 还是以前的方式,都与 AFAICT 无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多