我正在执行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
答案 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/