Microsoft Virtualization Discussions
Microsoft Virtualization Discussions
My boss wanted information about the total capacity of each of our volumes(So including snapshot reserve) along with used space and available. I was going to use get-navol but i noticed this only gives the usable space of the volume not the true total. So i hacked together this script using both get-navol and get-navolsize cmd-let to get what i needed. This is my second script i have ever wrote in PowerShell so i am sure i did a several things wrong but i was able to get the results i wanted. It just seems like it should have been less work and a better way of doing this.
VolumeName,VolumeAvailableSpace,VolumeUsedSpace,VolumeTotalsize
param([string]$paNetAppHost, [string]$pausername)
Import-module DataOnTap
$PathtoCSV = "C:\NetappTotalVolume.csv"
#Connect to filer
Connect-NAController $paNetAppHost–cred $pausername
$allvolumesnames = get-navol | Select-Object Name,Available
#set headers of CSV file
"VolumeName,Available Space(GB),Used Space(GB),Total Volume Space(GB)" > $PathtoCSV
foreach ($netapp_vol in $allvolumesnames) {
$CurrentVolname = $netapp_vol.name
$VolumesAvailable = $netapp_vol.available
$VolumeSizeTotal = get-navolsize -name $CurrentVolname | Select-Object -ExpandProperty VolumeSize
#Convert to GB
$VolumeAvailable1GB = ($VolumesAvailable / 1GB)
$VolumeSizeTotal1GB = ($VolumeSizeTotal / 1GB)
#Calc usedspace
$VolumeUsedSpace1GB = $VolumeSizeTotal1GB - $VolumeAvailable1GB
#Create/add to CSV file
$Combine = $CurrentVolname,$VolumeAvailable1GB,$VolumeUsedSpace1GB,$VolumeSizeTotal1GB
$Combine -join "," >> $PathtoCSV
}
Solved! See The Solution
Hi Tony,
Can you try running this command and check if it serves your purpose? Just Copy Paste the entire snippet below to your powershell console.
Get-NaVol | Select @{Name="VolumeName";Expression={$_.name}},@{Name="TotalSize(GB)";Expression={[math]::Round([decimal]$_.SizeTotal/1gb,2)}}`
,@{Name="AvailableSize(GB)";Expression={[math]::Round([decimal]$_.SizeAvailable/1gb,2)}}`
,@{Name="UsedSize(GB)";Expression={[math]::Round([decimal]$_.SizeUsed/1gb,2)}}`
,@{Name="SnapshotBlocksReserved(GB)";Expression={[math]::Round([decimal]$_.SnapshotBlocksReserved/1gb,2)}}`
,SnapshotPercentReserved
You can also affix an | Export-CSV to this cnippet to export it to a csv file.
Hi Tony,
Can you try running this command and check if it serves your purpose? Just Copy Paste the entire snippet below to your powershell console.
Get-NaVol | Select @{Name="VolumeName";Expression={$_.name}},@{Name="TotalSize(GB)";Expression={[math]::Round([decimal]$_.SizeTotal/1gb,2)}}`
,@{Name="AvailableSize(GB)";Expression={[math]::Round([decimal]$_.SizeAvailable/1gb,2)}}`
,@{Name="UsedSize(GB)";Expression={[math]::Round([decimal]$_.SizeUsed/1gb,2)}}`
,@{Name="SnapshotBlocksReserved(GB)";Expression={[math]::Round([decimal]$_.SnapshotBlocksReserved/1gb,2)}}`
,SnapshotPercentReserved
You can also affix an | Export-CSV to this cnippet to export it to a csv file.
It looks like i can take SnapshotPercentReserved and use that to calculate what I was looking for without having to use get-navolsize
Thank you
To get the value i wanted without using get-navolsize i added this to my script
$VolumeSizeTotal = [math]::Round([decimal]((($netapp_vol.snapshotpercentreserved * 100) * $netapp_vol.TotalSize) + $netapp_vol.TotalSize)/1gb,2)
ill have to start using hashtables on my next script
Is there a way to get the value for Snapshot copies space used?
show-nahelp
When the explorer pops up select the cmdlets at the top of the page. There are a few commands for getting detailed snapshot information. Get-nasnapshotvolumespace may be the one you are looking for.
This gives me the total snapshot space available, I need to get the snapshot space used ?