【问题标题】:Execute PowerShell from Ruby从 Ruby 执行 PowerShell
【发布时间】:2013-02-05 21:28:15
【问题描述】:

这在 PS 命令提示符下运行良好:

Get-WmiObject Win32_Share -computer "Server" -filter "Name = 'ShareName'"

添加到 Ruby 后,我可以执行它(因为它不需要引号):

powershell (Get-WmiObject Win32_Share -computer "Server")

但不使用过滤器参数(需要引号):

powershell (Get-WmiObject Win32_Share -computer "Server" **-filter "Name = 'ShareName'"**)

错误的输出不显示双引号。我尝试了我所知道的一切来逃避它们,但没有任何效果。

试过(... -filter \"Name = 'ShareName'\")
尝试使用%x{} 而不是``
试过单引号

【问题讨论】:

  • 我认为我在这里没有看到任何有效的 ruby​​ 代码。您能否发布您的实际 ruby​​ 代码并告诉我们您期望它做什么和它实际做什么?
  • 它从 Ruby(好吧,rake)脚本执行。我在标签中包含了 Ruby,因为它或 PowerShell 似乎弄乱了引号,或者很可能我还没有找到使其工作的正确引号序列。因此,Ruby 是 `` 和 %x[] 包含 PS 命令。

标签: ruby shell powershell rake


【解决方案1】:

在powershell中,双引号字符串之间的值被解释,例如一个对象$HelloWorld包含字符串“Hello world”。 Powershell 处理$HelloWorld 的方式与处理"$helloWorld" 的方式相同。但是,如果您键入 '$HelloWorld',它将按字面意思解释它并将对象名称 $HelloWorld 打印为字符串。

PS> $HelloWorld = "Hello World"
PS> $helloworld
Hello World
PS> "$helloworld"
Hello World
PS> '$helloworld'
$helloworld

试试这样的...

PS> "'$helloworld'"
'Hello World'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2012-08-03
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多