Ho uno script di avvio Powershell V2.0 per il mio computer di lavoro (XP Professional 64-bit), come segue:
start "C:\Program Files (x86)\Microsoft Office\Office12\OUTLOOK.EXE" -ArgumentList "/recycle"
sleep -S 2
start "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -ArgumentList "https://mail.google.com"
sleep -S 2
start "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -ArgumentList "-new-window https://www.google.com/calendar"
sleep -S 2
start "C:\Program Files (x86)\Skype\Phone\Skype.exe"
Il sonno è garantire che le finestre vengano visualizzate sulla barra delle applicazioni nell'ordine corretto. Eseguo questo da un collegamento sul mio avvio veloce con il seguente obiettivo:
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe C:\scripts\initialize.ps1
(Sì, questo è 2.0: powershell -Version 2.0
funziona, come fa -Version 1.0
, ma non -Version 3.0
)
Il problema è che la finestra di comando rimane aperta fino alla chiusura delle finestre di Firefox, che non è quello che voglio. Guardando Process Explorer quando eseguo lo script, ecco cosa succede:
- powershell.exe appare sotto explorer.exe e appare la finestra Powershell (con uno sfondo nero, stranamente. Ma non è cmd.exe, poiché quando stavo eseguendo il debug i messaggi di errore dello script apparivano in rosso).
- outlook.exe appare sotto powershell.exe e appare la finestra di Outlook.
- firefox.exe appare sotto powershell.exe e appare una finestra di Firefox.
- Un secondo firefox.exe appare sotto powershell.exe e appare un'altra finestra di Firefox. Il secondo processo di Firefox termina quindi, come previsto, poiché Firefox utilizza solo un processo.
- skype.exe appare sotto powershell.exe e appare la finestra di Skype.
- Il processo powershell.exe rimane inspiegabilmente attivo, così come la finestra Powershell.
Se chiudo entrambe le finestre di Firefox, il processo powershell.exe si chiude e la finestra Powershell si chiude e i processi outlook.exe e skype.exe vengono visualizzati in explorer.exe come previsto.
Ho il sospetto che ciò abbia a che fare con l'input, l'output e l'errore standard di Firefox: non mi aspetto che Outlook o Skype abbiano mai prodotto nulla sulla console, ma Firefox ha opzioni da riga di comando che gli consentono di farlo. Ho esaminato il mio aspetto: l'utente ha impostato i valori e non ha trovato nulla di sospetto. Infine, se ho già un'istanza di firefox.exe in esecuzione (avviata dal collegamento sul desktop) il problema non si verifica (il processo powershell.exe si chiude come dovrebbe).
Quindi cosa sta succedendo qui? Proverò ad aggiungere -WindowStyle nascosto al collegamento successivo (devo chiudere Firefox per testarlo), ma voglio arrivare in fondo a questo, se non altro per migliorare la mia comprensione di come funzionano le console di Windows.
-NoNewWindow
cambiare con firefox-es?