Pagina 1 di 1

[RISOLTO] timeout run(powershell script.ps1)

Pubblicato: 27 luglio 2017 - 10:05
di swbsf
Buongiorno,
Sto tentando la fortuna qui.
Sto creando un pacchetto di post-installazione che configurerà le workstation eseguendo uno script di PowerShell. Quindi, per rispondere subito a una potenziale domanda del tipo "perché non eseguo questa post-installazione in Python puro?": perché ho già lo script di PowerShell, ed è molto lungo. Inoltre, non c'è motivo per cui non possiamo eseguire PowerShell!
Quindi, qualunque sia lo script, scade il tempo; sembra che psutils.Popen non rilevi il codice di uscita dello script.
Per questo esempio, l'ho testato con uno script molto semplice:

Codice: Seleziona tutto

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

Codice: Seleziona tutto

run('powershell -NoProfile -NonInteractive -File c:/tmp/test.ps1')
Noto che il codice viene eseguito correttamente, ma l'istruzione non termina mai, o meglio, al timeout=600.
Avete idee? Quali altre soluzioni ci sono? Ho provato anch'io, ma ho riscontrato lo stesso errore:

Codice: Seleziona tutto

with open('test.ps1','r') as f:
   data=f.read()
run_powershell(data)
Ed è ancora più bizzarro.
Grazie in anticipo!

Re: timeout di run(powershell script.ps1)

Pubblicato: 27 luglio 2017 - 11:44
di swbsf
Per vostra informazione, il problema viene aggirato con:

Codice: Seleziona tutto

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: timeout di run(powershell script.ps1)

Pubblicato: 27 luglio 2017 - 11:49
di sfontenau
Hai installato PowerShell versione 3 su questa macchina?

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

Re: timeout di run(powershell script.ps1)

Pubblicato: 31 luglio 2017 - 09:01
di swbsf
È Windows 10, quindi sì.

Codice: Seleziona tutto

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

Re: timeout di run(powershell script.ps1)

Pubblicato: 1 agosto 2017 - 09:27
di swbsf
Va bene, ritiro quanto ho detto. L'errore era effettivamente legato alla versione di PowerShell, inferiore alla 3.0. Da un lato, si trattava di PowerShell 2.0, dall'altro, semplicemente il computer era lento, quindi il timeout di 3 secondi era troppo breve per eseguire un semplice comando PowerShell.
Grazie per il tuo aiuto dettagliato :)