我正在尝试获取包含群集中所有虚拟机的预配磁盘大小的html报告。我正在尝试使用以下内容列出群集中的所有虚拟机:
$VMs = get-ClusterGroup | ? {$_.GroupType -eq "VirtualMachine" } | Get-VM
这就像一个魔咒。但是当我试着做一个循环时:
foreach ($VM in $VMs)
{
Get-VM -VMName $VM.Name | Select-Object VMId | Get-VHD
}
当我运行这个命令时,我得到了每个不在我当前群集节点上的VM的错误。因此,对于每个节点,我运行以下命令:
Get-VM -VMName * | Select-Object VMId | Get-VHD | ConvertTo-HTML -Proprerty path,computername,vhdtype,@{label='Size(GB)');expression={$_.filesize/1gb -as [int]}} > report.html
这也像一个魅力工作。但这是需要登录到集群中的每一个Hyper-V主机。如何使它发生的HTML输出与集群中的所有虚拟机从一个节点?
1条答案
按热度按时间brgchamk1#
像这样的怎么样?
据我所知对于每个Get-VHD调用,您需要
-ComputerName
和-VMId
这样的节点名称。由于某种原因,将Get-VM传递给Get-VHD不会提供节点名称。你要找的是,上面的代码并没有把结果作为一个单独的对象来格式化(html或其他格式),但是有一个内联的
ForEach-Object
可以做到这一点。这也许是你正在寻找的:
在一行中:
希望这能满足你的需求,好好享受吧!