首页 > 解决方案 > 在特定时间结束 Powershell 作业

问题描述

如果这真的很简单,我很抱歉,但我对 Powershell 还是很陌生,仍然在寻找自己的方式。

因此,我正在尝试收集有关处理器和内存使用情况的一些数据,然后将其写入文件。我希望脚本运行一天,写入文件然后第二天重新开始。

实际的数据收集是作为一项工作完成的

$datacollector = Start-Job {
$totalRam = (Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).Sum
while($true) {
    $date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $cpuTime = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue
    $availMem = (Get-Counter '\Memory\Available MBytes').CounterSamples.CookedValue
    $date + ' > CPU: ' + $cpuTime.ToString("#,0.000") + '%, Avail. Mem.: ' + 
    $availMem.ToString("N0") + 'MB (' + (104857600 * $availMem / $totalRam).ToString("#,0.0") + '%)'
    Start-Sleep -s 15
}} -Name datacollector

然后我设置运行它的时间

Start-Sleep -s 600

结束工作

Stop-Job datacollector

并将数据写入文件

Get-Job datacollector | Wait-Job | Receive-Job | Out-File C:\output.txt

如何将此作业设置为在特定时间停止,而不是使用 Start-Sleep 命令?我确定这很简单,但我就是看不到。

标签: powershell

解决方案


推荐阅读