VMWare vSphere Powercli Get-Stat在某些主机上不起作用

时间:2015-06-23 14:58:38

标签: powershell powercli esx

我正在尝试在VMWare主机上进行一些容量规划,并希望为每个主机提取cpu /内存统计信息。

我可以运行如下命令:

PowerCLI C:\> Get-VMHost -Name "192.168.1.14" |Get-Stat -Stat mem.usage.average -Start (Get-Date).AddDays(-1) -Finish (Get-Date)

并显示统计数据。

然后我选择了另一个主机,例如192.168.1.15但它不起作用,以此错误结束:

Get-Stat : 2015-06-23 10:56:45    Get-Stat        Object reference not set to an instance of an object.
At line:1 char:42
+ Get-VMHost -Name "192.168.1.15" |Get-Stat <<<<  -Stat mem.usage.average -Start (Get-Date).AddDays(-1) -Finish (Get-Date)
    + CategoryInfo          : NotSpecified: (:) [Get-Stat], VimException
    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetViStats

命令Get-VMHost -Name "192.168.1.15"有效。

有什么想法吗?

PowerCli 5.0.1
VMWare ESX 5.0 Update 3
vCenter 5.0.0 Build 1300600

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是将Date对象传递给cmdlet Get-Stat。从错误看,它似乎将日期视为一个对象?根据支持-Start-Finish输入的documentation为“dd / mm / yyyy”。

试试这个

Get-Stat -Stat mem.usage.average -Start ((Get-Date).AddDays(-1)).ToString("dd/MM/yyyy") -Finish (Get-Date -Format "dd/mm/yyyy")

对于-Start,我们需要在转换为字符串之前进行日期计算.ToString("dd/MM/yyyy")是一种方法。由于您今天使用的是-Finish,我们可以使用-Format中的Get-Date来获取字符串而不会出现并发症。