首页 > 解决方案 > 在 Powershell 脚本中检测/等待空闲

问题描述

我有类似部署解决方案的东西。我按顺序安装一些软件包,重新启动,安装更多软件包等等......

我确实观察到,在这样的安装序列之后,系统正在处理一些任务。例如,在安装 Symantec Anti-Virus 后,计算机的工作负载会持续几分钟。也许它会进行第一次扫描或类似的事情。我不知道。自动序列强制重新启动。有时我看到系统挂在注销窗口强制结束任务...

要获得更好的可视化效果,请参见示例 CPU 图的屏幕截图:性能图

  1. 安装顺序
  2. 安装结束。电脑闲置几秒
  3. 几分钟的工作量

(*)抱歉,图表不真实。只是为了可视化。

我正在寻找一种 PowerShell 解决方案来检测空闲。安装最后一个软件包后,我想运行它,它应该等待,直到计算机准备好。

它应该是动态的 - 我不想使用...

Start-Sleep -Seconds 300

...并希望,任务已经结束。

它不应该依赖于进程名称或类似的东西。

编辑#1:

根据您的评论,我确实创建了以下代码作为第一个测试:

$Start = Get-Date

do {

    $LoadPercentage = Get-Counter -Counter "\prozessor(_total)\prozessorzeit (%)" -SampleInterval 1 -MaxSamples 5 | Select-Object -ExpandProperty CounterSamples | Group-Object -Property InstanceName | `
                  ForEach-Object { 
                    $_ | Select-Object -Property @{ n='Average'; e={ [math]::Round( ( $_.Group.CookedValue | Measure-Object -Average ).Average, 1 ) } };
                  } | Select-Object -ExpandProperty Average

   $LoadPercentage

} until ( ( $LoadPercentage -lt 15 ) -or ( ( Get-Date ) -gt $Start.AddMinutes(1) ) )

谢谢

标签: powershell

解决方案


推荐阅读