我正在尝试在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
答案 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
来获取字符串而不会出现并发症。