持续检查进程是否 运行
Continuously check if a process is running
我编写了一些代码来检查 Outlook 是否 运行,如果不是,则打开 Outlook。问题是我的工作 PC 往往闲置大约 7% 的使用率,但在脚本为 运行 时会飙升至 30 秒以上。如果它检测到 Outlook 不再处于活动状态,CPU 使用率会在打开 Outlook 时飙升至接近 100%。当脚本为 运行 时,这 ~33% 的增加可能会在我工作时引起问题。 是否有另一种方法可以使用更少的处理能力来完成我的代码的功能?
do{
$running = Get-Process outlook -ErrorAction SilentlyContinue
if (!$running)
{
Start-Process outlook
}
} while (1 -eq 1)
您需要在其中添加一个 Start-Sleep
,以防止脚本持续使用 CPU 时间。否则它会不停地循环,确保 Outlook 是 运行。在你的 do-block
:
结束时
Start-Sleep -s 60
您可以调整秒数,甚至可以使用您需要的 -m
参数指定毫秒。
另一种解决此问题的方法是 运行在批处理文件(预定)下面
@echo off
SET outlookpath=C:\Program Files\Microsoft Office 15\root\office15\outlook.exe
for /f "usebackq" %%f in (`tasklist /FI "IMAGENAME eq outlook.exe"`) do set a=%%f
REM echo A:%a%
if not "%a%"=="outlook.exe" start "" "%outlookpath%"
如果您将其安排为每 5 分钟 运行,那么在关闭 Outlook 后的 5 分钟内,它将重新启动。如果您认为 5 分钟太长,请更频繁地安排它。
我编写了一些代码来检查 Outlook 是否 运行,如果不是,则打开 Outlook。问题是我的工作 PC 往往闲置大约 7% 的使用率,但在脚本为 运行 时会飙升至 30 秒以上。如果它检测到 Outlook 不再处于活动状态,CPU 使用率会在打开 Outlook 时飙升至接近 100%。当脚本为 运行 时,这 ~33% 的增加可能会在我工作时引起问题。 是否有另一种方法可以使用更少的处理能力来完成我的代码的功能?
do{
$running = Get-Process outlook -ErrorAction SilentlyContinue
if (!$running)
{
Start-Process outlook
}
} while (1 -eq 1)
您需要在其中添加一个 Start-Sleep
,以防止脚本持续使用 CPU 时间。否则它会不停地循环,确保 Outlook 是 运行。在你的 do-block
:
Start-Sleep -s 60
您可以调整秒数,甚至可以使用您需要的 -m
参数指定毫秒。
另一种解决此问题的方法是 运行在批处理文件(预定)下面
@echo off
SET outlookpath=C:\Program Files\Microsoft Office 15\root\office15\outlook.exe
for /f "usebackq" %%f in (`tasklist /FI "IMAGENAME eq outlook.exe"`) do set a=%%f
REM echo A:%a%
if not "%a%"=="outlook.exe" start "" "%outlookpath%"
如果您将其安排为每 5 分钟 运行,那么在关闭 Outlook 后的 5 分钟内,它将重新启动。如果您认为 5 分钟太长,请更频繁地安排它。