Página 1 de 1

[RESUELTO] tiempo de espera de ejecución (script de powershell.ps1)

Publicado: 27 de julio de 2017 - 10:05 a. m.
por swbsf
Buen día,
Estoy probando suerte aquí.
Estoy creando un paquete posterior a la instalación que configurará las estaciones de trabajo mediante la ejecución de un script de PowerShell. Para responder de inmediato a la posible pregunta de "¿por qué no hago esto después de la instalación en Python puro?": porque ya tengo el script de PowerShell y es muy largo. Además, ¡no hay ninguna razón por la que no podamos ejecutar PowerShell!
Entonces, sea cual sea el script, se agota el tiempo de espera; parece que psutils.Popen no está detectando el código de salida del script.
Para este ejemplo, lo probé con un script muy simple:

Código: Seleccionar todo

echo "coucou" > c:\tmp\fichier.txt
exit
Luego en Python:

Código: Seleccionar todo

run('powershell -NoProfile -NonInteractive -File c:/tmp/test.ps1')
Observo que el código se ejecuta correctamente, pero la instrucción nunca termina, o mejor dicho, en timeout=600.
¿Alguna idea? ¿Qué otras soluciones hay? También lo probé con el mismo error:

Código: Seleccionar todo

with open('test.ps1','r') as f:
   data=f.read()
run_powershell(data)
Y es aún más extraño.
¡Gracias de antemano!

Re: tiempo de espera de ejecución (script de powershell.ps1)

Publicado: 27 de julio de 2017 - 11:44 a. m.
por swbsf
Para su información, el problema se soluciona con:

Código: Seleccionar todo

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)

Re: tiempo de espera de ejecución (script de powershell.ps1)

Publicado: 27 de julio de 2017 - 11:49 a. m.
por sfonteneau
¿Tiene instalada la versión 3 de PowerShell en esta máquina?

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

Re: tiempo de espera de ejecución (script de powershell.ps1)

Publicado: 31 de julio de 2017 - 09:01
por swbsf
Es Windows 10, así que sí.

Código: Seleccionar todo

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

Re: tiempo de espera de ejecución (script de powershell.ps1)

Publicado: 1 de agosto de 2017 - 09:27
por swbsf
De acuerdo, retiro lo dicho. El error sí estaba relacionado con que la versión de PowerShell era inferior a la 3.0. Por un lado, era PS 2.0, y por otro, simplemente era un equipo lento, por lo que el tiempo de espera de 3 segundos era demasiado corto para ejecutar un comando simple de PS.
Gracias por su ayuda detallada :)