6

Ich habe einige einfache PowerShell-Skripts, die ich in ausführbare Dateien mit Bamboo gemacht habe, indem Sie einen Pfad wie C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 als Pfad für die ausführbare Datei für eine neue Kapazität hinzufügen in Bambus.Powershell-Skript als ausführbare Eingabe "falsch" Rückgabecode -1 in Bamboo

Mehrere Skripts, sogar solche, die im Build-Prozess korrekt ausgeführt werden, wenn sie als "Skript" -Prozess ausgeführt werden, schlagen jedoch bei der Ausführung auf diese Weise fehl, indem sie den Rückkehrcode -1 angeben. Hier ist ein Beispiel aus dem Build-Log:

simple 18-Jun-2015 13:14:06 Failing task since return code of [C:\build-scripts\bamboo-build-scripts\update-checker.ps1 GeometryClassLibrary] was -1 while expected 0 

Dies geschieht mit mehrer Powershell-Skripts, und bewirkt, dass der Rest des Build procecss zum Scheitern verurteilt. Hier

ist ein Beispiel Powershell-Skript, das ich, indem man das Argument in ein Verzeichnis ausführen:

Remove-Item $args[0] -Force -Recurse 
[io.directory]::CreateDirectory($args[0]) 

Gibt es etwas, das ich an den Powershell-Skript hinzufügen muß, um es Ausfahrt mit dem richtigen Code? Oder definiere ich die ausführbare Datei in Bamboo nicht richtig?

+0

Die Unterstützung von Bamboo für Powershell erschien mir in meiner eingeschränkten Verwendung als Skriptaufgaben zweifelhaft. –

+0

Wir hatten relativ gute Erfolge bei der Verwendung von Skriptaufgaben, aber da einige unserer Skripte komplexer geworden waren, schien es sinnvoll, in eine separate ausführbare Datei zu wechseln und Argumente zu übergeben. Das ist der Punkt, an dem das Problem aufgetreten ist: Die Skripte funktionierten vorher gut als Skriptaufgaben. – Jake

+0

Ich habe gesehen, dass es Fehler ignoriert (geworfene Fehler, die im Protokoll angezeigt werden) und während der Ausführung des Skripts weiterlaufen. Das Hinzufügen des strikten Modus und das manuelle Einstellen von EA hat mir dabei ein wenig geholfen. –

Antwort

0

können Sie ein paar Dinge versuchen:

Execution Policy

Es dass die Skripte überhaupt nicht vielleicht sein könnte, ausgeführt wird, weil die Politik nicht, sie auszuführen gesetzt. Versuchen powershell.exe Aufruf direkt:

powershell.exe -ExecutionPolicy Bypass -File C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 

(see this answer for more switches)

Piping

NSClient ++ verwendet Probleme haben mit Schecks geschrieben in Powershell aufgrund von Problemen mit dem Exit-Code aufrufen. Ihre Lösung sah so aus:

cmd /c echo C:\build-scripts\bamboo-build-scripts\clear-directory.ps1; exit $LastExitCode | powershell.exe -Command - 

Vielleicht wird das einen genaueren Code geben.

+0

Hier ist ein Beispiel, wie ich das Skript anrufe: http://i.imgur.com/wAUXJ3D.png Wie würde ich diese ausführbare Datei modifizieren, um sie so auszuführen? – Jake

+0

@Jake Kannst du einfach kopieren und einfügen, was ich in diese Box gepostet habe? Ich habe kein Bamboo benutzt, also bin ich mir nicht sicher, ob es die Parameter und ähnliches braucht. – briantist

+1

Die zweite funktioniert von der Eingabeaufforderung aus, aber das Ganze in Bamboo einfügen, da eine ausführbare Datei nicht funktioniert. Es meldet: 'Kann keine ausführbare Datei finden unter cmd/c echo C: \ Build-Skripte \ Bamboo-Build-Skripte \ Clear-Verzeichnis.ps1; exit $ LastExitCode | powershell.exe -Befehl C: \ build-scripts \ bamboo-build-scripts \ clear-directory.ps1. Will versuchen, es trotzdem zu tun. "Wenn jemand mit Bamboo-spezifischem Wissen hereinspielen könnte, wäre das großartig. – Jake