从Ruby执行Powershell脚本时“无法将true转换为String”错误

时间:2010-05-14 16:40:24

标签: ruby-on-rails ruby powershell

我正在尝试从Ruby执行powershell脚本,我输入了以下命令:

scriptPath =  system('powershell \"C:\\Scripts\\DB_Setup.ps1\"')

当出现错误以停止脚本时,ruby脚本正在处理异常,如下所示:

rescue => ex
  message = "\nscript on server '#{`hostname`.strip()}' terminated unexpectedly:\n\nMessage: '#{ex.message}"
raise ex

输出错误: 服务器'TestDB1'上的脚本意外终止: 消息:'无法将true转换为String'

由于

2 个答案:

答案 0 :(得分:0)

没有看到你的剧本就无法判断。看起来你的.ps1脚本回应了一个布尔对象,Ruby并不喜欢它。要么将其静音,要么将其更改为字符串:

PS C:\> (1 -eq 1).gettype().name
Boolean
PS C:\> (1 -eq 1).tostring().gettype().name
String
PS C:\>

答案 1 :(得分:0)

感谢您的快速回复,我知道如本链接http://www.hanselman.com/blog/DNRTVScreencastPowershellIsStillShiny.aspx所述,从ruby运行powershell脚本非常容易。 ,但由于某种原因,即使运行一个非常基本的PowerShell脚本,如下所示,我仍然会收到相同的错误消息:

function Main()
{
  Write-Host "Servername"
}

. Main

另外,我尝试了上述解决方案。

这是一个非常奇怪的问题,在花了这么多时间之后,我做了一个解决方法,从ruby开始使用powershell脚本运行bat文件,我知道这不是一个好习惯......