获取在vm

时间:2018-04-30 10:18:15

标签: powershell virtual-machine cpu-usage powercli

我正在尝试获取虚拟机内所有应用程序的CPU使用率,磁盘容量,内存使用率和网络使用率。我用谷歌搜索,发现对于VM明智的我们可以使用powercli或powershell获取上述数据。但我希望从应用程序级别获得它。如果我有访问vm的身份验证,那么在应用程序级别监视所有这些数据的过程或工具是什么?

2 个答案:

答案 0 :(得分:0)

如果您可以远程访问Windows VM。您可以使用PowerShell远程处理。

$session = New-Pssession -ComputerName "127.0.0.1" -Credential (Get-Credential)

为您提供新的远程会话。您可以使用$session中的Invoke-Command对象:

$cpu = Invoke-Command -Session $session -ScriptBlock { Get-CimInstance -ClassName Win32_Processor }

在本地计算机上,您可以执行以下操作:

Write-Host $cpu.Processor.LoadPercentage

例如转储CPU负载。

您还可以使用Get-Counter来读取Windows性能计数器值。根据您的目标Windows版本,您可能需要enable Powershell远程处理。

希望有所帮助。

答案 1 :(得分:0)

Get-VM | Where {$_.PowerState -eq "PoweredOn"} | Select Name, Host, NumCpu, 

MemoryMB, `
@{N="CPU Usage (Average), Mhz" ; E={[Math]::Round((($_ | Get-Stat -Stat cpu.usagemhz.average -Start (Get-Date).AddDays(-1) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}}, `
@{N="Memory Usage (Average), %" ; E={[Math]::Round((($_ | Get-Stat -Stat mem.usage.average -Start (Get-Date).AddDays(-1) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , `
@{N="Network Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat net.usage.average -Start (Get-Date).AddDays(-1) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , `
@{N="Disk Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat disk.usage.average -Start (Get-Date).AddDays(-1) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} |`
Export-Csv -Path C:AverageUsage.csv