Ich führe einen Windows-Dienst (Hudson) aus, der wiederum einen PowerShell-Prozess startet, um meine benutzerdefinierten PowerShell-Befehle auszuführen. Ein Teil meines Skripts besteht darin, eine Datei mit CopyHere zu entpacken. Wenn ich dieses Skript lokal ausführe, wird ein Fortschrittsdialog angezeigt, während die Dateien extrahiert und kopiert werden. Wenn es jedoch unter dem Dienst ausgeführt wird, bleibt es an der Stelle hängen, an der sonst ein Dialogfeld angezeigt würde.
Hier ist der Teil meines Skripts zum Entpacken.
# Extract the contents of a zip file to a folder
function Extract-Zip {
param([string]$zipFilePath, [string]$destination)
if(test-path($zipFilePath)) {
$shellApplication = new-object -com shell.application
$zipFile = get-item $zipFilePath
$zipFolder = $shellApplication.NameSpace($zipFile.fullname)
$destinationFile = get-item $destination
$destinationFolder = $shellApplication.NameSpace($destinationFile.fullname)
$destinationFolder.CopyHere($zipFolder.Items())
}
}
Ich vermute, dass aufgrund der Tatsache, dass es unter einem Dienstprozess läuft, der kopflos ist (keine Interaktion mit dem Desktop), es irgendwie feststeckt und versucht, einen Dialog anzuzeigen.
Gibt es eine Möglichkeit, dies zu umgehen?
0 Stimmen
Haben Sie das Powershell-Plugin für Hudson ausprobiert? Vielleicht hilft das ja.