Rufen Sie das Powershell-Skript in post-built mit Parametern auf

7

Ich versuche, Powershell zu veranlassen, mein PS-Skript im Post-Build auszuführen - aber irgendwie funktioniert es nicht so, wie es soll:

Folgender Befehl im Post-Build:

%Vor%

(eingefügter Zeilenumbruch zum besseren Lesen)

Der Befehl führt das Powershell-Skript erfolgreich aus, was jedoch nicht ausgeführt werden kann, ist die Ausführung der Befehle in (Output from Build): Rundum-Post-Build-Befehl:

%Vor%

Und darauf folgen viele Fehler, da alle nachfolgenden Befehle das Sharepoint-Snap-In benötigen.

  • Beim Ausführen von Powershell C: \ Pfad \ CreateSite.ps1 automatisch von cmd - alles funktioniert.
  • Beim Öffnen von powershell.exe und Ausführen von C: \ path \ CreateSite.ps1 auto - alles funktioniert.
  • Beim Rechtsklick auf CreateSite.ps1 - & gt; Run mit Powershell - alles funktioniert.

Die relevante Zeile im Skript ist einfach Add-PsSnapin Microsoft.SharePoint.PowerShell .

Wie kann ich das verarbeitete Skript einfach ausführen (und es in das PSSnapIn aufnehmen), indem ich es in Visual Studio nach dem Build übergebe?

    
Dennis G 15.02.2011, 16:46
quelle

5 Antworten

6

Aufgrund der Dateisystemvirtualisierung können Sie den Pfad zur 64-Bit-Version von PowerShell aus einem 32-Bit-Prozess (z. B. Visual Studio - der die Msbuild-Engine hostet) nicht wirklich angeben. Ein hack-ish Weg, um dies zu umgehen, ist die Erstellung eines 64-Bit-Launcher, der als 64-Bit läuft und die 64-Bit-Version von PowerShell startet. Hier ist ein einfaches C # -Programm, das dies tun wird:

%Vor%

Stellen Sie sicher, dass Sie dies als 64-Bit wie folgt kompilieren:

%Vor%

Führen Sie dann von Ihrem Post-Build-Ereignis aus diese Launcher-Exe aus und übergeben Sie ihr die Parameter, mit denen Sie die 64-Bit-PowerShell aufrufen möchten. Mit PowerShell 2.0 würde ich auch empfehlen, den Parameter File zum Ausführen eines Skripts zu verwenden, z. B .:

%Vor%

Das heißt, sicherlich muss es einen anderen Weg (Dienstprogramm) geben, der exes von einem 64-Bit-Prozess startet.

    
Keith Hill 16.02.2011, 02:13
quelle
16

(Dieser Thread ist nicht neu, aber ich bin von Google hierher gekommen, also dachte ich, dass das Teilen der gefundenen Lösung für andere interessant wäre)

Ich habe versucht, den Pfad zu powershell.exe auf "% WINDIR% \ SysNative \ WindowsPowerShell \ v1.0 \ powershell.exe" zu ändern und es funktionierte perfekt. Die 64-Bit-Version wird vom Post-Build-Ereignis aufgerufen und fügt das SharePoint-Snapin erfolgreich hinzu.

Dank an diesen Artikel: Ссылка , "Verwenden von Windows PowerShell-Skripts zum Automatisieren von Aufgaben in Visual Studio ".

    
Alex Ferreira 07.03.2012 14:55
quelle
1

Wenn Sie Ihr Skript direkt ausführen, verwenden Sie wahrscheinlich 32bit PowerShell und in Ihrem msbuild Skript 64bit oder umgekehrt. Siehe auch Fehler msg:" Für Windows PowerShell Version 2 wurden keine Snap-Ins registriert. ".

    
stej 15.02.2011 20:41
quelle
1

Eine etwas bessere Variante der Ausgabeumleitung:

%Vor%

Aufruf mit sh64 powershell -File ./buildscripts/deploy.ps1 -Ex RemoteSigned

    
Henrik 03.01.2012 14:17
quelle
1

Fügen Sie cmd-Datei (z. B. run-script.cmd) mit diesem Inhalt hinzu:

%Vor%

und rufe es vom Build-Event auf folgende Weise auf:

%Vor%     
Roman Koshelev 31.03.2015 11:12
quelle