3 Stimmen

Warum kann ich in PowerShell auf einem TeamCity-Agenten nicht entpacken?

Ich habe ein Skript, das ein MVC-Paket entpackt, alle CSS- und Js-Dateien verkleinert und es erneut entpackt. Es funktioniert perfekt auf meinem Rechner und auf dem CI-Server als Administrator oder das TeamCity-Konto. Wenn TeamCity zieht es nach unten und führt es, das Skript gibt alle die Ausgabe erwartet, meldet keinen Fehler, aber es wird nie die Datei entpacken.

write-host "creating shell object"
$shell_app=new-object -com shell.application
write-host "creating zip file"
$zip_file = $shell_app.namespace("C:\temp\PokerLeagueWebSite.zip")
write-host "setting folder to unzip to"
$destination = $shell_app.namespace("C:\temp\zy98")
write-host "about to copy files from zip"
$destination.Copyhere($zip_file.items(), 0x4)
write-host "finished"

Hier ist die Ausgabe von TeamCity:

[23:01:03]: Step 5/5: test ps1 file (Powershell)
[23:01:03]: [Step 5/5] Starting: C:\Windows\system32\cmd.exe /c
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -File
C:\TeamCity\buildAgent\work\71e78d4c543e0594\Tools\test.ps1 && exit /b %ERRORLEVEL%
[23:01:03]: [Step 5/5] in directory: C:\TeamCity\buildAgent\work\71e78d4c543e0594
[23:01:03]: [Step 5/5] creating shell object
[23:01:03]: [Step 5/5] creating zip file
[23:01:03]: [Step 5/5] setting folder to unzip to
[23:01:03]: [Step 5/5] about to copy files from zip
[23:01:03]: [Step 5/5] finished
[23:01:03]: [Step 5/5] Process exited with code 0
[23:01:03]: Publishing internal artifacts
[23:01:03]: [Publishing internal artifacts] Sending build.finish.properties.gz file
[23:01:03]: Build finished

Wenn ich den genauen Befehl auf dem Server unter dem TeamCity-Konto ausführe, funktioniert er korrekt:

C:\Windows\system32\cmd.exe /c C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -File C:\TeamCity\buildAgent\work\71e78d4c543e0594\Tools\test.ps1 && exit /b %ERRORLEVEL%

Ich kann mir nur vorstellen, dass es entweder etwas ist, das TeamCity tut, oder etwas, das mit der Tatsache zusammenhängt, dass es als Dienst ausgeführt wird, aber ich bin ratlos und kann es nicht herausfinden.

3voto

Bruce Liu Punkte 384

Ich habe die Antwort von "user1545905" verwendet, aber ich musste den TeamCity-Agentendienst nach dem Neustart des Servers manuell neu starten. Sie können dem TeamCity-Agentendienstbenutzer Vollzugriff auf das Verzeichnis gewähren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X