powershell : 1분마다 cpu 사용률이 높은 ranking 10개를 수집하여 csv 파일 저장하기
매 1분마다 cpu 사용률이 높은 ranking 10 개를 수집하는 powershell 프로그램을 만들어 봅니다.
csv 파일에 누적해서 저장하여 이를 구분하기 위해 저장한 날짜와 함께 저장해 봅니다.
$date = Get-Date -Format "yyyy-MM-dd"
$filename = "cpu_monitor_$date.csv"
if(-not (Test-Path $filename)) {
$header = "Timestamp,Process1,Process1 CPU,Process2,Process2 CPU,Process3,Process3 CPU,Process4,Process4 CPU,Process5,Process5 CPU,Process6,Process6 CPU,Process7,Process7 CPU,Process8,Process8 CPU,Process9,Process8 CPU,Process10,Process10 CPU"
$header | Out-File -FilePath $filename -Encoding utf8
}
while($true) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$processes = Get-Process | Sort-Object -Descending cpu | Select-Object -First 10
$process1 = $processes[0].Name + "," + "{0:N2}" -f $processes[0].CPU
$process2 = $processes[1].Name + "," + "{0:N2}" -f $processes[1].CPU
$process3 = $processes[2].Name + "," + "{0:N2}" -f $processes[2].CPU
$process4 = $processes[3].Name + "," + "{0:N2}" -f $processes[3].CPU
$process5 = $processes[4].Name + "," + "{0:N2}" -f $processes[4].CPU
$process6 = $processes[5].Name + "," + "{0:N2}" -f $processes[5].CPU
$process7 = $processes[6].Name + "," + "{0:N2}" -f $processes[6].CPU
$process8 = $processes[7].Name + "," + "{0:N2}" -f $processes[7].CPU
$process9 = $processes[8].Name + "," + "{0:N2}" -f $processes[8].CPU
$process10 = $processes[9].Name + "," + "{0:N2}" -f $processes[9].CPU
$data = "$timestamp,$process1,$process2,$process3,$process4,$process5,$process6,$process7,$process8,$process9,$process10"
$data | Out-File -FilePath $filename -Encoding utf8 -Append
Write-Host "$timestamp CPU monitor data saved."
Start-Sleep -Seconds 60
}
작동을 파워셀에서 실행하면 아래와 같은 csv 파일을 만들어 줍니다.