使用PowerShell获取VHD信息

时间:2014-02-14 13:01:43

标签: powershell powershell-v4.0

你能用我的Powershell脚本帮我吗?我是Powershell的新手,但我的老板希望我尽快完成。

对于HyperVisor(Server 2012)上的每个VM,我们需要关联的VHD文件和每个VHD文件:
- 文件的位置
- 文件大小(允许的最大值)
- 文件的实际大小(当前分配的)
- 分配类型:厚或薄
- 快照文件的位置
- 快照文件的大小

到目前为止,我已经想出了这个(好吧......我发现了)( * 是我们的HV名字):

Get-VM –ComputerName ***** | 
Get-VMHardDiskDrive | 
Select-Object -Property VMName, ComputerName, Path, Filesize, Size, Disktype, Snapshot | 
Sort-Object -Property VMName 

不知何故,这不会为Filesize,disktype,size和Snapshot ..

提供任何输出

2 个答案:

答案 0 :(得分:1)

加载HyperV模块。运行“'Get-VM”以查看是否已加载。然后运行这样的事情:

Get-VM –ComputerName SERVER1, SERVER2 |
Get-VMHardDiskDrive |
Select-Object -Property VMName, VMId, ComputerName, ControllerType, ControllerNumber, ControllerLocation, Path |
Sort-Object -Property VMName |
Out-GridView -Title "Virtual Disks"

答案 1 :(得分:0)

问题已经过时了,但也许有人对此感兴趣。

警告:不考虑快照

$VMget=Get-VM -computername w01s007,w01s006,w01s008 | Get-VMHardDiskDrive | Select-Object -Property vmname, vmid, computername, controllertype, controllernumber,controllerlocation,path
 foreach ($VM in $VMget) {
    $VHDRemotePath=$VM.Path  -replace ":", "$"
    $VHDRemotePath="\\"+$VM.ComputerName+"\"+$VHDRemotePath
    $vhdsize=  gci $VHDRemotePath | select-object @{Name="SizeGB";Expression={"{0:N2}" -f ($_.length / 1GB)}}
    write-host = $VM.VMName " - " $vhdsize.SizeGB "GB - " $VM.Path
}