如何在powershell中执行存储在变量中的ruby命令

时间:2014-08-20 23:21:57

标签: ruby powershell

我正在执行rake drive:unit_tests:load_data parameters here'. I get the error形式的命令,它不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我使用了ps1文件中的代码:

$dat1 = one ruby command | Out-String
# $dat1  will contain the value - rake drive:unit_tests:load_data
$dat2 = "  parameters here"
$dat3 = $dat1 + $dat2
& $dat3

来源:Executing a Command stored in a Variable from Powershell

2 个答案:

答案 0 :(得分:0)

看起来PowerShell并不理解命令rake,这可能意味着它不在PATH中。

执行命令

Get-Command -CommandType Application | Where-Object { $_.Name -ilike 'rake.*' }

如果这个空白,那么powershell并不知道在哪里找到rake。您可以使用完全限定的路径名​​来调用它,也可以将rake的位置添加到PATH环境变量中。

答案 1 :(得分:0)

我终于找到了解决方案。帮助我的主要博客是here。概念它"动态代码"在powershell。

什么行不通:

$dat3 = {$dat1 + $dat2}
& $dat3

这只打印$ dat3的值,但实际上并不执行它。我进一步了解文章并尝试底部的代码。成功!!!

什么有效:

$dat3 = $dat1 + $dat2
$dat3 = $ExecutionContext.InvokeCommand.NewScriptBlock($dat3)
& $dat3

相关的powershell概念:命令行解析模式,表达式解析模式 在这里阅读 - http://rkeithhill.wordpress.com/2007/11/24/effective-powershell-item-10-understanding-powershell-parsing-modes/