<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Script to relate Hyper-V VHDs on Cluster Volumes to their respective LUNs in Microsoft Virtualization Discussions</title>
    <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12516#M639</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for posting!&amp;nbsp; "preposterously easy" is the goal.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Aug 2011 16:59:12 GMT</pubDate>
    <dc:creator>cknight</dc:creator>
    <dc:date>2011-08-04T16:59:12Z</dc:date>
    <item>
      <title>Script to relate Hyper-V VHDs on Cluster Volumes to their respective LUNs</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12506#M637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was asked to produce a report that showed what VHDs were in use, what Cluster Volume they are on and, subsequently, what LUN it is.&amp;nbsp; Thanks to Get-NaHyperV that was preposterously easy.&amp;nbsp; I thought others might benefit from this script so here it is.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You'll need to change the values of $adminID and $pass for your filers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;File is also attached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$VMs=get-nahyperv |select name,storage&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$adminID = "CHANGE_ME"&lt;/P&gt;&lt;P&gt;$pass = ConvertTo-SecureString "CHANGE_ME" -AsPlainText -Force&lt;/P&gt;&lt;P&gt;$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminID,$pass&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$objstorageinfo =@()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;foreach ($VM in $VMs){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$storageinfo=$VM.storage|Select *&lt;/P&gt;&lt;P&gt;foreach ($storageprop in $storageinfo){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If (Test-Path $storageprop.VmDiskResourceName){&lt;/P&gt;&lt;P&gt;$VHDSize&amp;nbsp;&amp;nbsp; = gi $storageprop.VmDiskResourceName |select @{Name="SizeInGB";Expression={[Math]::Round($_.Length/1GB)}}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$conn=Connect-naController $storageprop.ControllerName -credential $cred&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$csv = Get-ClusterSharedVolume $storageprop.ClusterResource&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$objcsvSizeInfo =$csv | select -Expand SharedVolumeInfo|select -expand partition&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$LUN=Get-NalUN $storageprop.ControllerLunPath|select @{Name="SizeInGB";Expression={[Math]::Round($_.Size/1GB)}},@{Name="UsedSizeInGB";Expression={[Math]::Round($_.SizeUsed/1GB)}}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$lunID = (get-nalunmap $storageprop.ControllerLunPath).lunid&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$Vol=Get-NalUN $storageprop.ControllerLunPath|Get-Navol |select name,ContainingAggregate,@{Name="SizeInGB";Expression={[Math]::Round($_.SizeTotal/1GB)}},`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @{Name="UsedSizeInGB";Expression={[Math]::Round($_.SizeUsed/1GB)}},`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @{Name="FreeSizeInGB";Expression={[Math]::Round($_.SizeAvailable/1GB)}}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$Aggr = Get-NaAGGr $VOL.ContainingAggregate|select name,@{Name="SizeInGB";Expression={[Math]::Round($_.SizeTotal/1GB)}},`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @{Name="UsedSizeInGB";Expression={[Math]::Round($_.SizeUsed/1GB)}},`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @{Name="FreeSizeInGB";Expression={[Math]::Round($_.SizeAvailable/1GB)}}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $myobj = New-Object PSObject -Property @{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VMName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $VM.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VHDPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.VmDiskResourceName&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VHDSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $VHDSize.SizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSVName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.ClusterResource&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSVPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.HostDrivePath&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSVSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = [Math]::Round($storageprop.size/1GB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSVFreeSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = [Math]::Round($objcsvSizeInfo.Freespace/1GB)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HostDisk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.HostDiskName&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LUNPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.ControllerLunPath&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LUNID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $lunID&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LUNSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $LUN.SizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LUNSizeUsed&amp;nbsp;&amp;nbsp;&amp;nbsp; = $LUN.UsedSizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VolName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Vol.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VolSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Vol.SizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VolUsedSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Vol.UsedSizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VolFreeSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Vol.FreeSizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AggrName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Aggr.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AggrSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $Aggr.SizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AggrUsedSize&amp;nbsp;&amp;nbsp; = $Aggr.UsedSizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AggrFreeSize&amp;nbsp;&amp;nbsp; = $Aggr.FreeSizeInGB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SANName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $storageprop.ControllerName&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }|select VMName,VHDPath,CSVName,CSVPath,CSVSize,CSVFreeSize,@{Label="CSVUsedSize";Expression = {$_.CSVSize-$_.CSVFreeSize}},HostDisk,`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LUNPath,LUNID,LUNSize,LUNSizeUsed,@{Label="LUNSizeFree";Expression = {$_.LunSize-$_.LunSizeUsed}},`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VolName,VolSize,VolUsedSize,VolFreeSize,`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AggrName,AggrSize,AggrUsedSize,AggrFreeSize,SANName&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $objstorageinfo += $myobj&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;$objstorageinfo|export-csv .\NetAPP-VHD.csv -notypeinformation&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Jun 2025 06:48:46 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12506#M637</guid>
      <dc:creator>ginolard2010</dc:creator>
      <dc:date>2025-06-05T06:48:46Z</dc:date>
    </item>
    <item>
      <title>Script to relate Hyper-V VHDs on Cluster Volumes to their respective LUNs</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12511#M638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's a great use of the Cmdlets!&amp;nbsp; It's cool to see all of the host side info &amp;amp; filer info joined together in one view from the VHD up to the aggregate. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Aug 2011 16:10:06 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12511#M638</guid>
      <dc:creator>timothyn</dc:creator>
      <dc:date>2011-08-04T16:10:06Z</dc:date>
    </item>
    <item>
      <title>Script to relate Hyper-V VHDs on Cluster Volumes to their respective LUNs</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12516#M639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for posting!&amp;nbsp; "preposterously easy" is the goal.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Aug 2011 16:59:12 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Script-to-relate-Hyper-V-VHDs-on-Cluster-Volumes-to-their-respective-LUNs/m-p/12516#M639</guid>
      <dc:creator>cknight</dc:creator>
      <dc:date>2011-08-04T16:59:12Z</dc:date>
    </item>
  </channel>
</rss>

