2014-02-14 59 views
0

您可以帮我使用我的Powershell脚本吗?我对Powershell相当陌生,但是我的老板想让我尽快完成这个任务。使用PowerShell获取VHD信息

对于每个虚拟机在我们的虚拟机管理程序(Server 2012中),我们希望相关的VHD文件,并为每个VHD文件:
- 文件(允许的上限)
的大小 - - 文件
的位置该文件(当前分配)
的实际大小 - 该类型的分配:厚或薄
- 快照文件

我想出了这个迄今为止的大小 - 快照文件
的位置(以及我发现的)(*是我们的HV名):

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

不知怎的,这并不给出文件大小,disktype,大小和快照的任何输出..

回答

1

负载的Hyper-V模块。运行“'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”

+0

这工作,但它不给我的尺寸。添加大小和文件大小使我可以在外出Gidview中使用这些名称,但它没有填写。 – user3310263

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 
}