Я бы сказал, что лучший способ сделать что-то подобное - это тот, который дает вам честный результат, быстро, без большой нагрузки на систему.
Сказав это, есть несколько вещей, которые яЯ не уверен, что понимаю. Это моментальный снимок общего использования свободной оперативной памяти и процессора за последнюю секунду - я не уверен, что данные будут особенно полезны. Даже запуск нескольких вкладок Chrome может кардинально изменить его.
Когда один из наших специалистов хотел что-то похожее сегодня (некоторые серверы вышли с неправильно настроенными сетевыми картами), я помог ему написать очень похожий сценарий - за исключением того, что он его кормилсписок из 450 машин, и он сделал запрос WMI удаленно. Мне также нравится использовать Get-WmiObject .
Наконец, мне лично не безразлична идея отправки этих данных по электронной почте - кому-то придется читать все эти письма и приниматьдействие. Я предпочел бы записать его в базу данных SQL или, по крайней мере, зарегистрировать его в CSV на общем файловом ресурсе.
Сказав все это, введите этот список имен компьютеров и обновите последнюю строку с помощьюадреса электронной почты и SMTP-сервер, и запустите его с учетной записью, имеющей права на удаленные компьютеры (… и права на отправку электронной почты на ваш сервер), и он должен выполнить запросы WMI на всех компьютерах, выбросить результаты в одинCSV-файл и отправьте его вам по почте.
$computers = Get-Content -Path "ListOfcomputers.txt"
foreach ($computer in $computers) {
$Memory = Get-WmiObject win32_operatingsystem -ComputerName $computer| Select-Object @{Name = "MemoryUsage"; Expression = {"{0:N2}" -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize) }}
$CPU = Get-WmiObject win32_processor | Select-Object -property LoadPercentage
$Props = @{"Memory"= $Memory.MemoryUsage ; "CPU Utilization" = $CPU.LoadPercentage}
$Mydata = New-Object -TypeName psobject -Property $Props
$MyData
$MYdata | Export-Csv "output-excel.csv" -Append
}
Send-MailMessage -From 'Script <Script@Example.com>' -To 'User <user@Example.com>', 'User 2 <user2@Example.com>' -Subject 'Sending the Report' -Body "Here's the report" -Attachments "output-excel.csv" -SmtpServer 'smtp.example.com'