我已经阅读过几十篇关于以各种方式破坏构建的帖子,但它们都不是我想要做的事情,或者根本就没有为我工作。
根据我的阅读,我相信使用-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 "& { Invoke-Command -ComputerName myserver -FilePath '$(ScriptFile)' -Args '$(Configuration)' } ""/>
</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知道停止?
任何建议都将受到赞赏。
谢谢 -