Msbuild вызов powershell script под Windows 7 получает ошибку подписи

У нас есть powershell build script, который вызывает другие скрипты, которые дают мне проблемы в Windows 7 64 бит. Он отлично работает под XP. Я выполнил set-executionpolicy для RemoteSigned (а также попробовал его с байпасом и неограниченным). Я могу вывести командную строку из сообщения об ошибке и запустить ее сам, и все работает нормально.

Ошибки сборки выглядят ужасно; но я все равно их включаю в полноту.


Project "C:\dev7\Source\DashPortal\DashboardGenerator\DashboardGenerator.csproj" (2) is building "C:\dev7\Source\DashPo
rtal\DashboardController\DashboardController.csproj" (15) on node 0 (default targets).
  File C:\Users\pmckinney.NA\Documents\WindowsPowerShell\profile.ps1 cannot be lo
  aded because the execution of scripts is disabled on this system. Please see "g
  et-help about_signing" for more details.
  At line:1 char:2
  + . <<<<  'C:\Users\pmckinney.NA\Documents\WindowsPowerShell\profile.ps1'
      + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
      + FullyQualifiedErrorId : RuntimeException

  File C:\dev7\Source\DashPortal\DashboardController\..\..\..\Build\createReportI
  nstallScript.ps1 cannot be loaded because the execution of scripts is disabled
  on this system. Please see "get-help about_signing" for more details.
  At line:1 char:87
  + C:\dev7\Source\DashPortal\DashboardController\..\..\..\Build\createReportInst
  allScript <<<<  -t C:\dev7\Source\DashPortal\DashboardController\..\..\..\Sourc
  e\DashPortal\DashboardReports\ReportSetupScriptTemplate.sql -l C:\dev7\Source\D
  ashPortal\DashboardController\..\..\..\Source\DashPortal\DashboardReports\Repor
  tSetupReportList.xml -c C:\dev7\Source\DashPortal\DashboardController\..\..\..\
  Source\DashPortal\Config
      + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
      + FullyQualifiedErrorId : RuntimeException

C:\dev7\Source\DashPortal\DashboardController\DashboardController.csproj(265,5): error MSB3073: The command "powershell
 C:\dev7\Source\DashPortal\DashboardController\..\..\..\Build\createReportInstallScript -t C:\dev7\Source\DashPortal\Da
shboardController\..\..\..\Source\DashPortal\DashboardReports\ReportSetupScriptTemplate.sql -l C:\dev7\Source\DashPorta
l\DashboardController\..\..\..\Source\DashPortal\DashboardReports\ReportSetupReportList.xml -c C:\dev7\Source\DashPorta
l\DashboardController\..\..\..\Source\DashPortal\Config" exited with code 1.

Ответы

Ответ 1

Просто гадание: вы выполнили Set-ExecutionPolicy в PowerShell x64, а в сборке работает x86 PowerShell?

Возможно, попробуйте Get-ExcutionPolicy в обеих оболочках.

Ответ 2

Изменить: oops, я вижу, что вы уже включили скрипты. Это может иметь какое-то отношение к контексту, в котором работает MSBuild. Вы используете MSBuild в качестве учетной записи локальной службы?

Edit2: очистить сообщение об ошибке обманчиво. Там происходит что-то еще и ошибка политики выполнения, но не по ожидаемой причине. Возможно, как способ изолировать, попробуйте создать еще одну задачу MSBuild, которая работает с той же строкой, но с более короткими, жестко закодированными путями вместо /../../../ bonanza выше?