Seite 1 von 1

[GELÖST] Zeitüberschreitung bei run(powershell script.ps1)

Veröffentlicht: 27. Juli 2017 - 10:05 Uhr
von swbsf
Guten Morgen,
Ich versuche hier mein Glück.
Ich erstelle ein Nachinstallationspaket, das die Workstations mithilfe eines PowerShell-Skripts konfiguriert. Um die Frage „Warum mache ich das nicht in reinem Python?“ gleich zu beantworten: Weil ich das PowerShell-Skript bereits habe und es sehr lang ist. Außerdem spricht nichts dagegen, PowerShell zu verwenden!
Egal welches Skript, es tritt ein Timeout auf; anscheinend erkennt psutils.Popen den Exit-Code des Skripts nicht.
Für dieses Beispiel habe ich es mit einem sehr einfachen Skript getestet:

Code: Alle auswählen

echo "coucou" > c:\tmp\fichier.txt
exit
Dann in Python:

Code: Alle auswählen

run('powershell -NoProfile -NonInteractive -File c:/tmp/test.ps1')
Ich stelle fest, dass der Code korrekt ausgeführt wird, die Anweisung jedoch nie beendet wird, oder besser gesagt, bei timeout=600 abbricht.
Irgendwelche Ideen? Welche anderen Lösungsansätze gibt es? Ich habe es auch versucht und denselben Fehler erhalten:

Code: Alle auswählen

with open('test.ps1','r') as f:
   data=f.read()
run_powershell(data)
Und es ist noch viel bizarrer.
Vielen Dank im Voraus!

Betreff: Zeitüberschreitung bei der Ausführung von `powershell script.ps1`

Veröffentlicht: 27. Juli 2017 - 11:44 Uhr
von swbsf
Zur Information: Das Problem lässt sich umgehen mit:

Code: Alle auswählen

import subprocess
cmd="powershell -NoProfile -NonInteractive -File c:\\tmp\\test.ps1"
proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
proc.wait()
stdo,stde = proc.communicate()
print(stdo,stde)

Betreff: Zeitüberschreitung bei der Ausführung von `powershell script.ps1`

Veröffentlicht: 27. Juli 2017 - 11:49 Uhr
von Sfonteneau
Ist auf diesem Rechner PowerShell Version 3 installiert?

https://lists.tranquil.it/pipermail/wap ... 02340.html

Betreff: Zeitüberschreitung bei der Ausführung von `powershell script.ps1`

Veröffentlicht: 31. Juli 2017 - 09:01 Uhr
von swbsf
Es ist Windows 10, also ja.

Code: Alle auswählen

    PS C:\Windows\system32> $PSVersionTable.PSversion
     
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      0      10586  122

Betreff: Zeitüberschreitung bei der Ausführung von `powershell script.ps1`

Veröffentlicht: 1. August 2017 - 09:27 Uhr
von swbsf
Okay, ich nehme alles zurück. Der Fehler lag tatsächlich an der PowerShell-Version, die kleiner als 3.0 war. Zum einen war es PS 2.0, zum anderen war mein Rechner einfach zu langsam, sodass das Timeout von 3 Sekunden für einen einfachen PS-Befehl nicht ausreichte.
Vielen Dank für Ihre ausführliche Hilfe :)