如何在通过msbuild

时间:2016-04-27 03:27:39

标签: msbuild

我已经阅读过几十篇关于以各种方式破坏构建的帖子,但它们都不是我想要做的事情,或者根本就没有为我工作。

根据我的阅读,我相信使用-FilePath选项时PowerShell存在一个错误,但我不知道如何远程运行我的脚本。

这是我的测试目标:

  <Target Name="TestPS" BeforeTargets="Build">
    <PropertyGroup>
      <PowerShellExe Condition=" '$(PowerShellExe)'=='' ">%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe</PowerShellExe>
      <ScriptFile Condition=" '$(ScriptFile)'=='' ">$(SolutionDir)WebApplication99\Testing.ps1</ScriptFile>
    </PropertyGroup>
    <Message Text="Running powershell script..." Importance="high"/>
    <Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command &quot;&amp; { Invoke-Command -ComputerName myserver -FilePath &apos;$(ScriptFile)&apos; -Args &apos;$(Configuration)&apos; } &quot;"/>
  </Target>

这是Testing.ps1:

param([String]$environment)

# this doesn't seem to help, but added anyway.. 
trap { $_.Exception.Message; exit 1; continue }

#stop on errors..  
$ErrorActionPreference = "Stop"

#type-o to fail:
xWrite-Host("Backing up files...")

我尝试过添加;将$ lastexitcode退出到Testing.ps1的末尾以及我的Exec Command的末尾。我尝试将trap {}添加到Testing.ps1,如您所见。我已经看到其他帖子关于只有一个带有$(PowerShellExe)SomeScript.ps1的Exec命令,只是在SomeScript.ps1中有代码实际上是Invoke-Command并运行Testing.ps1 - 但这看起来很奇怪...你真的有吗?有两个ps1文件??以及引用的各种其他组合。

当然,有一种更简单的方法可以在远程服务器上执行本地ps1脚本文件(请注意我需要传递一个参数),如果该脚本遇到错误 - 返回一些东西,以便msbuild知道停止?

任何建议都将受到赞赏。

谢谢 -

0 个答案:

没有答案