у меня есть Powershell V2.0 стартовый скрипт для моего рабочего компьютера (XP Professional 64-бит), следующий:
start "C:Program Files (x86)Microsoft OfficeOffice12OUTLOOK.EXE" -ArgumentList "/recycle"
sleep -S 2
start "C:Program Files (x86)Mozilla Firefoxfirefox.exe" -ArgumentList "https://mail.google.com"
sleep -S 2
start "C:Program Files (x86)Mozilla Firefoxfirefox.exe" -ArgumentList "-new-window https://www.google.com/calendar"
sleep -S 2
start "C:Program Files (x86)SkypePhoneSkype.exe"
спальные места, чтобы убедиться, что окна появляются на панели задач в правильном порядке. Я запускаю это из ярлыка на моем быстром запуске со следующей целью:
C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe C:scriptsinitialize.ps1
(Да, это 2.0: powershell -Version 2.0
работает, а -Version 1.0
, а не -Version 3.0
)
проблема, команда окно останется открытым до тех пор, пока окна Firefox, которая это не то, чего я хочу. Глядя на Process Explorer, когда я запускаю сценарий, вот что происходит:
- powershell.exe появится в проводнике.exe и появляется окно Powershell (с черным фоном, как ни странно. Но это не командир полиции.exe, так как при отладке скрипта сообщения об ошибках будут отображаться красным цветом).
- outlook.exe-файл отображается в powershell.появится окно exe и Outlook.
- firefox.exe-файл отображается в powershell.exe и окно Firefox кажется.
- второй firefox.exe-файл отображается в powershell.exe и другое окно Firefox появляется. Второй процесс Firefox затем завершает работу, как и ожидалось, так как Firefox использует только один процесс.
- skype.exe-файл отображается в powershell.появится окно exe и Skype.
- powershell.процесс exe необъяснимо торчит, как и окно Powershell.
если я закрываю оба окна Firefox, powershell.процесс exe выходит и Окно Powershell закрывается, а outlook.exe и skype.процессы exe отображаются в проводнике.exe как ожидалось.
Я подозреваю, что это как-то связано со стандартным вводом, выводом и ошибкой Firefox: я бы не ожидал, что Outlook или Skype когда-либо выведут что-либо на консоль, но Firefox имеет параметры командной строки, которые позволяют это сделать. Я просмотрел значения пользовательских наборов about:config и не нашел ничего подозрительного. Наконец, если у меня есть firefox.экземпляр exe уже запущен (запускается с ярлыка на рабочем столе) проблема не возникает (powershell.exe процесс выходит, как и должно).
так, что здесь происходит? Я собираюсь попробовать добавить-WindowStyle hidden к ярлыку next (должен закрыть этот Firefox, чтобы проверить его), но я хочу добраться до сути этого, хотя бы для того, чтобы улучшить мое понимание того, как работают консоли Windows.