Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function Get-VMReport {
- [cmdletbinding()]
- param(
- [parameter(Position=0)]
- [String]
- $VMname,
- [parameter(Position=1)]
- [String]
- $VIServerName = "<DefaultVIServerName>"
- )
- If(!$global:DefaultVIServer){
- Connect-VIServer $VIServerName
- }
- If($global:DefaultVIServer.Name -notlike $VIServerName){
- Disconnect-VIServer -Server $global:DefaultVIServer
- Connect-VIServer $VIServerName
- }
- If($VMname){
- $VMList = Get-VM -Name $VMname
- }
- Else{$VMList = Get-VM}
- $vmarray = New-Object -TypeName System.Collections.ArrayList
- ForEach($VM in $VMList){
- $disks = $VM | Get-HardDisk
- ForEach($disk in $disks){
- $guestdisk = $null
- ForEach($guest in $VM.Guest.Disks){
- If([math]::Abs(($disk.CapacityGB - $guest.CapacityGB)) -lt 2){
- $guestdisk = $guest
- }
- }
- $temp = [pscustomobject] @{'Host' = $VM.VMHost.Name.Split('.')[0]
- 'Name' = $VM.Name
- 'vCPUs' = $VM.NumCpu
- 'Memory' = $VM.MemoryGB
- 'OS Disk Name' = $guestdisk.Path
- 'Disk Lun' = $disk.Filename.Split(' ')[0]
- 'Disk Size (GB)' = $disk.CapacityGB
- 'Free Space (GB)' = [math]::Round($guestdisk.FreeSpaceGB,2)
- 'Disk File' = $disk.Filename.Split(' ')[1]}
- $vmarray.Add($temp) | Out-Null
- Write-Progress -Activity "Processing VMs..." -Status "Objects processed: $($vmarray.Count)"
- }
- }
- $vmarray | Sort-Object Host, Name | Out-GridView -Title "Host/VM Distribution" -OutputMode None
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement