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

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
swbsf
Nachrichten: 8
Anmeldung: 27. Juli 2017 - 09:50 Uhr

27. Juli 2017 - 10:05 Uhr

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!
Zuletzt bearbeitet von swbsf am 1. August 2017 um 09:28 Uhr, 1 Mal bearbeitet.
swbsf
Nachrichten: 8
Anmeldung: 27. Juli 2017 - 09:50 Uhr

27. Juli 2017 - 11:44 Uhr

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)
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

27. Juli 2017 - 11:49 Uhr

Ist auf diesem Rechner PowerShell Version 3 installiert?

https://lists.tranquil.it/pipermail/wap ... 02340.html
swbsf
Nachrichten: 8
Anmeldung: 27. Juli 2017 - 09:50 Uhr

31. Juli 2017 - 09:01 Uhr

Es ist Windows 10, also ja.

Code: Alle auswählen

    PS C:\Windows\system32> $PSVersionTable.PSversion
     
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    5      0      10586  122
swbsf
Nachrichten: 8
Anmeldung: 27. Juli 2017 - 09:50 Uhr

1. August 2017 - 09:27 Uhr

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 :)
Gesperrt