CruiseControl.Net与PowerShell不相称

时间:2010-08-04 14:23:06

标签: powershell cruisecontrol.net powershell-v2.0

这是我的PowerScript任务

<powershell>
    <script>RunScout3G.ps1</script>
    <executable>C:\WINDOWS\system32\WindowsPowerShell\v1.0\PowerShell.exe</executable>
    <scriptsDirectory>C:\Program Files\CruiseControl.NET\Our_PowerShell</scriptsDirectory>
    <buildArgs></buildArgs>
    <successExitCodes>0</successExitCodes>
    <buildTimeoutSeconds>900</buildTimeoutSeconds>
    <description>Example of how to run a PowerShell script.</description>
  </powershell>

错误就是这个......

<buildresults>
<message level="Error">The term 'C:\Program' is not recognized as the name of a cmdlet, function, scri </message>
<message level="Error">pt file, or operable program. Check the spelling of the name, or if a path was </message>
<message level="Error">included, verify that the path is correct and try again.</message>
<message level="Error">At line:1 char:11 </message>
<message level="Error">+ C:\Program <<<<  Files\CruiseControl.NET\JCDC_PowerShell\RunScout3G.ps1 </message>
<message level="Error">    + CategoryInfo          : ObjectNotFound: (C:\Program:String) [], CommandN </message>
<message level="Error">   otFoundException </message>
<message level="Error">    + FullyQualifiedErrorId : CommandNotFoundException </message>
<message level="Error"> </message>

问题在于scriptsDirectory。驱动器名称“Program Files”中有一个空格 如果我试着把它“绕过它,或者”它周围巡航控制说无效的驱动器。 任何帮助都会很棒。

PowerShell版本是V2

CruiseControl.Net的版本是1.5.6755.1

2 个答案:

答案 0 :(得分:4)

您也可以尝试使用8个字符的目录名称。如果您运行 dir / x ,您将看到缩写的名称。它们永远不会有任何空格,所以这是避免转义字符问题的好方法。在你的情况下它应该看起来像 c:\ PROGRA~1 \ CRUISE~1 ......

答案 1 :(得分:0)

好的,如果它不接受引号(您是否尝试过“在XML语法中?),根据您的系统,您可以链接到正确的驱动器,这样您就可以使用新的路径powershell可执行文件:

mklink /D c:\powershell "C:\WINDOWS\system32\WindowsPowerShell\v1.0"

然后

<script>RunScout3G.ps1</script>
<executable>C:\powershell\PowerShell.exe</executable>
不过,如果你使用Powershell V2,那是正确的路径吗?