재우니의 블로그

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 파일을 만들어 줍니다.

 

cpu_monitor_2023-03-21.csv
0.00MB