首页 文章

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

提问于
浏览
0

我执行的形式 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

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

    跑:

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

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

  • 0

    我终于找到了解决方案 . 帮助我的主要博客是here . 它在powershell中的概念"dynamic code" .

    什么没有奏效:

    $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/

相关问题