启动进程后 Windows 启动 Powershell 脚本未关闭

Van*_*pps 5 firefox powershell console windows-xp

我有一个适用于我的工作计算机(XP Professional 64 位)的 Powershell V2.0 启动脚本,如下所示:

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"
Run Code Online (Sandbox Code Playgroud)

睡眠是为了确保窗口以正确的顺序出现在任务栏上。我从快速启动上的快捷方式使用以下目标运行它:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe C:\scripts\initialize.ps1
Run Code Online (Sandbox Code Playgroud)

(是的,这是 2.0:powershell -Version 2.0有效,同样如此-Version 1.0,但不是-Version 3.0

问题是,命令窗口保持打开状态,直到 Firefox 窗口关闭,这不是我想要的。当我运行脚本时查看进程资源管理器,会发生以下情况:

  1. powershell.exe 出现在 explorer.exe 下并出现 Powershell 窗口(奇怪的是黑色背景。但它不是 cmd.exe,因为当我调试脚本时,错误消息会显示为红色)。
  2. Outlook.exe 出现在 powershell.exe 下,并出现 Outlook 窗口。
  3. firefox.exe 出现在 powershell.exe 下,并出现一个 Firefox 窗口。
  4. 第二个 firefox.exe 出现在 powershell.exe 下,并出现另一个 Firefox 窗口。然后第二个 Firefox 进程按预期退出,因为 Firefox 只使用一个进程。
  5. skype.exe 出现在 powershell.exe 下,并出现 Skype 窗口。
  6. powershell.exe 进程莫名其妙地一直存在,Powershell 窗口也是如此。

如果我关闭两个 Firefox 窗口,powershell.exe 进程会退出,Powershell 窗口会关闭,并且 Outlook.exe 和 skype.exe 进程会按预期出现在 explorer.exe 下。

我怀疑这与 Firefox 的标准输入、输出和错误有关:我不希望 Outlook 或 Skype 向控制台输出任何内容,但 Firefox 具有允许它这样做的命令行选项。我查看了我的 about:config 用户设置值,并没有发现任何可疑之处。最后,如果我有一个 firefox.exe 实例已经在运行(从桌面快捷方式启动),问题就不会发生(powershell.exe 进程应该退出)。

那么这里发生了什么?接下来我将尝试将 -WindowStyle hidden 添加到快捷方式(必须关闭此 Firefox 以对其进行测试),但我想深入了解这一点,如果只是为了提高我对 Windows 控制台如何工作的理解。

Van*_*pps 3

添加-WindowStyle hidden到目标就像一个魅力;无论是在任务栏上还是在 Process Explorer 中都找不到杂散的 Powershell 窗口。仍然不确定为什么这个问题首先发生,但至少它做了它应该做的事情。