powershell - 在 Powershell 脚本中检测/等待空闲
问题描述
我有类似部署解决方案的东西。我按顺序安装一些软件包,重新启动,安装更多软件包等等......
我确实观察到,在这样的安装序列之后,系统正在处理一些任务。例如,在安装 Symantec Anti-Virus 后,计算机的工作负载会持续几分钟。也许它会进行第一次扫描或类似的事情。我不知道。自动序列强制重新启动。有时我看到系统挂在注销窗口强制结束任务...
要获得更好的可视化效果,请参见示例 CPU 图的屏幕截图:性能图
- 安装顺序
- 安装结束。电脑闲置几秒
- 几分钟的工作量
(*)抱歉,图表不真实。只是为了可视化。
我正在寻找一种 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) ) )
- 我不喜欢“Get-Counter”cmdlet 不是文化中立的,我不想使用大量代码来解决这个问题。(像这样)
- 计数器“ \Processor(_Total)\% Processor Time ”是否最适合这种情况?
- 我也会用“Get-CimInstance”得到这个计数器吗?
- 具有多个 CPU 内核(例如 16 个内核)的系统是否应该被区别对待?
- 根据我的要求有任何改进吗?
谢谢
解决方案
推荐阅读
- angular - CUSTOM_ELEMENTS_SCHEMA 错误有时仅显示
- amazon-s3 - 使用 Cloudformation 启用 S3 清单
- node.js - 使用 async await 构建 api
- java - 有没有办法在 SpringBoot 中使用实际的 SQL 查询(使用 MySql 的 Performance_schema)?
- reactjs - React JS-API 加载时间更长
- reactjs - 未定义道具
- javascript - 从快速文件到前端的响应问题(React)
- rancher - Rancher 节点代理 - 证书链不完整
- node.js - Vuejs 应用程序中的 google-cloud/text-to-speech 身份验证
- java - 使用 org.mapstruct.Mapper 映射两个对象的更好方法