[{"data":1,"prerenderedAt":3696},["ShallowReactive",2],{"post:\u002F2014\u002F01\u002F21\u002Fpowershell-gather-netapp-snapshot-details\u002F":3},{"post":4,"newer":3654,"older":3664,"related":3675,"series":3694},{"id":5,"title":6,"body":7,"canonical":3631,"categories":3632,"date":3636,"description":3637,"extension":3638,"featured":3639,"hero":3640,"image":3640,"meta":3641,"navigation":577,"path":3642,"readingTime":159,"seo":3643,"series":3640,"seriesOrder":3640,"sites":3644,"source":3646,"stem":3647,"tags":3648,"updated":3651,"url":3652,"__hash__":3653},"blog\u002Fblog\u002F2014\u002F01\u002F21\u002Fpowershell-gather-netapp-snapshot-details.md","PowerShell: NetApp – Gather Snapshot Details",{"type":8,"value":9,"toc":3621},"minimark",[10,14,17,22,43,47,139,143,146,195,198,210,218,222,227,2420,2424,2427,3568,3572,3617],[11,12,13],"p",{},"Gathering snapshot statistics is a tedious task when looking at autosupports and cli output. I needed to gather information about oldest snapshot, average number of snaps per day, total snapshots, and other various information.",[11,15,16],{},"This PowerShell script uses the Data ONTAP PowerShell Toolkit to collect that information for every online volume on each 7-Mode controller and writes a summary CSV and a detail CSV.",[18,19,21],"h2",{"id":20},"requirements","Requirements",[23,24,25,34,37,40],"ul",{},[26,27,28,29,33],"li",{},"Data ONTAP PowerShell Toolkit 1.2 or higher (the ",[30,31,32],"code",{},"DataONTAP"," module)",[26,35,36],{},"NetApp 7-Mode controllers reachable over HTTPS",[26,38,39],{},"An account that can list volumes and snapshots on each controller",[26,41,42],{},"Write access to the folder the script runs from (the CSV files are saved next to the script)",[18,44,46],{"id":45},"parameters","Parameters",[48,49,50,69],"table",{},[51,52,53],"thead",{},[54,55,56,60,63,66],"tr",{},[57,58,59],"th",{},"Name",[57,61,62],{},"Type",[57,64,65],{},"Required",[57,67,68],{},"Description",[70,71,72,89,108,123],"tbody",{},[54,73,74,80,83,86],{},[75,76,77],"td",{},[30,78,79],{},"nodes",[75,81,82],{},"Array",[75,84,85],{},"Yes",[75,87,88],{},"Controllers to query (host names or IPs). If omitted, PowerShell prompts for one per line; press Enter on an empty line to continue.",[54,90,91,96,99,101],{},[75,92,93],{},[30,94,95],{},"username",[75,97,98],{},"String",[75,100,85],{},[75,102,103,104,107],{},"Account used to connect, for example ",[30,105,106],{},"domain\\username",".",[54,109,110,115,118,120],{},[75,111,112],{},[30,113,114],{},"password",[75,116,117],{},"SecureString",[75,119,85],{},[75,121,122],{},"Password for the account. Prompted for if omitted.",[54,124,125,130,133,136],{},[75,126,127],{},[30,128,129],{},"IsVerbose",[75,131,132],{},"Switch",[75,134,135],{},"No",[75,137,138],{},"Also prints a detail table of every snapshot per volume.",[18,140,142],{"id":141},"usage","Usage",[11,144,145],{},"Pass the controllers and account on the command line. The password is prompted for:",[147,148,153],"pre",{"className":149,"code":150,"language":151,"meta":152,"style":152},"language-powershell shiki shiki-themes github-dark","& '.\\NetApp-Gather Snapshot Information v1.1.ps1' -nodes filer1.company.biz,filer2.company.biz -username \"domain\\username\" -IsVerbose\n","powershell","",[30,154,155],{"__ignoreMap":152},[156,157,160,164,168,171,175,178,181,184,187,190,192],"span",{"class":158,"line":159},"line",1,[156,161,163],{"class":162},"snl16","&",[156,165,167],{"class":166},"sU2Wk"," '.\\NetApp-Gather Snapshot Information v1.1.ps1'",[156,169,170],{"class":162}," -",[156,172,174],{"class":173},"s95oV","nodes filer1.company.biz",[156,176,177],{"class":162},",",[156,179,180],{"class":173},"filer2.company.biz ",[156,182,183],{"class":162},"-",[156,185,186],{"class":173},"username ",[156,188,189],{"class":166},"\"domain\\username\"",[156,191,170],{"class":162},[156,193,194],{"class":173},"IsVerbose\n",[11,196,197],{},"Or run it with no parameters and answer the prompts:",[147,199,201],{"className":149,"code":200,"language":151,"meta":152,"style":152},"& '.\\NetApp-Gather Snapshot Information v1.1.ps1'\n",[30,202,203],{"__ignoreMap":152},[156,204,205,207],{"class":158,"line":159},[156,206,163],{"class":162},[156,208,209],{"class":166}," '.\\NetApp-Gather Snapshot Information v1.1.ps1'\n",[147,211,216],{"className":212,"code":214,"language":215,"meta":152},[213],"language-text","cmdlet NetApp-Gather Snapshot Information v1.1.ps1 at command pipeline position 1\nSupply values for the following parameters:\nnodes[0]: filer1.company.biz\nnodes[1]: filer2.company.biz\nnodes[2]:\nusername: domain\\username\npassword: *************\n","text",[30,217,214],{"__ignoreMap":152},[18,219,221],{"id":220},"script","Script",[223,224,226],"h3",{"id":225},"original-v11","Original (v1.1)",[147,228,230],{"className":149,"code":229,"language":151,"meta":152,"style":152},"\u003C#\n.SYNOPSIS\n    NetApp-Gather Snapshot Information\n.DESCRIPTION\n    Collects snapshot information, summary and detail, for every online volume\n    on each 7-Mode controller, including created time, total snapshots, total\n    days, average per day and oldest snapshot. Saves a Summary and a Detail CSV\n    next to the script.\n.PARAMETER nodes\n    Controllers to query, one per entry.\n.PARAMETER username\n    Account used to connect, for example domain\\username.\n.PARAMETER password\n    Password for the account, as a SecureString.\n.PARAMETER IsVerbose\n    Display snapshot detail for each volume.\n.EXAMPLE\n    & '.\\NetApp-Gather Snapshot Information v1.1.ps1' -nodes filer1.company.biz,filer2.company.biz -username \"domain\\username\" -IsVerbose\n.EXAMPLE\n    & '.\\NetApp-Gather Snapshot Information v1.1.ps1'\n.NOTES\n    Author  : Thomas Lasswell (https:\u002F\u002Fwww.techcolumnist.com)\n    Version : 1.2 (2026-09-20)\n    Requires: Data ONTAP PowerShell Toolkit 1.2 or higher\n    History : 1.0 2014-01-17 Initial version.\n              1.1 2014-01-21 Added CSV export, days old column fixed.\n              1.2 2026-09-20 Fixed the timestamp in the CSV file names (it used minutes\n                  where the month belongs).\n#>\n# Parameters: nodes is each node; when finished, press Enter and it will continue.\nparam(\n    [Parameter(Mandatory = $true)]\n    [Array]$nodes,\n    [Parameter(Mandatory = $true)]\n    [String]$username,\n    [Parameter(Mandatory = $true, ParameterSetName = 'Secret')]\n    [Security.SecureString]$password,\n    [switch]$IsVerbose\n)\n\n# Create output file names\n$exedir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent\n$currentDate = (Get-Date -Format yyyyMMdd.HHmmss)\n$outsummary = ($exedir + \"\\\" + \"GatherSnapshotInformation_\" + $currentDate + \"_Summary.csv\")\n$outdetails = ($exedir + \"\\\" + \"GatherSnapshotInformation_\" + $currentDate + \"_Detail.csv\")\n\n# Load the ONTAP PowerShell Toolkit\n$module = Get-Module DataONTAP\nif ($module -eq $null) {\n    Import-Module DataONTAP\n}\n\ntry {\n    $requiredVersion = New-Object System.Version(1.2)\n    if ((Get-NaToolkitVersion).CompareTo($requiredVersion) -lt 0) { throw }\n} catch [Exception] {\n    Write-Host \"`nThis script requires Data ONTAP PowerShell Toolkit 1.2 or higher`n\" -ForegroundColor Red\n    return\n}\n$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password\n\n# Calculate the difference between two dates\nfunction Get-DateDiff {\n    param (\n        [CmdletBinding()]\n        [parameter(Mandatory = $true)]\n        [datetime]$date1,\n        [parameter(Mandatory = $true)]\n        [datetime]$date2\n    )\n    if ($date2 -gt $date1) {\n        $diff = $date2 - $date1\n    } else {\n        $diff = $date1 - $date2\n    }\n    $diff\n}\n\n# Declare object arrays\n$objDetail = @()\n$objSummary = @()\n\n# Connect to each node individually\nforeach ($node in $nodes) {\n    Write-Host \"connecting to node $node...\"\n    $conn = Connect-NaController -Name $node -HTTPS -Credential $cred\n\n    if ($conn -ne $null) {\n        Write-Host \"node connected, continuing on to snapshot calculations...\"\n        Write-Host \"gathering node volumes...\"\n        $vols = Get-NaVol | Where-Object { $_.state -eq \"online\" -and $_.raidstatus -notmatch \"read-only\" }\n        if ($vols -ne $null) {\n            foreach ($vol in $vols) {\n                Write-Host \"gathering snapshots for volume $vol...\"\n                # Get snapshots\n                $snaps = Get-NaSnapshot -TargetName $vol\n\n                # Group to count snapshots per day\n                $snapsdatecount = $snaps | Group-Object { ((Get-Date) - $_.Created).Days } -NoElement | Sort-Object Name -Descending\n                # Measure to get count and average; the average is snapshots per day\n                $totalavgdays = $snapsdatecount | Measure-Object Count -Average | Select-Object Count, Average\n                $avgdays = $totalavgdays.Average\n                $totaldays = $totalavgdays.Count\n\n                # Sum snapshots for total snapshot consumption\n                $totalsize = $snaps | Measure-Object Total -Sum | Select-Object Count, Sum\n                $ftotalsize = ConvertTo-FormattedNumber $totalsize.sum DataSize \"0.0\"\n\n                # Get oldest snapshot\n                $foldestsnap = $snaps | Sort-Object Created -Descending | Select-Object -Last 1\n\n                # Build array for summary\n                if ($avgdays -ne $null) {\n                    $summaryprop = @{\n                        'Node'       = $node\n                        'Volume'     = $vol\n                        'TotalSnaps' = $snaps.length\n                        'TotalDays'  = $totaldays\n                        'AvgPerDay'  = $avgdays\n                        'TotalSize'  = $ftotalsize\n                        'Oldest'     = $foldestsnap.created\n                    }\n                    $objectS = New-Object -TypeName PSObject -Property $summaryprop\n                    $objSummary += $objectS\n                    $objectS\n\n                    foreach ($snap in $snaps) {\n                        $daysold = Get-DateDiff (Get-Date) $snap.created\n                        $ftotal = ConvertTo-FormattedNumber $snap.total DataSize \"0.0\"\n                        $fcumulative = ConvertTo-FormattedNumber $snap.CumulativeTotal DataSize \"0.0\"\n\n                        # Build array for details\n                        $detailprop = @{\n                            'Node'            = $node\n                            'Volume'          = $vol\n                            'Name'            = $snap.name\n                            'Created'         = $snap.created\n                            'DaysOld'         = $daysold.days\n                            'TotalSize'       = $ftotal\n                            'CumulativeTotal' = $fcumulative\n                        }\n                        $objectD = New-Object -TypeName PSObject -Property $detailprop\n                        $objDetail += $objectD\n                    }\n                    if ($IsVerbose) {\n                        $snaps | Format-Table `\n                            @{Expression = {$node}; Label = \"Node name\"; Width = 20},`\n                            @{Expression = {$vol}; Label = \"Volume\"; Width = 40},`\n                            @{Expression = {$_.Name}; Label = \"Name\"; Width = 150},`\n                            @{Expression = {$_.Created.ToShortDateString()}; Label = \"Created\"; Width = 12},`\n                            @{Expression = {'{0} Days' -f (Get-DateDiff (Get-Date) $_.created).days}; Label = \"Days Old\"; Width = 20},`\n                            @{Expression = {ConvertTo-FormattedNumber $_.Total DataSize \"0.0\"}; Label = \"Total\"; Width = 15},`\n                            @{Expression = {ConvertTo-FormattedNumber $_.CumulativeTotal DataSize \"0.0\"}; Label = \"Cumulative\"; Width = 10} -AutoSize `\n                            | Out-String -Width 1000 | Write-Host\n                    }\n                }\n                if ($avgdays -eq $null) { Write-Host \"`tNo Snapshots Exist on $vol...\" }\n            }\n        }\n    }\n}\n\n# Save files\n$objSummary | Select-Object Node, Volume, TotalSnaps, TotalDays, AvgPerDay, TotalSize, Oldest | Export-Csv -Path $outsummary -NoTypeInformation\n$objDetail | Select-Object Node, Volume, Name, Created, DaysOld, TotalSize, CumulativeTotal | Export-Csv -Path $outdetails -NoTypeInformation\n",[30,231,232,238,247,253,261,267,273,279,285,296,302,312,318,328,334,344,350,358,364,371,377,385,391,397,403,409,415,421,427,433,439,448,473,486,503,515,542,555,566,572,579,585,613,632,667,696,701,707,721,739,747,753,758,767,786,816,834,859,865,870,895,900,906,918,927,939,957,970,987,997,1003,1017,1033,1044,1059,1065,1071,1076,1081,1087,1101,1113,1118,1124,1139,1153,1179,1184,1199,1208,1216,1264,1279,1293,1307,1313,1329,1334,1340,1390,1396,1433,1444,1455,1460,1466,1499,1516,1521,1527,1561,1566,1572,1587,1600,1612,1624,1635,1647,1658,1669,1680,1686,1706,1718,1724,1729,1743,1760,1775,1790,1795,1801,1813,1824,1835,1846,1858,1869,1880,1891,1897,1916,1927,1932,1941,1955,1988,2016,2049,2081,2129,2170,2214,2236,2241,2247,2278,2284,2290,2295,2300,2305,2311,2368],{"__ignoreMap":152},[156,233,234],{"class":158,"line":159},[156,235,237],{"class":236},"sAwPA","\u003C#\n",[156,239,241,244],{"class":158,"line":240},2,[156,242,107],{"class":243},"sDLfK",[156,245,246],{"class":162},"SYNOPSIS\n",[156,248,250],{"class":158,"line":249},3,[156,251,252],{"class":236},"    NetApp-Gather Snapshot Information\n",[156,254,256,258],{"class":158,"line":255},4,[156,257,107],{"class":243},[156,259,260],{"class":162},"DESCRIPTION\n",[156,262,264],{"class":158,"line":263},5,[156,265,266],{"class":236},"    Collects snapshot information, summary and detail, for every online volume\n",[156,268,270],{"class":158,"line":269},6,[156,271,272],{"class":236},"    on each 7-Mode controller, including created time, total snapshots, total\n",[156,274,276],{"class":158,"line":275},7,[156,277,278],{"class":236},"    days, average per day and oldest snapshot. Saves a Summary and a Detail CSV\n",[156,280,282],{"class":158,"line":281},8,[156,283,284],{"class":236},"    next to the script.\n",[156,286,288,290,293],{"class":158,"line":287},9,[156,289,107],{"class":243},[156,291,292],{"class":162},"PARAMETER",[156,294,295],{"class":162}," nodes\n",[156,297,299],{"class":158,"line":298},10,[156,300,301],{"class":236},"    Controllers to query, one per entry.\n",[156,303,305,307,309],{"class":158,"line":304},11,[156,306,107],{"class":243},[156,308,292],{"class":162},[156,310,311],{"class":162}," username\n",[156,313,315],{"class":158,"line":314},12,[156,316,317],{"class":236},"    Account used to connect, for example domain\\username.\n",[156,319,321,323,325],{"class":158,"line":320},13,[156,322,107],{"class":243},[156,324,292],{"class":162},[156,326,327],{"class":162}," password\n",[156,329,331],{"class":158,"line":330},14,[156,332,333],{"class":236},"    Password for the account, as a SecureString.\n",[156,335,337,339,341],{"class":158,"line":336},15,[156,338,107],{"class":243},[156,340,292],{"class":162},[156,342,343],{"class":162}," IsVerbose\n",[156,345,347],{"class":158,"line":346},16,[156,348,349],{"class":236},"    Display snapshot detail for each volume.\n",[156,351,353,355],{"class":158,"line":352},17,[156,354,107],{"class":243},[156,356,357],{"class":162},"EXAMPLE\n",[156,359,361],{"class":158,"line":360},18,[156,362,363],{"class":236},"    & '.\\NetApp-Gather Snapshot Information v1.1.ps1' -nodes filer1.company.biz,filer2.company.biz -username \"domain\\username\" -IsVerbose\n",[156,365,367,369],{"class":158,"line":366},19,[156,368,107],{"class":243},[156,370,357],{"class":162},[156,372,374],{"class":158,"line":373},20,[156,375,376],{"class":236},"    & '.\\NetApp-Gather Snapshot Information v1.1.ps1'\n",[156,378,380,382],{"class":158,"line":379},21,[156,381,107],{"class":243},[156,383,384],{"class":162},"NOTES\n",[156,386,388],{"class":158,"line":387},22,[156,389,390],{"class":236},"    Author  : Thomas Lasswell (https:\u002F\u002Fwww.techcolumnist.com)\n",[156,392,394],{"class":158,"line":393},23,[156,395,396],{"class":236},"    Version : 1.2 (2026-09-20)\n",[156,398,400],{"class":158,"line":399},24,[156,401,402],{"class":236},"    Requires: Data ONTAP PowerShell Toolkit 1.2 or higher\n",[156,404,406],{"class":158,"line":405},25,[156,407,408],{"class":236},"    History : 1.0 2014-01-17 Initial version.\n",[156,410,412],{"class":158,"line":411},26,[156,413,414],{"class":236},"              1.1 2014-01-21 Added CSV export, days old column fixed.\n",[156,416,418],{"class":158,"line":417},27,[156,419,420],{"class":236},"              1.2 2026-09-20 Fixed the timestamp in the CSV file names (it used minutes\n",[156,422,424],{"class":158,"line":423},28,[156,425,426],{"class":236},"                  where the month belongs).\n",[156,428,430],{"class":158,"line":429},29,[156,431,432],{"class":236},"#>\n",[156,434,436],{"class":158,"line":435},30,[156,437,438],{"class":236},"# Parameters: nodes is each node; when finished, press Enter and it will continue.\n",[156,440,442,445],{"class":158,"line":441},31,[156,443,444],{"class":162},"param",[156,446,447],{"class":173},"(\n",[156,449,451,454,457,460,464,467,470],{"class":158,"line":450},32,[156,452,453],{"class":173},"    [",[156,455,456],{"class":243},"Parameter",[156,458,459],{"class":173},"(",[156,461,463],{"class":462},"s9osk","Mandatory",[156,465,466],{"class":162}," =",[156,468,469],{"class":243}," $true",[156,471,472],{"class":173},")]\n",[156,474,476,478,480,483],{"class":158,"line":475},33,[156,477,453],{"class":173},[156,479,82],{"class":162},[156,481,482],{"class":173},"]$nodes",[156,484,485],{"class":162},",\n",[156,487,489,491,493,495,497,499,501],{"class":158,"line":488},34,[156,490,453],{"class":173},[156,492,456],{"class":243},[156,494,459],{"class":173},[156,496,463],{"class":462},[156,498,466],{"class":162},[156,500,469],{"class":243},[156,502,472],{"class":173},[156,504,506,508,510,513],{"class":158,"line":505},35,[156,507,453],{"class":173},[156,509,98],{"class":162},[156,511,512],{"class":173},"]$username",[156,514,485],{"class":162},[156,516,518,520,522,524,526,528,530,532,535,537,540],{"class":158,"line":517},36,[156,519,453],{"class":173},[156,521,456],{"class":243},[156,523,459],{"class":173},[156,525,463],{"class":462},[156,527,466],{"class":162},[156,529,469],{"class":243},[156,531,177],{"class":162},[156,533,534],{"class":462}," ParameterSetName",[156,536,466],{"class":162},[156,538,539],{"class":166}," 'Secret'",[156,541,472],{"class":173},[156,543,545,547,550,553],{"class":158,"line":544},37,[156,546,453],{"class":173},[156,548,549],{"class":162},"Security.SecureString",[156,551,552],{"class":173},"]$password",[156,554,485],{"class":162},[156,556,558,560,563],{"class":158,"line":557},38,[156,559,453],{"class":173},[156,561,562],{"class":162},"switch",[156,564,565],{"class":173},"]$IsVerbose\n",[156,567,569],{"class":158,"line":568},39,[156,570,571],{"class":173},")\n",[156,573,575],{"class":158,"line":574},40,[156,576,578],{"emptyLinePlaceholder":577},true,"\n",[156,580,582],{"class":158,"line":581},41,[156,583,584],{"class":236},"# Create output file names\n",[156,586,588,591,594,597,599,602,605,608,610],{"class":158,"line":587},42,[156,589,590],{"class":173},"$exedir ",[156,592,593],{"class":162},"=",[156,595,596],{"class":243}," Split-Path",[156,598,170],{"class":162},[156,600,601],{"class":173},"Path ",[156,603,604],{"class":243},"$MyInvocation",[156,606,607],{"class":173},".MyCommand.Definition ",[156,609,183],{"class":162},[156,611,612],{"class":173},"Parent\n",[156,614,616,619,621,624,627,629],{"class":158,"line":615},43,[156,617,618],{"class":173},"$currentDate ",[156,620,593],{"class":162},[156,622,623],{"class":173}," (",[156,625,626],{"class":243},"Get-Date",[156,628,170],{"class":162},[156,630,631],{"class":173},"Format yyyyMMdd.HHmmss)\n",[156,633,635,638,640,643,646,649,652,655,657,660,662,665],{"class":158,"line":634},44,[156,636,637],{"class":173},"$outsummary ",[156,639,593],{"class":162},[156,641,642],{"class":173}," ($exedir ",[156,644,645],{"class":162},"+",[156,647,648],{"class":166}," \"\\\"",[156,650,651],{"class":162}," +",[156,653,654],{"class":166}," \"GatherSnapshotInformation_\"",[156,656,651],{"class":162},[156,658,659],{"class":173}," $currentDate ",[156,661,645],{"class":162},[156,663,664],{"class":166}," \"_Summary.csv\"",[156,666,571],{"class":173},[156,668,670,673,675,677,679,681,683,685,687,689,691,694],{"class":158,"line":669},45,[156,671,672],{"class":173},"$outdetails ",[156,674,593],{"class":162},[156,676,642],{"class":173},[156,678,645],{"class":162},[156,680,648],{"class":166},[156,682,651],{"class":162},[156,684,654],{"class":166},[156,686,651],{"class":162},[156,688,659],{"class":173},[156,690,645],{"class":162},[156,692,693],{"class":166}," \"_Detail.csv\"",[156,695,571],{"class":173},[156,697,699],{"class":158,"line":698},46,[156,700,578],{"emptyLinePlaceholder":577},[156,702,704],{"class":158,"line":703},47,[156,705,706],{"class":236},"# Load the ONTAP PowerShell Toolkit\n",[156,708,710,713,715,718],{"class":158,"line":709},48,[156,711,712],{"class":173},"$module ",[156,714,593],{"class":162},[156,716,717],{"class":243}," Get-Module",[156,719,720],{"class":173}," DataONTAP\n",[156,722,724,727,730,733,736],{"class":158,"line":723},49,[156,725,726],{"class":162},"if",[156,728,729],{"class":173}," ($module ",[156,731,732],{"class":162},"-eq",[156,734,735],{"class":243}," $null",[156,737,738],{"class":173},") {\n",[156,740,742,745],{"class":158,"line":741},50,[156,743,744],{"class":243},"    Import-Module",[156,746,720],{"class":173},[156,748,750],{"class":158,"line":749},51,[156,751,752],{"class":173},"}\n",[156,754,756],{"class":158,"line":755},52,[156,757,578],{"emptyLinePlaceholder":577},[156,759,761,764],{"class":158,"line":760},53,[156,762,763],{"class":162},"try",[156,765,766],{"class":173}," {\n",[156,768,770,773,775,778,781,784],{"class":158,"line":769},54,[156,771,772],{"class":173},"    $requiredVersion ",[156,774,593],{"class":162},[156,776,777],{"class":243}," New-Object",[156,779,780],{"class":173}," System.Version(",[156,782,783],{"class":243},"1.2",[156,785,571],{"class":173},[156,787,789,792,795,798,801,804,807,810,813],{"class":158,"line":788},55,[156,790,791],{"class":162},"    if",[156,793,794],{"class":173}," ((",[156,796,797],{"class":243},"Get-NaToolkitVersion",[156,799,800],{"class":173},").CompareTo($requiredVersion) ",[156,802,803],{"class":162},"-lt",[156,805,806],{"class":243}," 0",[156,808,809],{"class":173},") { ",[156,811,812],{"class":162},"throw",[156,814,815],{"class":173}," }\n",[156,817,819,822,825,828,831],{"class":158,"line":818},56,[156,820,821],{"class":173},"} ",[156,823,824],{"class":162},"catch",[156,826,827],{"class":173}," [",[156,829,830],{"class":162},"Exception",[156,832,833],{"class":173},"] {\n",[156,835,837,840,843,846,849,851,854,856],{"class":158,"line":836},57,[156,838,839],{"class":243},"    Write-Host",[156,841,842],{"class":166}," \"",[156,844,845],{"class":243},"`n",[156,847,848],{"class":166},"This script requires Data ONTAP PowerShell Toolkit 1.2 or higher",[156,850,845],{"class":243},[156,852,853],{"class":166},"\"",[156,855,170],{"class":162},[156,857,858],{"class":173},"ForegroundColor Red\n",[156,860,862],{"class":158,"line":861},58,[156,863,864],{"class":162},"    return\n",[156,866,868],{"class":158,"line":867},59,[156,869,752],{"class":173},[156,871,873,876,878,880,882,885,887,890,892],{"class":158,"line":872},60,[156,874,875],{"class":173},"$cred ",[156,877,593],{"class":162},[156,879,777],{"class":243},[156,881,170],{"class":162},[156,883,884],{"class":173},"TypeName System.Management.Automation.PSCredential ",[156,886,183],{"class":162},[156,888,889],{"class":173},"ArgumentList $username",[156,891,177],{"class":162},[156,893,894],{"class":173}," $password\n",[156,896,898],{"class":158,"line":897},61,[156,899,578],{"emptyLinePlaceholder":577},[156,901,903],{"class":158,"line":902},62,[156,904,905],{"class":236},"# Calculate the difference between two dates\n",[156,907,909,912,916],{"class":158,"line":908},63,[156,910,911],{"class":162},"function",[156,913,915],{"class":914},"svObZ"," Get-DateDiff",[156,917,766],{"class":173},[156,919,921,924],{"class":158,"line":920},64,[156,922,923],{"class":162},"    param",[156,925,926],{"class":173}," (\n",[156,928,930,933,936],{"class":158,"line":929},65,[156,931,932],{"class":173},"        [",[156,934,935],{"class":243},"CmdletBinding",[156,937,938],{"class":173},"()]\n",[156,940,942,944,947,949,951,953,955],{"class":158,"line":941},66,[156,943,932],{"class":173},[156,945,946],{"class":243},"parameter",[156,948,459],{"class":173},[156,950,463],{"class":462},[156,952,466],{"class":162},[156,954,469],{"class":243},[156,956,472],{"class":173},[156,958,960,962,965,968],{"class":158,"line":959},67,[156,961,932],{"class":173},[156,963,964],{"class":162},"datetime",[156,966,967],{"class":173},"]$date1",[156,969,485],{"class":162},[156,971,973,975,977,979,981,983,985],{"class":158,"line":972},68,[156,974,932],{"class":173},[156,976,946],{"class":243},[156,978,459],{"class":173},[156,980,463],{"class":462},[156,982,466],{"class":162},[156,984,469],{"class":243},[156,986,472],{"class":173},[156,988,990,992,994],{"class":158,"line":989},69,[156,991,932],{"class":173},[156,993,964],{"class":162},[156,995,996],{"class":173},"]$date2\n",[156,998,1000],{"class":158,"line":999},70,[156,1001,1002],{"class":173},"    )\n",[156,1004,1006,1008,1011,1014],{"class":158,"line":1005},71,[156,1007,791],{"class":162},[156,1009,1010],{"class":173}," ($date2 ",[156,1012,1013],{"class":162},"-gt",[156,1015,1016],{"class":173}," $date1) {\n",[156,1018,1020,1023,1025,1028,1030],{"class":158,"line":1019},72,[156,1021,1022],{"class":173},"        $diff ",[156,1024,593],{"class":162},[156,1026,1027],{"class":173}," $date2 ",[156,1029,183],{"class":162},[156,1031,1032],{"class":173}," $date1\n",[156,1034,1036,1039,1042],{"class":158,"line":1035},73,[156,1037,1038],{"class":173},"    } ",[156,1040,1041],{"class":162},"else",[156,1043,766],{"class":173},[156,1045,1047,1049,1051,1054,1056],{"class":158,"line":1046},74,[156,1048,1022],{"class":173},[156,1050,593],{"class":162},[156,1052,1053],{"class":173}," $date1 ",[156,1055,183],{"class":162},[156,1057,1058],{"class":173}," $date2\n",[156,1060,1062],{"class":158,"line":1061},75,[156,1063,1064],{"class":173},"    }\n",[156,1066,1068],{"class":158,"line":1067},76,[156,1069,1070],{"class":173},"    $diff\n",[156,1072,1074],{"class":158,"line":1073},77,[156,1075,752],{"class":173},[156,1077,1079],{"class":158,"line":1078},78,[156,1080,578],{"emptyLinePlaceholder":577},[156,1082,1084],{"class":158,"line":1083},79,[156,1085,1086],{"class":236},"# Declare object arrays\n",[156,1088,1090,1093,1095,1098],{"class":158,"line":1089},80,[156,1091,1092],{"class":173},"$objDetail ",[156,1094,593],{"class":162},[156,1096,1097],{"class":162}," @",[156,1099,1100],{"class":173},"()\n",[156,1102,1104,1107,1109,1111],{"class":158,"line":1103},81,[156,1105,1106],{"class":173},"$objSummary ",[156,1108,593],{"class":162},[156,1110,1097],{"class":162},[156,1112,1100],{"class":173},[156,1114,1116],{"class":158,"line":1115},82,[156,1117,578],{"emptyLinePlaceholder":577},[156,1119,1121],{"class":158,"line":1120},83,[156,1122,1123],{"class":236},"# Connect to each node individually\n",[156,1125,1127,1130,1133,1136],{"class":158,"line":1126},84,[156,1128,1129],{"class":162},"foreach",[156,1131,1132],{"class":173}," ($node ",[156,1134,1135],{"class":162},"in",[156,1137,1138],{"class":173}," $nodes) {\n",[156,1140,1142,1144,1147,1150],{"class":158,"line":1141},85,[156,1143,839],{"class":243},[156,1145,1146],{"class":166}," \"connecting to node ",[156,1148,1149],{"class":173},"$node",[156,1151,1152],{"class":166},"...\"\n",[156,1154,1156,1159,1161,1164,1166,1169,1171,1174,1176],{"class":158,"line":1155},86,[156,1157,1158],{"class":173},"    $conn ",[156,1160,593],{"class":162},[156,1162,1163],{"class":243}," Connect-NaController",[156,1165,170],{"class":162},[156,1167,1168],{"class":173},"Name $node ",[156,1170,183],{"class":162},[156,1172,1173],{"class":173},"HTTPS ",[156,1175,183],{"class":162},[156,1177,1178],{"class":173},"Credential $cred\n",[156,1180,1182],{"class":158,"line":1181},87,[156,1183,578],{"emptyLinePlaceholder":577},[156,1185,1187,1189,1192,1195,1197],{"class":158,"line":1186},88,[156,1188,791],{"class":162},[156,1190,1191],{"class":173}," ($conn ",[156,1193,1194],{"class":162},"-ne",[156,1196,735],{"class":243},[156,1198,738],{"class":173},[156,1200,1202,1205],{"class":158,"line":1201},89,[156,1203,1204],{"class":243},"        Write-Host",[156,1206,1207],{"class":166}," \"node connected, continuing on to snapshot calculations...\"\n",[156,1209,1211,1213],{"class":158,"line":1210},90,[156,1212,1204],{"class":243},[156,1214,1215],{"class":166}," \"gathering node volumes...\"\n",[156,1217,1219,1222,1224,1227,1230,1233,1236,1239,1242,1244,1247,1250,1253,1256,1259,1262],{"class":158,"line":1218},91,[156,1220,1221],{"class":173},"        $vols ",[156,1223,593],{"class":162},[156,1225,1226],{"class":243}," Get-NaVol",[156,1228,1229],{"class":162}," |",[156,1231,1232],{"class":243}," Where-Object",[156,1234,1235],{"class":173}," { ",[156,1237,1238],{"class":243},"$_",[156,1240,1241],{"class":173},".state ",[156,1243,732],{"class":162},[156,1245,1246],{"class":166}," \"online\"",[156,1248,1249],{"class":162}," -and",[156,1251,1252],{"class":243}," $_",[156,1254,1255],{"class":173},".raidstatus ",[156,1257,1258],{"class":162},"-notmatch",[156,1260,1261],{"class":166}," \"read-only\"",[156,1263,815],{"class":173},[156,1265,1267,1270,1273,1275,1277],{"class":158,"line":1266},92,[156,1268,1269],{"class":162},"        if",[156,1271,1272],{"class":173}," ($vols ",[156,1274,1194],{"class":162},[156,1276,735],{"class":243},[156,1278,738],{"class":173},[156,1280,1282,1285,1288,1290],{"class":158,"line":1281},93,[156,1283,1284],{"class":162},"            foreach",[156,1286,1287],{"class":173}," ($vol ",[156,1289,1135],{"class":162},[156,1291,1292],{"class":173}," $vols) {\n",[156,1294,1296,1299,1302,1305],{"class":158,"line":1295},94,[156,1297,1298],{"class":243},"                Write-Host",[156,1300,1301],{"class":166}," \"gathering snapshots for volume ",[156,1303,1304],{"class":173},"$vol",[156,1306,1152],{"class":166},[156,1308,1310],{"class":158,"line":1309},95,[156,1311,1312],{"class":236},"                # Get snapshots\n",[156,1314,1316,1319,1321,1324,1326],{"class":158,"line":1315},96,[156,1317,1318],{"class":173},"                $snaps ",[156,1320,593],{"class":162},[156,1322,1323],{"class":243}," Get-NaSnapshot",[156,1325,170],{"class":162},[156,1327,1328],{"class":173},"TargetName $vol\n",[156,1330,1332],{"class":158,"line":1331},97,[156,1333,578],{"emptyLinePlaceholder":577},[156,1335,1337],{"class":158,"line":1336},98,[156,1338,1339],{"class":236},"                # Group to count snapshots per day\n",[156,1341,1343,1346,1348,1351,1354,1357,1360,1362,1365,1367,1369,1372,1374,1377,1379,1382,1385,1387],{"class":158,"line":1342},99,[156,1344,1345],{"class":173},"                $snapsdatecount ",[156,1347,593],{"class":162},[156,1349,1350],{"class":173}," $snaps ",[156,1352,1353],{"class":162},"|",[156,1355,1356],{"class":243}," Group-Object",[156,1358,1359],{"class":173}," { ((",[156,1361,626],{"class":243},[156,1363,1364],{"class":173},") ",[156,1366,183],{"class":162},[156,1368,1252],{"class":243},[156,1370,1371],{"class":173},".Created).Days } ",[156,1373,183],{"class":162},[156,1375,1376],{"class":173},"NoElement ",[156,1378,1353],{"class":162},[156,1380,1381],{"class":243}," Sort-Object",[156,1383,1384],{"class":173}," Name ",[156,1386,183],{"class":162},[156,1388,1389],{"class":173},"Descending\n",[156,1391,1393],{"class":158,"line":1392},100,[156,1394,1395],{"class":236},"                # Measure to get count and average; the average is snapshots per day\n",[156,1397,1399,1402,1404,1407,1409,1412,1415,1417,1420,1422,1425,1428,1430],{"class":158,"line":1398},101,[156,1400,1401],{"class":173},"                $totalavgdays ",[156,1403,593],{"class":162},[156,1405,1406],{"class":173}," $snapsdatecount ",[156,1408,1353],{"class":162},[156,1410,1411],{"class":243}," Measure-Object",[156,1413,1414],{"class":173}," Count ",[156,1416,183],{"class":162},[156,1418,1419],{"class":173},"Average ",[156,1421,1353],{"class":162},[156,1423,1424],{"class":243}," Select-Object",[156,1426,1427],{"class":173}," Count",[156,1429,177],{"class":162},[156,1431,1432],{"class":173}," Average\n",[156,1434,1436,1439,1441],{"class":158,"line":1435},102,[156,1437,1438],{"class":173},"                $avgdays ",[156,1440,593],{"class":162},[156,1442,1443],{"class":173}," $totalavgdays.Average\n",[156,1445,1447,1450,1452],{"class":158,"line":1446},103,[156,1448,1449],{"class":173},"                $totaldays ",[156,1451,593],{"class":162},[156,1453,1454],{"class":173}," $totalavgdays.Count\n",[156,1456,1458],{"class":158,"line":1457},104,[156,1459,578],{"emptyLinePlaceholder":577},[156,1461,1463],{"class":158,"line":1462},105,[156,1464,1465],{"class":236},"                # Sum snapshots for total snapshot consumption\n",[156,1467,1469,1472,1474,1476,1478,1480,1483,1485,1488,1490,1492,1494,1496],{"class":158,"line":1468},106,[156,1470,1471],{"class":173},"                $totalsize ",[156,1473,593],{"class":162},[156,1475,1350],{"class":173},[156,1477,1353],{"class":162},[156,1479,1411],{"class":243},[156,1481,1482],{"class":173}," Total ",[156,1484,183],{"class":162},[156,1486,1487],{"class":173},"Sum ",[156,1489,1353],{"class":162},[156,1491,1424],{"class":243},[156,1493,1427],{"class":173},[156,1495,177],{"class":162},[156,1497,1498],{"class":173}," Sum\n",[156,1500,1502,1505,1507,1510,1513],{"class":158,"line":1501},107,[156,1503,1504],{"class":173},"                $ftotalsize ",[156,1506,593],{"class":162},[156,1508,1509],{"class":243}," ConvertTo-FormattedNumber",[156,1511,1512],{"class":173}," $totalsize.sum DataSize ",[156,1514,1515],{"class":166},"\"0.0\"\n",[156,1517,1519],{"class":158,"line":1518},108,[156,1520,578],{"emptyLinePlaceholder":577},[156,1522,1524],{"class":158,"line":1523},109,[156,1525,1526],{"class":236},"                # Get oldest snapshot\n",[156,1528,1530,1533,1535,1537,1539,1541,1544,1546,1549,1551,1553,1555,1558],{"class":158,"line":1529},110,[156,1531,1532],{"class":173},"                $foldestsnap ",[156,1534,593],{"class":162},[156,1536,1350],{"class":173},[156,1538,1353],{"class":162},[156,1540,1381],{"class":243},[156,1542,1543],{"class":173}," Created ",[156,1545,183],{"class":162},[156,1547,1548],{"class":173},"Descending ",[156,1550,1353],{"class":162},[156,1552,1424],{"class":243},[156,1554,170],{"class":162},[156,1556,1557],{"class":173},"Last ",[156,1559,1560],{"class":243},"1\n",[156,1562,1564],{"class":158,"line":1563},111,[156,1565,578],{"emptyLinePlaceholder":577},[156,1567,1569],{"class":158,"line":1568},112,[156,1570,1571],{"class":236},"                # Build array for summary\n",[156,1573,1575,1578,1581,1583,1585],{"class":158,"line":1574},113,[156,1576,1577],{"class":162},"                if",[156,1579,1580],{"class":173}," ($avgdays ",[156,1582,1194],{"class":162},[156,1584,735],{"class":243},[156,1586,738],{"class":173},[156,1588,1590,1593,1595,1597],{"class":158,"line":1589},114,[156,1591,1592],{"class":173},"                    $summaryprop ",[156,1594,593],{"class":162},[156,1596,1097],{"class":162},[156,1598,1599],{"class":173},"{\n",[156,1601,1603,1606,1609],{"class":158,"line":1602},115,[156,1604,1605],{"class":166},"                        'Node'",[156,1607,1608],{"class":162},"       =",[156,1610,1611],{"class":173}," $node\n",[156,1613,1615,1618,1621],{"class":158,"line":1614},116,[156,1616,1617],{"class":166},"                        'Volume'",[156,1619,1620],{"class":162},"     =",[156,1622,1623],{"class":173}," $vol\n",[156,1625,1627,1630,1632],{"class":158,"line":1626},117,[156,1628,1629],{"class":166},"                        'TotalSnaps'",[156,1631,466],{"class":162},[156,1633,1634],{"class":173}," $snaps.length\n",[156,1636,1638,1641,1644],{"class":158,"line":1637},118,[156,1639,1640],{"class":166},"                        'TotalDays'",[156,1642,1643],{"class":162},"  =",[156,1645,1646],{"class":173}," $totaldays\n",[156,1648,1650,1653,1655],{"class":158,"line":1649},119,[156,1651,1652],{"class":166},"                        'AvgPerDay'",[156,1654,1643],{"class":162},[156,1656,1657],{"class":173}," $avgdays\n",[156,1659,1661,1664,1666],{"class":158,"line":1660},120,[156,1662,1663],{"class":166},"                        'TotalSize'",[156,1665,1643],{"class":162},[156,1667,1668],{"class":173}," $ftotalsize\n",[156,1670,1672,1675,1677],{"class":158,"line":1671},121,[156,1673,1674],{"class":166},"                        'Oldest'",[156,1676,1620],{"class":162},[156,1678,1679],{"class":173}," $foldestsnap.created\n",[156,1681,1683],{"class":158,"line":1682},122,[156,1684,1685],{"class":173},"                    }\n",[156,1687,1689,1692,1694,1696,1698,1701,1703],{"class":158,"line":1688},123,[156,1690,1691],{"class":173},"                    $objectS ",[156,1693,593],{"class":162},[156,1695,777],{"class":243},[156,1697,170],{"class":162},[156,1699,1700],{"class":173},"TypeName PSObject ",[156,1702,183],{"class":162},[156,1704,1705],{"class":173},"Property $summaryprop\n",[156,1707,1709,1712,1715],{"class":158,"line":1708},124,[156,1710,1711],{"class":173},"                    $objSummary ",[156,1713,1714],{"class":162},"+=",[156,1716,1717],{"class":173}," $objectS\n",[156,1719,1721],{"class":158,"line":1720},125,[156,1722,1723],{"class":173},"                    $objectS\n",[156,1725,1727],{"class":158,"line":1726},126,[156,1728,578],{"emptyLinePlaceholder":577},[156,1730,1732,1735,1738,1740],{"class":158,"line":1731},127,[156,1733,1734],{"class":162},"                    foreach",[156,1736,1737],{"class":173}," ($snap ",[156,1739,1135],{"class":162},[156,1741,1742],{"class":173}," $snaps) {\n",[156,1744,1746,1749,1751,1753,1755,1757],{"class":158,"line":1745},128,[156,1747,1748],{"class":173},"                        $daysold ",[156,1750,593],{"class":162},[156,1752,915],{"class":243},[156,1754,623],{"class":173},[156,1756,626],{"class":243},[156,1758,1759],{"class":173},") $snap.created\n",[156,1761,1763,1766,1768,1770,1773],{"class":158,"line":1762},129,[156,1764,1765],{"class":173},"                        $ftotal ",[156,1767,593],{"class":162},[156,1769,1509],{"class":243},[156,1771,1772],{"class":173}," $snap.total DataSize ",[156,1774,1515],{"class":166},[156,1776,1778,1781,1783,1785,1788],{"class":158,"line":1777},130,[156,1779,1780],{"class":173},"                        $fcumulative ",[156,1782,593],{"class":162},[156,1784,1509],{"class":243},[156,1786,1787],{"class":173}," $snap.CumulativeTotal DataSize ",[156,1789,1515],{"class":166},[156,1791,1793],{"class":158,"line":1792},131,[156,1794,578],{"emptyLinePlaceholder":577},[156,1796,1798],{"class":158,"line":1797},132,[156,1799,1800],{"class":236},"                        # Build array for details\n",[156,1802,1804,1807,1809,1811],{"class":158,"line":1803},133,[156,1805,1806],{"class":173},"                        $detailprop ",[156,1808,593],{"class":162},[156,1810,1097],{"class":162},[156,1812,1599],{"class":173},[156,1814,1816,1819,1822],{"class":158,"line":1815},134,[156,1817,1818],{"class":166},"                            'Node'",[156,1820,1821],{"class":162},"            =",[156,1823,1611],{"class":173},[156,1825,1827,1830,1833],{"class":158,"line":1826},135,[156,1828,1829],{"class":166},"                            'Volume'",[156,1831,1832],{"class":162},"          =",[156,1834,1623],{"class":173},[156,1836,1838,1841,1843],{"class":158,"line":1837},136,[156,1839,1840],{"class":166},"                            'Name'",[156,1842,1821],{"class":162},[156,1844,1845],{"class":173}," $snap.name\n",[156,1847,1849,1852,1855],{"class":158,"line":1848},137,[156,1850,1851],{"class":166},"                            'Created'",[156,1853,1854],{"class":162},"         =",[156,1856,1857],{"class":173}," $snap.created\n",[156,1859,1861,1864,1866],{"class":158,"line":1860},138,[156,1862,1863],{"class":166},"                            'DaysOld'",[156,1865,1854],{"class":162},[156,1867,1868],{"class":173}," $daysold.days\n",[156,1870,1872,1875,1877],{"class":158,"line":1871},139,[156,1873,1874],{"class":166},"                            'TotalSize'",[156,1876,1608],{"class":162},[156,1878,1879],{"class":173}," $ftotal\n",[156,1881,1883,1886,1888],{"class":158,"line":1882},140,[156,1884,1885],{"class":166},"                            'CumulativeTotal'",[156,1887,466],{"class":162},[156,1889,1890],{"class":173}," $fcumulative\n",[156,1892,1894],{"class":158,"line":1893},141,[156,1895,1896],{"class":173},"                        }\n",[156,1898,1900,1903,1905,1907,1909,1911,1913],{"class":158,"line":1899},142,[156,1901,1902],{"class":173},"                        $objectD ",[156,1904,593],{"class":162},[156,1906,777],{"class":243},[156,1908,170],{"class":162},[156,1910,1700],{"class":173},[156,1912,183],{"class":162},[156,1914,1915],{"class":173},"Property $detailprop\n",[156,1917,1919,1922,1924],{"class":158,"line":1918},143,[156,1920,1921],{"class":173},"                        $objDetail ",[156,1923,1714],{"class":162},[156,1925,1926],{"class":173}," $objectD\n",[156,1928,1930],{"class":158,"line":1929},144,[156,1931,1685],{"class":173},[156,1933,1935,1938],{"class":158,"line":1934},145,[156,1936,1937],{"class":162},"                    if",[156,1939,1940],{"class":173}," ($IsVerbose) {\n",[156,1942,1944,1947,1949,1952],{"class":158,"line":1943},146,[156,1945,1946],{"class":173},"                        $snaps ",[156,1948,1353],{"class":162},[156,1950,1951],{"class":243}," Format-Table",[156,1953,1954],{"class":162}," `\n",[156,1956,1958,1961,1964,1966,1969,1971,1974,1977,1979,1982,1985],{"class":158,"line":1957},147,[156,1959,1960],{"class":162},"                            @",[156,1962,1963],{"class":173},"{Expression ",[156,1965,593],{"class":162},[156,1967,1968],{"class":173}," {$node}; Label ",[156,1970,593],{"class":162},[156,1972,1973],{"class":166}," \"Node name\"",[156,1975,1976],{"class":173},"; Width ",[156,1978,593],{"class":162},[156,1980,1981],{"class":243}," 20",[156,1983,1984],{"class":173},"}",[156,1986,1987],{"class":162},",`\n",[156,1989,1991,1993,1995,1997,2000,2002,2005,2007,2009,2012,2014],{"class":158,"line":1990},148,[156,1992,1960],{"class":162},[156,1994,1963],{"class":173},[156,1996,593],{"class":162},[156,1998,1999],{"class":173}," {$vol}; Label ",[156,2001,593],{"class":162},[156,2003,2004],{"class":166}," \"Volume\"",[156,2006,1976],{"class":173},[156,2008,593],{"class":162},[156,2010,2011],{"class":243}," 40",[156,2013,1984],{"class":173},[156,2015,1987],{"class":162},[156,2017,2019,2021,2023,2025,2028,2030,2033,2035,2038,2040,2042,2045,2047],{"class":158,"line":2018},149,[156,2020,1960],{"class":162},[156,2022,1963],{"class":173},[156,2024,593],{"class":162},[156,2026,2027],{"class":173}," {",[156,2029,1238],{"class":243},[156,2031,2032],{"class":173},".Name}; Label ",[156,2034,593],{"class":162},[156,2036,2037],{"class":166}," \"Name\"",[156,2039,1976],{"class":173},[156,2041,593],{"class":162},[156,2043,2044],{"class":243}," 150",[156,2046,1984],{"class":173},[156,2048,1987],{"class":162},[156,2050,2052,2054,2056,2058,2060,2062,2065,2067,2070,2072,2074,2077,2079],{"class":158,"line":2051},150,[156,2053,1960],{"class":162},[156,2055,1963],{"class":173},[156,2057,593],{"class":162},[156,2059,2027],{"class":173},[156,2061,1238],{"class":243},[156,2063,2064],{"class":173},".Created.ToShortDateString()}; Label ",[156,2066,593],{"class":162},[156,2068,2069],{"class":166}," \"Created\"",[156,2071,1976],{"class":173},[156,2073,593],{"class":162},[156,2075,2076],{"class":243}," 12",[156,2078,1984],{"class":173},[156,2080,1987],{"class":162},[156,2082,2084,2086,2088,2090,2092,2095,2098,2100,2103,2105,2107,2109,2111,2114,2116,2119,2121,2123,2125,2127],{"class":158,"line":2083},151,[156,2085,1960],{"class":162},[156,2087,1963],{"class":173},[156,2089,593],{"class":162},[156,2091,2027],{"class":173},[156,2093,2094],{"class":166},"'{0} Days'",[156,2096,2097],{"class":162}," -f",[156,2099,623],{"class":173},[156,2101,2102],{"class":243},"Get-DateDiff",[156,2104,623],{"class":173},[156,2106,626],{"class":243},[156,2108,1364],{"class":173},[156,2110,1238],{"class":243},[156,2112,2113],{"class":173},".created).days}; Label ",[156,2115,593],{"class":162},[156,2117,2118],{"class":166}," \"Days Old\"",[156,2120,1976],{"class":173},[156,2122,593],{"class":162},[156,2124,1981],{"class":243},[156,2126,1984],{"class":173},[156,2128,1987],{"class":162},[156,2130,2132,2134,2136,2138,2140,2143,2145,2148,2151,2154,2156,2159,2161,2163,2166,2168],{"class":158,"line":2131},152,[156,2133,1960],{"class":162},[156,2135,1963],{"class":173},[156,2137,593],{"class":162},[156,2139,2027],{"class":173},[156,2141,2142],{"class":243},"ConvertTo-FormattedNumber",[156,2144,1252],{"class":243},[156,2146,2147],{"class":173},".Total DataSize ",[156,2149,2150],{"class":166},"\"0.0\"",[156,2152,2153],{"class":173},"}; Label ",[156,2155,593],{"class":162},[156,2157,2158],{"class":166}," \"Total\"",[156,2160,1976],{"class":173},[156,2162,593],{"class":162},[156,2164,2165],{"class":243}," 15",[156,2167,1984],{"class":173},[156,2169,1987],{"class":162},[156,2171,2173,2175,2177,2179,2181,2183,2185,2188,2190,2192,2194,2197,2199,2201,2204,2206,2208,2211],{"class":158,"line":2172},153,[156,2174,1960],{"class":162},[156,2176,1963],{"class":173},[156,2178,593],{"class":162},[156,2180,2027],{"class":173},[156,2182,2142],{"class":243},[156,2184,1252],{"class":243},[156,2186,2187],{"class":173},".CumulativeTotal DataSize ",[156,2189,2150],{"class":166},[156,2191,2153],{"class":173},[156,2193,593],{"class":162},[156,2195,2196],{"class":166}," \"Cumulative\"",[156,2198,1976],{"class":173},[156,2200,593],{"class":162},[156,2202,2203],{"class":243}," 10",[156,2205,821],{"class":173},[156,2207,183],{"class":162},[156,2209,2210],{"class":173},"AutoSize ",[156,2212,2213],{"class":162},"`\n",[156,2215,2217,2220,2223,2225,2228,2231,2233],{"class":158,"line":2216},154,[156,2218,2219],{"class":162},"                            |",[156,2221,2222],{"class":243}," Out-String",[156,2224,170],{"class":162},[156,2226,2227],{"class":173},"Width ",[156,2229,2230],{"class":243},"1000",[156,2232,1229],{"class":162},[156,2234,2235],{"class":243}," Write-Host\n",[156,2237,2239],{"class":158,"line":2238},155,[156,2240,1685],{"class":173},[156,2242,2244],{"class":158,"line":2243},156,[156,2245,2246],{"class":173},"                }\n",[156,2248,2250,2252,2254,2256,2258,2260,2263,2265,2268,2271,2273,2276],{"class":158,"line":2249},157,[156,2251,1577],{"class":162},[156,2253,1580],{"class":173},[156,2255,732],{"class":162},[156,2257,735],{"class":243},[156,2259,809],{"class":173},[156,2261,2262],{"class":243},"Write-Host",[156,2264,842],{"class":166},[156,2266,2267],{"class":243},"`t",[156,2269,2270],{"class":166},"No Snapshots Exist on ",[156,2272,1304],{"class":173},[156,2274,2275],{"class":166},"...\"",[156,2277,815],{"class":173},[156,2279,2281],{"class":158,"line":2280},158,[156,2282,2283],{"class":173},"            }\n",[156,2285,2287],{"class":158,"line":2286},159,[156,2288,2289],{"class":173},"        }\n",[156,2291,2293],{"class":158,"line":2292},160,[156,2294,1064],{"class":173},[156,2296,2298],{"class":158,"line":2297},161,[156,2299,752],{"class":173},[156,2301,2303],{"class":158,"line":2302},162,[156,2304,578],{"emptyLinePlaceholder":577},[156,2306,2308],{"class":158,"line":2307},163,[156,2309,2310],{"class":236},"# Save files\n",[156,2312,2314,2316,2318,2320,2323,2325,2328,2330,2333,2335,2338,2340,2343,2345,2348,2350,2353,2355,2358,2360,2363,2365],{"class":158,"line":2313},164,[156,2315,1106],{"class":173},[156,2317,1353],{"class":162},[156,2319,1424],{"class":243},[156,2321,2322],{"class":173}," Node",[156,2324,177],{"class":162},[156,2326,2327],{"class":173}," Volume",[156,2329,177],{"class":162},[156,2331,2332],{"class":173}," TotalSnaps",[156,2334,177],{"class":162},[156,2336,2337],{"class":173}," TotalDays",[156,2339,177],{"class":162},[156,2341,2342],{"class":173}," AvgPerDay",[156,2344,177],{"class":162},[156,2346,2347],{"class":173}," TotalSize",[156,2349,177],{"class":162},[156,2351,2352],{"class":173}," Oldest ",[156,2354,1353],{"class":162},[156,2356,2357],{"class":243}," Export-Csv",[156,2359,170],{"class":162},[156,2361,2362],{"class":173},"Path $outsummary ",[156,2364,183],{"class":162},[156,2366,2367],{"class":173},"NoTypeInformation\n",[156,2369,2371,2373,2375,2377,2379,2381,2383,2385,2388,2390,2393,2395,2398,2400,2402,2404,2407,2409,2411,2413,2416,2418],{"class":158,"line":2370},165,[156,2372,1092],{"class":173},[156,2374,1353],{"class":162},[156,2376,1424],{"class":243},[156,2378,2322],{"class":173},[156,2380,177],{"class":162},[156,2382,2327],{"class":173},[156,2384,177],{"class":162},[156,2386,2387],{"class":173}," Name",[156,2389,177],{"class":162},[156,2391,2392],{"class":173}," Created",[156,2394,177],{"class":162},[156,2396,2397],{"class":173}," DaysOld",[156,2399,177],{"class":162},[156,2401,2347],{"class":173},[156,2403,177],{"class":162},[156,2405,2406],{"class":173}," CumulativeTotal ",[156,2408,1353],{"class":162},[156,2410,2357],{"class":243},[156,2412,170],{"class":162},[156,2414,2415],{"class":173},"Path $outdetails ",[156,2417,183],{"class":162},[156,2419,2367],{"class":173},[223,2421,2423],{"id":2422},"chatgpt-rewrite","ChatGPT rewrite",[11,2425,2426],{},"I was curious to see what ChatGPT code interpreter would do with this code and this is its output.",[147,2428,2430],{"className":149,"code":2429,"language":151,"meta":152,"style":152},"\u003C#\n.SYNOPSIS\n    NetApp-Gather Snapshot Information\n.DESCRIPTION\n    Collects snapshot information, summary and detail, including created time,\n    total snapshots, total days, average per day and oldest snapshot.\n.PARAMETER nodes\n    Controllers to query, one per entry.\n.PARAMETER username\n    Account used to connect, for example domain\\username.\n.PARAMETER password\n    Password for the account, as a SecureString.\n.PARAMETER IsVerbose\n    Display snapshot detail for each volume.\n.NOTES\n    Author  : Thomas Lasswell (https:\u002F\u002Fwww.techcolumnist.com)\n    Version : 1.2 (2026-09-20), rewritten by ChatGPT\n    Requires: Data ONTAP PowerShell Toolkit 1.2 or higher\n#>\nparam(\n    [Parameter(Mandatory = $true)]\n    [Array]$nodes,\n    [Parameter(Mandatory = $true)]\n    [String]$username,\n    [Parameter(Mandatory = $true, ParameterSetName = 'Secret')]\n    [Security.SecureString]$password,\n    [switch]$IsVerbose\n)\n\n$exedir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent\n$currentDate = (Get-Date -Format \"yyyyMMdd.HHmmss\")\n$outsummary = -join ($exedir, \"\\GatherSnapshotInformation_\", $currentDate, \"_Summary.csv\")\n$outdetails = -join ($exedir, \"\\GatherSnapshotInformation_\", $currentDate, \"_Detail.csv\")\n\nImport-Module DataONTAP -ErrorAction SilentlyContinue\n\ntry {\n    $requiredVersion = New-Object System.Version(1.2)\n    if ((Get-NaToolkitVersion).CompareTo($requiredVersion) -lt 0) { throw \"This script requires Data ONTAP PowerShell Toolkit 1.2 or higher.\" }\n} catch {\n    Write-Host \"`nThis script requires Data ONTAP PowerShell Toolkit 1.2 or higher`n\" -ForegroundColor Red\n    return\n}\n\n$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password\n\nfunction Get-DateDiff {\n    param (\n        [parameter(Mandatory = $true)]\n        [datetime]$date1,\n        [parameter(Mandatory = $true)]\n        [datetime]$date2\n    )\n    return [Math]::Abs(($date2 - $date1).Days)\n}\n\n$objDetail = @()\n$objSummary = @()\n\nforeach ($node in $nodes) {\n    Write-Host \"Connecting to node $node...\"\n    $conn = Connect-NaController -Name $node -HTTPS -Credential $cred\n\n    if ($conn) {\n        Write-Host \"Node connected, continuing on to snapshot calculations...\"\n        $vols = Get-NaVol | Where-Object { $_.state -eq \"online\" -and $_.raidstatus -notmatch \"read-only\" }\n\n        foreach ($vol in $vols) {\n            $snaps = Get-NaSnapshot -TargetName $vol\n            $snapsdatecount = $snaps | Group-Object { ((Get-Date) - $_.Created).Days } -NoElement | Sort-Object Name -Descending\n            $totalavgdays = $snapsdatecount | Measure-Object Count -Average | Select-Object Count, Average\n            $totalsize = $snaps | Measure-Object Total -Sum | Select-Object Count, Sum\n            $foldestsnap = $snaps | Sort-Object Created -Descending | Select-Object -Last 1\n\n            if ($totalavgdays.Average) {\n                $summaryprop = @{\n                    'Node'       = $node\n                    'Volume'     = $vol\n                    'TotalSnaps' = $snaps.length\n                    'TotalDays'  = $totalavgdays.Count\n                    'AvgPerDay'  = $totalavgdays.Average\n                    'TotalSize'  = [System.Math]::Round($totalsize.Sum, 2)\n                    'Oldest'     = $foldestsnap.created\n                }\n                $objSummary += New-Object -TypeName PSObject -Property $summaryprop\n\n                foreach ($snap in $snaps) {\n                    $daysold = Get-DateDiff (Get-Date) $snap.created\n                    $detailprop = @{\n                        'Node'            = $node\n                        'Volume'          = $vol\n                        'Name'            = $snap.name\n                        'Created'         = $snap.created\n                        'DaysOld'         = $daysold\n                        'TotalSize'       = [System.Math]::Round($snap.total, 2)\n                        'CumulativeTotal' = [System.Math]::Round($snap.CumulativeTotal, 2)\n                    }\n                    $objDetail += New-Object -TypeName PSObject -Property $detailprop\n                }\n            } else {\n                Write-Host \"`tNo Snapshots Exist on $vol...\"\n            }\n        }\n    }\n}\n\n$objSummary | Export-Csv -Path $outsummary -NoTypeInformation\n$objDetail | Export-Csv -Path $outdetails -NoTypeInformation\n",[30,2431,2432,2436,2442,2446,2452,2457,2462,2470,2474,2482,2486,2494,2498,2506,2510,2516,2520,2525,2529,2533,2539,2555,2565,2581,2591,2615,2625,2633,2637,2641,2661,2681,2709,2733,2737,2750,2754,2760,2774,2797,2805,2823,2827,2831,2835,2855,2859,2867,2873,2889,2899,2915,2923,2927,2945,2949,2953,2963,2973,2977,2987,2998,3018,3022,3029,3036,3070,3074,3085,3098,3137,3166,3195,3224,3228,3236,3247,3256,3265,3274,3283,3292,3314,3323,3327,3344,3348,3359,3374,3385,3393,3401,3410,3419,3429,3448,3468,3472,3489,3493,3502,3516,3520,3524,3528,3532,3536,3552],{"__ignoreMap":152},[156,2433,2434],{"class":158,"line":159},[156,2435,237],{"class":236},[156,2437,2438,2440],{"class":158,"line":240},[156,2439,107],{"class":243},[156,2441,246],{"class":162},[156,2443,2444],{"class":158,"line":249},[156,2445,252],{"class":236},[156,2447,2448,2450],{"class":158,"line":255},[156,2449,107],{"class":243},[156,2451,260],{"class":162},[156,2453,2454],{"class":158,"line":263},[156,2455,2456],{"class":236},"    Collects snapshot information, summary and detail, including created time,\n",[156,2458,2459],{"class":158,"line":269},[156,2460,2461],{"class":236},"    total snapshots, total days, average per day and oldest snapshot.\n",[156,2463,2464,2466,2468],{"class":158,"line":275},[156,2465,107],{"class":243},[156,2467,292],{"class":162},[156,2469,295],{"class":162},[156,2471,2472],{"class":158,"line":281},[156,2473,301],{"class":236},[156,2475,2476,2478,2480],{"class":158,"line":287},[156,2477,107],{"class":243},[156,2479,292],{"class":162},[156,2481,311],{"class":162},[156,2483,2484],{"class":158,"line":298},[156,2485,317],{"class":236},[156,2487,2488,2490,2492],{"class":158,"line":304},[156,2489,107],{"class":243},[156,2491,292],{"class":162},[156,2493,327],{"class":162},[156,2495,2496],{"class":158,"line":314},[156,2497,333],{"class":236},[156,2499,2500,2502,2504],{"class":158,"line":320},[156,2501,107],{"class":243},[156,2503,292],{"class":162},[156,2505,343],{"class":162},[156,2507,2508],{"class":158,"line":330},[156,2509,349],{"class":236},[156,2511,2512,2514],{"class":158,"line":336},[156,2513,107],{"class":243},[156,2515,384],{"class":162},[156,2517,2518],{"class":158,"line":346},[156,2519,390],{"class":236},[156,2521,2522],{"class":158,"line":352},[156,2523,2524],{"class":236},"    Version : 1.2 (2026-09-20), rewritten by ChatGPT\n",[156,2526,2527],{"class":158,"line":360},[156,2528,402],{"class":236},[156,2530,2531],{"class":158,"line":366},[156,2532,432],{"class":236},[156,2534,2535,2537],{"class":158,"line":373},[156,2536,444],{"class":162},[156,2538,447],{"class":173},[156,2540,2541,2543,2545,2547,2549,2551,2553],{"class":158,"line":379},[156,2542,453],{"class":173},[156,2544,456],{"class":243},[156,2546,459],{"class":173},[156,2548,463],{"class":462},[156,2550,466],{"class":162},[156,2552,469],{"class":243},[156,2554,472],{"class":173},[156,2556,2557,2559,2561,2563],{"class":158,"line":387},[156,2558,453],{"class":173},[156,2560,82],{"class":162},[156,2562,482],{"class":173},[156,2564,485],{"class":162},[156,2566,2567,2569,2571,2573,2575,2577,2579],{"class":158,"line":393},[156,2568,453],{"class":173},[156,2570,456],{"class":243},[156,2572,459],{"class":173},[156,2574,463],{"class":462},[156,2576,466],{"class":162},[156,2578,469],{"class":243},[156,2580,472],{"class":173},[156,2582,2583,2585,2587,2589],{"class":158,"line":399},[156,2584,453],{"class":173},[156,2586,98],{"class":162},[156,2588,512],{"class":173},[156,2590,485],{"class":162},[156,2592,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613],{"class":158,"line":405},[156,2594,453],{"class":173},[156,2596,456],{"class":243},[156,2598,459],{"class":173},[156,2600,463],{"class":462},[156,2602,466],{"class":162},[156,2604,469],{"class":243},[156,2606,177],{"class":162},[156,2608,534],{"class":462},[156,2610,466],{"class":162},[156,2612,539],{"class":166},[156,2614,472],{"class":173},[156,2616,2617,2619,2621,2623],{"class":158,"line":411},[156,2618,453],{"class":173},[156,2620,549],{"class":162},[156,2622,552],{"class":173},[156,2624,485],{"class":162},[156,2626,2627,2629,2631],{"class":158,"line":417},[156,2628,453],{"class":173},[156,2630,562],{"class":162},[156,2632,565],{"class":173},[156,2634,2635],{"class":158,"line":423},[156,2636,571],{"class":173},[156,2638,2639],{"class":158,"line":429},[156,2640,578],{"emptyLinePlaceholder":577},[156,2642,2643,2645,2647,2649,2651,2653,2655,2657,2659],{"class":158,"line":435},[156,2644,590],{"class":173},[156,2646,593],{"class":162},[156,2648,596],{"class":243},[156,2650,170],{"class":162},[156,2652,601],{"class":173},[156,2654,604],{"class":243},[156,2656,607],{"class":173},[156,2658,183],{"class":162},[156,2660,612],{"class":173},[156,2662,2663,2665,2667,2669,2671,2673,2676,2679],{"class":158,"line":441},[156,2664,618],{"class":173},[156,2666,593],{"class":162},[156,2668,623],{"class":173},[156,2670,626],{"class":243},[156,2672,170],{"class":162},[156,2674,2675],{"class":173},"Format ",[156,2677,2678],{"class":166},"\"yyyyMMdd.HHmmss\"",[156,2680,571],{"class":173},[156,2682,2683,2685,2687,2690,2693,2695,2698,2700,2703,2705,2707],{"class":158,"line":450},[156,2684,637],{"class":173},[156,2686,593],{"class":162},[156,2688,2689],{"class":162}," -join",[156,2691,2692],{"class":173}," ($exedir",[156,2694,177],{"class":162},[156,2696,2697],{"class":166}," \"\\GatherSnapshotInformation_\"",[156,2699,177],{"class":162},[156,2701,2702],{"class":173}," $currentDate",[156,2704,177],{"class":162},[156,2706,664],{"class":166},[156,2708,571],{"class":173},[156,2710,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731],{"class":158,"line":475},[156,2712,672],{"class":173},[156,2714,593],{"class":162},[156,2716,2689],{"class":162},[156,2718,2692],{"class":173},[156,2720,177],{"class":162},[156,2722,2697],{"class":166},[156,2724,177],{"class":162},[156,2726,2702],{"class":173},[156,2728,177],{"class":162},[156,2730,693],{"class":166},[156,2732,571],{"class":173},[156,2734,2735],{"class":158,"line":488},[156,2736,578],{"emptyLinePlaceholder":577},[156,2738,2739,2742,2745,2747],{"class":158,"line":505},[156,2740,2741],{"class":243},"Import-Module",[156,2743,2744],{"class":173}," DataONTAP ",[156,2746,183],{"class":162},[156,2748,2749],{"class":173},"ErrorAction SilentlyContinue\n",[156,2751,2752],{"class":158,"line":517},[156,2753,578],{"emptyLinePlaceholder":577},[156,2755,2756,2758],{"class":158,"line":544},[156,2757,763],{"class":162},[156,2759,766],{"class":173},[156,2761,2762,2764,2766,2768,2770,2772],{"class":158,"line":557},[156,2763,772],{"class":173},[156,2765,593],{"class":162},[156,2767,777],{"class":243},[156,2769,780],{"class":173},[156,2771,783],{"class":243},[156,2773,571],{"class":173},[156,2775,2776,2778,2780,2782,2784,2786,2788,2790,2792,2795],{"class":158,"line":568},[156,2777,791],{"class":162},[156,2779,794],{"class":173},[156,2781,797],{"class":243},[156,2783,800],{"class":173},[156,2785,803],{"class":162},[156,2787,806],{"class":243},[156,2789,809],{"class":173},[156,2791,812],{"class":162},[156,2793,2794],{"class":166}," \"This script requires Data ONTAP PowerShell Toolkit 1.2 or higher.\"",[156,2796,815],{"class":173},[156,2798,2799,2801,2803],{"class":158,"line":574},[156,2800,821],{"class":173},[156,2802,824],{"class":162},[156,2804,766],{"class":173},[156,2806,2807,2809,2811,2813,2815,2817,2819,2821],{"class":158,"line":581},[156,2808,839],{"class":243},[156,2810,842],{"class":166},[156,2812,845],{"class":243},[156,2814,848],{"class":166},[156,2816,845],{"class":243},[156,2818,853],{"class":166},[156,2820,170],{"class":162},[156,2822,858],{"class":173},[156,2824,2825],{"class":158,"line":587},[156,2826,864],{"class":162},[156,2828,2829],{"class":158,"line":615},[156,2830,752],{"class":173},[156,2832,2833],{"class":158,"line":634},[156,2834,578],{"emptyLinePlaceholder":577},[156,2836,2837,2839,2841,2843,2845,2847,2849,2851,2853],{"class":158,"line":669},[156,2838,875],{"class":173},[156,2840,593],{"class":162},[156,2842,777],{"class":243},[156,2844,170],{"class":162},[156,2846,884],{"class":173},[156,2848,183],{"class":162},[156,2850,889],{"class":173},[156,2852,177],{"class":162},[156,2854,894],{"class":173},[156,2856,2857],{"class":158,"line":698},[156,2858,578],{"emptyLinePlaceholder":577},[156,2860,2861,2863,2865],{"class":158,"line":703},[156,2862,911],{"class":162},[156,2864,915],{"class":914},[156,2866,766],{"class":173},[156,2868,2869,2871],{"class":158,"line":709},[156,2870,923],{"class":162},[156,2872,926],{"class":173},[156,2874,2875,2877,2879,2881,2883,2885,2887],{"class":158,"line":723},[156,2876,932],{"class":173},[156,2878,946],{"class":243},[156,2880,459],{"class":173},[156,2882,463],{"class":462},[156,2884,466],{"class":162},[156,2886,469],{"class":243},[156,2888,472],{"class":173},[156,2890,2891,2893,2895,2897],{"class":158,"line":741},[156,2892,932],{"class":173},[156,2894,964],{"class":162},[156,2896,967],{"class":173},[156,2898,485],{"class":162},[156,2900,2901,2903,2905,2907,2909,2911,2913],{"class":158,"line":749},[156,2902,932],{"class":173},[156,2904,946],{"class":243},[156,2906,459],{"class":173},[156,2908,463],{"class":462},[156,2910,466],{"class":162},[156,2912,469],{"class":243},[156,2914,472],{"class":173},[156,2916,2917,2919,2921],{"class":158,"line":755},[156,2918,932],{"class":173},[156,2920,964],{"class":162},[156,2922,996],{"class":173},[156,2924,2925],{"class":158,"line":760},[156,2926,1002],{"class":173},[156,2928,2929,2932,2934,2937,2940,2942],{"class":158,"line":769},[156,2930,2931],{"class":162},"    return",[156,2933,827],{"class":173},[156,2935,2936],{"class":162},"Math",[156,2938,2939],{"class":173},"]::Abs(($date2 ",[156,2941,183],{"class":162},[156,2943,2944],{"class":173}," $date1).Days)\n",[156,2946,2947],{"class":158,"line":788},[156,2948,752],{"class":173},[156,2950,2951],{"class":158,"line":818},[156,2952,578],{"emptyLinePlaceholder":577},[156,2954,2955,2957,2959,2961],{"class":158,"line":836},[156,2956,1092],{"class":173},[156,2958,593],{"class":162},[156,2960,1097],{"class":162},[156,2962,1100],{"class":173},[156,2964,2965,2967,2969,2971],{"class":158,"line":861},[156,2966,1106],{"class":173},[156,2968,593],{"class":162},[156,2970,1097],{"class":162},[156,2972,1100],{"class":173},[156,2974,2975],{"class":158,"line":867},[156,2976,578],{"emptyLinePlaceholder":577},[156,2978,2979,2981,2983,2985],{"class":158,"line":872},[156,2980,1129],{"class":162},[156,2982,1132],{"class":173},[156,2984,1135],{"class":162},[156,2986,1138],{"class":173},[156,2988,2989,2991,2994,2996],{"class":158,"line":897},[156,2990,839],{"class":243},[156,2992,2993],{"class":166}," \"Connecting to node ",[156,2995,1149],{"class":173},[156,2997,1152],{"class":166},[156,2999,3000,3002,3004,3006,3008,3010,3012,3014,3016],{"class":158,"line":902},[156,3001,1158],{"class":173},[156,3003,593],{"class":162},[156,3005,1163],{"class":243},[156,3007,170],{"class":162},[156,3009,1168],{"class":173},[156,3011,183],{"class":162},[156,3013,1173],{"class":173},[156,3015,183],{"class":162},[156,3017,1178],{"class":173},[156,3019,3020],{"class":158,"line":908},[156,3021,578],{"emptyLinePlaceholder":577},[156,3023,3024,3026],{"class":158,"line":920},[156,3025,791],{"class":162},[156,3027,3028],{"class":173}," ($conn) {\n",[156,3030,3031,3033],{"class":158,"line":929},[156,3032,1204],{"class":243},[156,3034,3035],{"class":166}," \"Node connected, continuing on to snapshot calculations...\"\n",[156,3037,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068],{"class":158,"line":941},[156,3039,1221],{"class":173},[156,3041,593],{"class":162},[156,3043,1226],{"class":243},[156,3045,1229],{"class":162},[156,3047,1232],{"class":243},[156,3049,1235],{"class":173},[156,3051,1238],{"class":243},[156,3053,1241],{"class":173},[156,3055,732],{"class":162},[156,3057,1246],{"class":166},[156,3059,1249],{"class":162},[156,3061,1252],{"class":243},[156,3063,1255],{"class":173},[156,3065,1258],{"class":162},[156,3067,1261],{"class":166},[156,3069,815],{"class":173},[156,3071,3072],{"class":158,"line":959},[156,3073,578],{"emptyLinePlaceholder":577},[156,3075,3076,3079,3081,3083],{"class":158,"line":972},[156,3077,3078],{"class":162},"        foreach",[156,3080,1287],{"class":173},[156,3082,1135],{"class":162},[156,3084,1292],{"class":173},[156,3086,3087,3090,3092,3094,3096],{"class":158,"line":989},[156,3088,3089],{"class":173},"            $snaps ",[156,3091,593],{"class":162},[156,3093,1323],{"class":243},[156,3095,170],{"class":162},[156,3097,1328],{"class":173},[156,3099,3100,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135],{"class":158,"line":999},[156,3101,3102],{"class":173},"            $snapsdatecount ",[156,3104,593],{"class":162},[156,3106,1350],{"class":173},[156,3108,1353],{"class":162},[156,3110,1356],{"class":243},[156,3112,1359],{"class":173},[156,3114,626],{"class":243},[156,3116,1364],{"class":173},[156,3118,183],{"class":162},[156,3120,1252],{"class":243},[156,3122,1371],{"class":173},[156,3124,183],{"class":162},[156,3126,1376],{"class":173},[156,3128,1353],{"class":162},[156,3130,1381],{"class":243},[156,3132,1384],{"class":173},[156,3134,183],{"class":162},[156,3136,1389],{"class":173},[156,3138,3139,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164],{"class":158,"line":1005},[156,3140,3141],{"class":173},"            $totalavgdays ",[156,3143,593],{"class":162},[156,3145,1406],{"class":173},[156,3147,1353],{"class":162},[156,3149,1411],{"class":243},[156,3151,1414],{"class":173},[156,3153,183],{"class":162},[156,3155,1419],{"class":173},[156,3157,1353],{"class":162},[156,3159,1424],{"class":243},[156,3161,1427],{"class":173},[156,3163,177],{"class":162},[156,3165,1432],{"class":173},[156,3167,3168,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193],{"class":158,"line":1019},[156,3169,3170],{"class":173},"            $totalsize ",[156,3172,593],{"class":162},[156,3174,1350],{"class":173},[156,3176,1353],{"class":162},[156,3178,1411],{"class":243},[156,3180,1482],{"class":173},[156,3182,183],{"class":162},[156,3184,1487],{"class":173},[156,3186,1353],{"class":162},[156,3188,1424],{"class":243},[156,3190,1427],{"class":173},[156,3192,177],{"class":162},[156,3194,1498],{"class":173},[156,3196,3197,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222],{"class":158,"line":1035},[156,3198,3199],{"class":173},"            $foldestsnap ",[156,3201,593],{"class":162},[156,3203,1350],{"class":173},[156,3205,1353],{"class":162},[156,3207,1381],{"class":243},[156,3209,1543],{"class":173},[156,3211,183],{"class":162},[156,3213,1548],{"class":173},[156,3215,1353],{"class":162},[156,3217,1424],{"class":243},[156,3219,170],{"class":162},[156,3221,1557],{"class":173},[156,3223,1560],{"class":243},[156,3225,3226],{"class":158,"line":1046},[156,3227,578],{"emptyLinePlaceholder":577},[156,3229,3230,3233],{"class":158,"line":1061},[156,3231,3232],{"class":162},"            if",[156,3234,3235],{"class":173}," ($totalavgdays.Average) {\n",[156,3237,3238,3241,3243,3245],{"class":158,"line":1067},[156,3239,3240],{"class":173},"                $summaryprop ",[156,3242,593],{"class":162},[156,3244,1097],{"class":162},[156,3246,1599],{"class":173},[156,3248,3249,3252,3254],{"class":158,"line":1073},[156,3250,3251],{"class":166},"                    'Node'",[156,3253,1608],{"class":162},[156,3255,1611],{"class":173},[156,3257,3258,3261,3263],{"class":158,"line":1078},[156,3259,3260],{"class":166},"                    'Volume'",[156,3262,1620],{"class":162},[156,3264,1623],{"class":173},[156,3266,3267,3270,3272],{"class":158,"line":1083},[156,3268,3269],{"class":166},"                    'TotalSnaps'",[156,3271,466],{"class":162},[156,3273,1634],{"class":173},[156,3275,3276,3279,3281],{"class":158,"line":1089},[156,3277,3278],{"class":166},"                    'TotalDays'",[156,3280,1643],{"class":162},[156,3282,1454],{"class":173},[156,3284,3285,3288,3290],{"class":158,"line":1103},[156,3286,3287],{"class":166},"                    'AvgPerDay'",[156,3289,1643],{"class":162},[156,3291,1443],{"class":173},[156,3293,3294,3297,3299,3301,3304,3307,3309,3312],{"class":158,"line":1115},[156,3295,3296],{"class":166},"                    'TotalSize'",[156,3298,1643],{"class":162},[156,3300,827],{"class":173},[156,3302,3303],{"class":162},"System.Math",[156,3305,3306],{"class":173},"]::Round($totalsize.Sum",[156,3308,177],{"class":162},[156,3310,3311],{"class":243}," 2",[156,3313,571],{"class":173},[156,3315,3316,3319,3321],{"class":158,"line":1120},[156,3317,3318],{"class":166},"                    'Oldest'",[156,3320,1620],{"class":162},[156,3322,1679],{"class":173},[156,3324,3325],{"class":158,"line":1126},[156,3326,2246],{"class":173},[156,3328,3329,3332,3334,3336,3338,3340,3342],{"class":158,"line":1141},[156,3330,3331],{"class":173},"                $objSummary ",[156,3333,1714],{"class":162},[156,3335,777],{"class":243},[156,3337,170],{"class":162},[156,3339,1700],{"class":173},[156,3341,183],{"class":162},[156,3343,1705],{"class":173},[156,3345,3346],{"class":158,"line":1155},[156,3347,578],{"emptyLinePlaceholder":577},[156,3349,3350,3353,3355,3357],{"class":158,"line":1181},[156,3351,3352],{"class":162},"                foreach",[156,3354,1737],{"class":173},[156,3356,1135],{"class":162},[156,3358,1742],{"class":173},[156,3360,3361,3364,3366,3368,3370,3372],{"class":158,"line":1186},[156,3362,3363],{"class":173},"                    $daysold ",[156,3365,593],{"class":162},[156,3367,915],{"class":243},[156,3369,623],{"class":173},[156,3371,626],{"class":243},[156,3373,1759],{"class":173},[156,3375,3376,3379,3381,3383],{"class":158,"line":1201},[156,3377,3378],{"class":173},"                    $detailprop ",[156,3380,593],{"class":162},[156,3382,1097],{"class":162},[156,3384,1599],{"class":173},[156,3386,3387,3389,3391],{"class":158,"line":1210},[156,3388,1605],{"class":166},[156,3390,1821],{"class":162},[156,3392,1611],{"class":173},[156,3394,3395,3397,3399],{"class":158,"line":1218},[156,3396,1617],{"class":166},[156,3398,1832],{"class":162},[156,3400,1623],{"class":173},[156,3402,3403,3406,3408],{"class":158,"line":1266},[156,3404,3405],{"class":166},"                        'Name'",[156,3407,1821],{"class":162},[156,3409,1845],{"class":173},[156,3411,3412,3415,3417],{"class":158,"line":1281},[156,3413,3414],{"class":166},"                        'Created'",[156,3416,1854],{"class":162},[156,3418,1857],{"class":173},[156,3420,3421,3424,3426],{"class":158,"line":1295},[156,3422,3423],{"class":166},"                        'DaysOld'",[156,3425,1854],{"class":162},[156,3427,3428],{"class":173}," $daysold\n",[156,3430,3431,3433,3435,3437,3439,3442,3444,3446],{"class":158,"line":1309},[156,3432,1663],{"class":166},[156,3434,1608],{"class":162},[156,3436,827],{"class":173},[156,3438,3303],{"class":162},[156,3440,3441],{"class":173},"]::Round($snap.total",[156,3443,177],{"class":162},[156,3445,3311],{"class":243},[156,3447,571],{"class":173},[156,3449,3450,3453,3455,3457,3459,3462,3464,3466],{"class":158,"line":1315},[156,3451,3452],{"class":166},"                        'CumulativeTotal'",[156,3454,466],{"class":162},[156,3456,827],{"class":173},[156,3458,3303],{"class":162},[156,3460,3461],{"class":173},"]::Round($snap.CumulativeTotal",[156,3463,177],{"class":162},[156,3465,3311],{"class":243},[156,3467,571],{"class":173},[156,3469,3470],{"class":158,"line":1331},[156,3471,1685],{"class":173},[156,3473,3474,3477,3479,3481,3483,3485,3487],{"class":158,"line":1336},[156,3475,3476],{"class":173},"                    $objDetail ",[156,3478,1714],{"class":162},[156,3480,777],{"class":243},[156,3482,170],{"class":162},[156,3484,1700],{"class":173},[156,3486,183],{"class":162},[156,3488,1915],{"class":173},[156,3490,3491],{"class":158,"line":1342},[156,3492,2246],{"class":173},[156,3494,3495,3498,3500],{"class":158,"line":1392},[156,3496,3497],{"class":173},"            } ",[156,3499,1041],{"class":162},[156,3501,766],{"class":173},[156,3503,3504,3506,3508,3510,3512,3514],{"class":158,"line":1398},[156,3505,1298],{"class":243},[156,3507,842],{"class":166},[156,3509,2267],{"class":243},[156,3511,2270],{"class":166},[156,3513,1304],{"class":173},[156,3515,1152],{"class":166},[156,3517,3518],{"class":158,"line":1435},[156,3519,2283],{"class":173},[156,3521,3522],{"class":158,"line":1446},[156,3523,2289],{"class":173},[156,3525,3526],{"class":158,"line":1457},[156,3527,1064],{"class":173},[156,3529,3530],{"class":158,"line":1462},[156,3531,752],{"class":173},[156,3533,3534],{"class":158,"line":1468},[156,3535,578],{"emptyLinePlaceholder":577},[156,3537,3538,3540,3542,3544,3546,3548,3550],{"class":158,"line":1501},[156,3539,1106],{"class":173},[156,3541,1353],{"class":162},[156,3543,2357],{"class":243},[156,3545,170],{"class":162},[156,3547,2362],{"class":173},[156,3549,183],{"class":162},[156,3551,2367],{"class":173},[156,3553,3554,3556,3558,3560,3562,3564,3566],{"class":158,"line":1518},[156,3555,1092],{"class":173},[156,3557,1353],{"class":162},[156,3559,2357],{"class":243},[156,3561,170],{"class":162},[156,3563,2415],{"class":173},[156,3565,183],{"class":162},[156,3567,2367],{"class":173},[18,3569,3571],{"id":3570},"notes","Notes",[23,3573,3574,3585,3598],{},[26,3575,3576,3577,3580,3581,3584],{},"Output is two CSV files next to the script: ",[30,3578,3579],{},"GatherSnapshotInformation_\u003Cdate>_Summary.csv"," (one row per volume) and ",[30,3582,3583],{},"GatherSnapshotInformation_\u003Cdate>_Detail.csv"," (one row per snapshot).",[26,3586,3587,3588,3591,3592,3595,3596,107],{},"The ChatGPT version is a straight rewrite of the original and has not been run against a filer. It is not a drop-in replacement: it drops the ",[30,3589,3590],{},"-IsVerbose"," table output and formats sizes with ",[30,3593,3594],{},"[Math]::Round"," instead of ",[30,3597,2142],{},[26,3599,3600,3601,3604,3605,3608,3609,3612,3613,3616],{},"Update 2026-09-20 (v1.2): the CSV file name timestamp was ",[30,3602,3603],{},"yyyymmdd.Hm.s",", where ",[30,3606,3607],{},"mm"," is minutes, so it never contained the month. It is now ",[30,3610,3611],{},"yyyyMMdd.HHmmss",". The ChatGPT rewrite also grouped snapshots by ",[30,3614,3615],{},"$_.Created.Days",", which does not exist on a date, so every snapshot landed in one group; it now groups by age in days like the original.",[3618,3619,3620],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}",{"title":152,"searchDepth":240,"depth":240,"links":3622},[3623,3624,3625,3626,3630],{"id":20,"depth":240,"text":21},{"id":45,"depth":240,"text":46},{"id":141,"depth":240,"text":142},{"id":220,"depth":240,"text":221,"children":3627},[3628,3629],{"id":225,"depth":249,"text":226},{"id":2422,"depth":249,"text":2423},{"id":3570,"depth":240,"text":3571},"techcolumnist",[3633,3634,3635],"dotps","ps","scripts","2014-01-21T16:15:38Z","Gathering snapshot statistics is a tedious task when looking at autosupports and cli output.","md",false,null,{},"\u002Fblog\u002F2014\u002F01\u002F21\u002Fpowershell-gather-netapp-snapshot-details",{"title":6,"description":3637},[3645,3631],"lasswell","both","blog\u002F2014\u002F01\u002F21\u002Fpowershell-gather-netapp-snapshot-details",[3649,151,3650],"netapp","snapshots","2026-09-20T00:00:00Z","\u002F2014\u002F01\u002F21\u002Fpowershell-gather-netapp-snapshot-details\u002F","97EA3KjMneCGb0IntkfOuc8DCOP3PmGFK_ZkSR5hHoY",{"title":3655,"description":3656,"date":3657,"url":3658,"categories":3659,"tags":3660,"image":3640,"readingTime":159,"canonical":3631,"sites":3663,"series":3640,"seriesOrder":3640},"PowerShell: OnCommand Core – Delete All Information Events","Found a solution on the NetApp communities for deleting the Informational events that plague OnCommand Core.","2014-02-10T11:56:00Z","\u002F2014\u002F02\u002F10\u002Foncommand-core-delete-all-information-events\u002F",[3634,3635],[3661,3649,3662,151],"dfm","oncommand",[3645,3631],{"title":3665,"description":3666,"date":3667,"url":3668,"categories":3669,"tags":3671,"image":3640,"readingTime":159,"canonical":3631,"sites":3674,"series":3640,"seriesOrder":3640},"cisco WS-C4900M: Set SSH","Note: You can leave the “telnet” off vty transport, but if you do ensure that you’ve tested SSH first!","2014-01-14T16:55:49Z","\u002F2014\u002F01\u002F14\u002Fcisco-ws-c4900m-set-ssh\u002F",[3670],"engineering",[3672,3673],"cisco","ssh",[3645,3631],[3676,3686,3654],{"title":3677,"description":3678,"date":3679,"url":3680,"categories":3681,"tags":3682,"image":3640,"readingTime":255,"canonical":3631,"sites":3685,"series":3640,"seriesOrder":3640},"PowerShell: NetApp – Discover Every Volume Over 80 Percent Capacity","Sweep every ONTAP cluster you manage through the ONTAP REST API from PowerShell and report volumes above a capacity threshold, with a read-only login.","2025-08-13T14:00:00Z","\u002F2025\u002F08\u002F13\u002Fpowershell-netapp-discover-every-volume-over-80-percent-capacity\u002F",[3634,3635,3633],[151,3649,3683,3684],"ontap","discovery",[3631],{"title":3687,"description":3688,"date":3689,"url":3690,"categories":3691,"tags":3692,"image":3640,"readingTime":159,"canonical":3631,"sites":3693,"series":3640,"seriesOrder":3640},"PowerShell: NetApp – Gather Volume Information","This is a simple script to gather volume information including dedupe schedule and autogrow settings.","2014-04-28T12:57:58Z","\u002F2014\u002F04\u002F28\u002Fpowershell-netapp-gather-volume-information\u002F",[3633,3634,3635],[3649,151,220],[3645,3631],{"doc":3640,"posts":3695},[],1790223957018]