列出所有VM的VMDK文件以及所在的Datastore目录位置
当企业的VM环境运营一段时间后,管理员可能会发现Datastore里面的vmdk文件跟VM的名字对不上号。因为重命名VM之后,VMDK文件并不会随之重命名。另外vCenter还有个功能叫Remove From Inventory,这个功能并不会把VM从Datastore里面删除,只是把VM从列表里删除。所以如果有新手误用到这个功能当作删除,Datastore里面也会有越来越多的不知道是不是应该删除的文件。
这篇博文http://briangordon.wordpress.com/2010/09/01/powershell-list-vm-name-hard-drive-name-and-datastore-name/ 针对上面的问题提出了解决方法。经过测试可以得到想要的结果。但是因为PoweShell输出的默认字数有限制,我把代码输出部分优化了一下,如下
$VMs= Get-vm foreach($vm in $VMs){ $ds=Get-HardDisk -VM $vm | Select-Object name,filename $vm.Name, $ds | Format-Table -Wrap -AutoSize | Out-File -Append -FilePath "C:\VM-HardDisk-List.txt" }
输出结果示例如下
ContentS Cluster3_112
Name Filename
---- --------
Hard disk 1 [Datastore- Storage] ContentS Cluster3/ContentS Cluster3.vmdk
Hard disk 2 [Datastore- Storage] ContentS Cluster3/ContentS Cluster3_1.vmdk
Hard disk 3 [Datastore- Storage] ContentS Cluster3/ContentS Cluster3_112.vmdk
最上面那个是VM的名称。