2010-01-14 4 views
14

Nous avons un script de construction powershell qui appelle à d'autres scripts qui me pose problème sous Windows 7 64 bits. Cela fonctionne bien sous XP. J'ai exécuté set-executionpolicy sur RemoteSigned (et l'ai également essayé avec Bypass et Unrestricted). Je peux tirer la ligne de commande du message d'erreur et l'exécuter moi-même et tout fonctionne bien.msbuild appel script powershell sous Windows 7 obtient l'erreur de signature

Les erreurs de construction semblent terribles ici; mais je les inclus de toute façon pour l'exhaustivité.


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. 
+0

Pour optimiser l'utilisation d'une tâche de script MSBuild, il peut être utile d'obtenir un certificat pour les signer, ce qui évite d'avoir à activer des scripts non signés sur chaque système de construction. – Richard

Répondre

23

juste deviner: Vous couriez Set-ExecutionPolicy dans votre x64 PowerShell et la construction exécute les x86 PowerShell? Peut-être essayer Get-ExcutionPolicy dans les deux shells.

+0

C'est tout à fait ça! Merci beaucoup! –

+0

Glad je pourrais aider ... a couru dans x64/x86 me pose quelques fois – Filburt

0

Edit: oups, je vois des scripts déjà activé. C'est peut-être quelque chose à voir avec le contexte dans lequel MSBuild est en cours d'exécution. Exécutez-vous MSBuild en tant que compte de service local quelconque?

Édition2: Il est clair que le message d'erreur est trompeur. Il se passe quelque chose d'autre et l'erreur de la politique d'exécution est lancée mais pas pour la raison attendue. Pour essayer de l'isoler, essayez peut-être de créer une autre tâche MSBuild qui exécute la même ligne mais avec des chemins codés en dur plus courts au lieu de la bonalité /../../../ ci-dessus?

+0

J'ai Set-ExecutionPolicy à RemoteSigned maintenant. J'ai aussi essayé sans restriction et Bypass sans chance. –

+0

Ouais ma mauvaise réponse, éditée. Pour l'anecdote, je n'ai aucune idée de ce qui se passe :) –

+0

En fait, vous étiez vraiment proche. Voir la réponse de Filburt. –