Como o PowerShell pode criar Objetos do .NET Framework , eu recomendaria o PerformanceCounter class para esta tarefa.
Esta classe pode ser trabalhosa, mas fornece a maior parte da funcionalidade que você precisa.
Para obter uma lista de categorias, você pode simplesmente chamar o método estático GetCategories()
:
[System.Diagnostics.PerformanceCounterCategory]::GetCategories()
Para começar, escrevi uma pequena demonstração:
$pc_prc = new-object System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total")
$pc_ram = new-object System.Diagnostics.PerformanceCounter("Memory", "Available MBytes")
while(1) {
$time = get-date
echo ======================
echo $time
echo ======================
$pc_prc_value = $pc_prc.NextValue()
$pc_ram_value = $pc_ram.NextValue()
echo " + Processor Load: $pc_prc_value %"
echo " + Available Memory: $pc_ram_value MB"
sleep 1
}
Observe que a PerformanceCounter
class não suporta os dados de temperatura de recuperação da CPU, pois esse procedimento é altamente dependente da arquitetura.
Confira esta pergunta do SO para obter mais informações.