我的脚本监视进程的CPU使用情况,每5秒循环一次并将其写入文件。哪些工作正常。当进程更改并且在进程结束时抛出错误时,Get-Counter进程不刷新
但我发现,当一个新的进程运行我的脚本将不会找到它,直到我停止脚本并重新运行一次。
此外,如果一个进程结束/停止,脚本给出这个错误:
Get-Counter : The data in one of the performance counter samples is not valid. View the Status property for each PerformanceCounterSample object to make sure it contains valid data.
At line:2 char:34
看来PowerShell中只有一次检索过程信息并将其缓存。
如果我跑了波纹管脚本(这是所有我的脚本的一部分),它运行完美:
while($true) {
$ProcessId = (Get-Counter "\Process(*)\ID Process").CounterSamples
$ProcessId.count
Start-Sleep -s 5
}
如果我有50个过程中它会给出50,但如果一个新的进程启动时,它会继续给50,直到我重新启动脚本。
如果我停止任何进程它会给出上述相同的错误。
任何想法如何解决这个问题,并强制PowerShell重新读取进程列表,而无需重新启动脚本?
执行后每次重新启动它(只是一个修复,可能不是最好的解决方案).Main(){哪个调用Main作为最后一步。}这可能会诀窍 –
通过这样做,您可以开始执行完整的脚本 –
我如何从代码重新启动它? – user93865