换行符从MSBuild

时间:2017-10-03 14:29:08

标签: powershell msbuild

我正在尝试从我的MSBuild脚本调用PowerShell脚本。当我将以下内容折叠成一行时,它会运行,但是当我这样离开时,我会收到以下错误。如果它很重要,我将从BAT脚本开始使用MSBuild脚本。

<Exec Command="powershell.exe -NonInteractive -ExecutionPolicy Unrestricted 
           -Command &quot;&amp; Invoke-Command 
             -ComputerName &apos;$(Server)&apos; 
             -ScriptBlock { 
                &amp;install.ps1 
                -serviceName &apos;$(ServiceName)&apos; 
                -exePath &apos;$(ExePath)&apos; 
                -computerName &apos;$(Server)&apos; 
             } &quot;
  " />
  

' - 命令'不被识别为内部或外部命令,     可操作程序或批处理文件。

     

' - ComputerName'无法识别为内部或外部命令,     可操作程序或批处理文件。

     

' - ScriptBlock'无法识别为内部或外部命令,     可操作程序或批处理文件。

     

&安培;这时出人意料。

我从Microsoft documentation复制XML作为起点,我检查所有空格都是普通空格字符,我尝试在每行的末尾添加一个空格,我试着确保只有一个空格在每一行的开头,最后没有,我尝试了Windows和Unix行结束。这些都没有任何区别,所以我不确定会发生什么。

经过一些反馈后,我尝试将`^添加到每行的末尾,但/>除外,并且都不允许脚本运行。

1 个答案:

答案 0 :(得分:0)

感谢@ PetSerAl的评论,我能够通过在每一行的末尾添加^,并在每个双引号和&符号之前修复它:

<Exec Command="powershell.exe -NonInteractive -ExecutionPolicy Unrestricted ^
           -Command ^&quot;^&amp; Invoke-Command
             -ComputerName &apos;$(Server)&apos; ^
             -ScriptBlock { ^
                ^&amp;install.ps1 ^
                -serviceName &apos;$(ServiceName)&apos; ^
                -exePath &apos;$(ExePath)&apos; ^
                -computerName &apos;$(Server)&apos; ^
             } ^&quot;
  " />