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.