【问题标题】:Line breaks invoking PowerShell from MSBuild从 MSBuild 调用 PowerShell 的换行符
【发布时间】:2017-10-03 14:29:07
【问题描述】:

我正在尝试从我的 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;
  " />

'-Command' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

'-ComputerName' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

'-ScriptBlock' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

&此时出乎意料。

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

经过一些反馈,我尝试将`^ 添加到每一行的末尾,除了带有/&gt; 的行之外,都不允许脚本运行。

【问题讨论】:

  • 在每行末尾添加^
  • @PetSerAl 那也没用
  • &amp;quot;&amp;amp; 之前添加额外的^
  • @PetSerAl 做到了!把它写成答案,我会接受

标签: powershell msbuild


【解决方案1】:

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

<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;
  " />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多