I am trying to record CPU and memory utilizations of processes running in my window server using PowerShell. Script is running well but I am not getting anything if Mutiple process are running with same process name. it is throwing error: Method invocation failed because [System.Object[]] does not contain a method named 'op_Division I am getting my process list correctly using this command $processList = Get-Process -Name myMap | Select-Object -ExpandProperty ProcessName
Please help me, here is my code
$processList = Get-Process -Name myMap | Select-Object -ExpandProperty ProcessName
$outputFile = "D:\Users\vin\Performance_Srcipts\output\mymap.csv"
"Timestamp,ProcessName,%CPU,Memory(MB)" | Out-File -FilePath $outputFile
For ($i = 0; $i -lt 10; $i++) {
foreach ($processName in $processList) {
$process = Get-Process -Name $processName -ErrorAction SilentlyContinue
if ($process) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$cpu= try { (Get-Counter -Counter "\Process($processName*)\% Processor Time").CounterSamples.CookedValue / (Get-Process -Name $processName).Count } catch { 0 }
$memory = [math]::Round($process.WorkingSet64 / 1MB, 2)
"$timestamp,$processName,$cpu,$memory" | Out-File -FilePath $outputFile -Append
}
}
Start-Sleep -Seconds 5
}
Write-Host "Process monitoring completed. Data saved to $outputFile"
$processis an array, so you must do something like$memory = [math]::Round($process[0].WorkingSet64 / 1MB, 2).Export-CsvorConvertTo-Csv.