<?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 PowerShell commands for inodes in Microsoft Virtualization Discussions</title>
    <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74188#M3652</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks paleon, that was exactly what I was looking for.&amp;nbsp; I added % used as an additional column.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$filer1 = Connect-NaController -Name foo&lt;/P&gt;&lt;P&gt;$vols = Get-NaVol&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$vols | Format-Table -Property Name, FilesUsed, @{Label = "FilesAvailable"; Expression = {$_.FilesTotal - $_.FilesUsed}; Align = "Right"},@{Label = "%Used"; Expression = {$_.FilesUsed / $_.FilesTotal};FormatString="N2"},"FilesTotal" -AutoSize&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 02 Nov 2011 21:04:59 GMT</pubDate>
    <dc:creator>thepunisher</dc:creator>
    <dc:date>2011-11-02T21:04:59Z</dc:date>
    <item>
      <title>PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74177#M3650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are there commands to display and modify inodes?&amp;nbsp; Equivelents for df -i and maxfiles in the toolkit?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Jun 2025 06:42:20 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74177#M3650</guid>
      <dc:creator>thepunisher</dc:creator>
      <dc:date>2025-06-05T06:42:20Z</dc:date>
    </item>
    <item>
      <title>PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74180#M3651</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; The information is available in the VolumeInfo object.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a sample script to output the inode information.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$filer1 = Connect-NaController -Name "filer1" -Credential "root"&lt;/P&gt;&lt;P&gt;$vols = Get-NaVol&lt;/P&gt;&lt;P&gt;$vols | Format-Table -Property Name,FilesUsed,FilesTotal -AutoSize&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you also want the FilesAvailable, you can change the Format-Table line as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$vols | Format-Table -Property Name,FilesUsed,@{Label = "FilesAvailable"; Expression = {$_.FilesTotal - $_.FilesUsed}; Align = "Right"},"FilesTotal" -AutoSize&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To modify the maxfiles, use the Set-NaVolTotalFiles.&amp;nbsp; For example, to set the maxfiles to 2,000,000 on a volume named vol1, the command is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set-NaVolTotalFiles -Name "vol1" -TotalFiles 2000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Oct 2011 17:36:04 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74180#M3651</guid>
      <dc:creator>paleon</dc:creator>
      <dc:date>2011-10-28T17:36:04Z</dc:date>
    </item>
    <item>
      <title>PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74188#M3652</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks paleon, that was exactly what I was looking for.&amp;nbsp; I added % used as an additional column.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$filer1 = Connect-NaController -Name foo&lt;/P&gt;&lt;P&gt;$vols = Get-NaVol&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$vols | Format-Table -Property Name, FilesUsed, @{Label = "FilesAvailable"; Expression = {$_.FilesTotal - $_.FilesUsed}; Align = "Right"},@{Label = "%Used"; Expression = {$_.FilesUsed / $_.FilesTotal};FormatString="N2"},"FilesTotal" -AutoSize&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Nov 2011 21:04:59 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74188#M3652</guid>
      <dc:creator>thepunisher</dc:creator>
      <dc:date>2011-11-02T21:04:59Z</dc:date>
    </item>
    <item>
      <title>PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74192#M3653</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thepunisher,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm glad I could help.&amp;nbsp; If you will need the FilesAvailable and %Used values later in your script, you can add them as members of the objects.&amp;nbsp; If you would like to do that, here are some sample scripts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;foreach ($vol in $vols) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vol | Add-Member -MemberType "ScriptProperty" -Name "FilesAvailable"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -Value {$this.FilesTotal - $this.FilesUsed}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vol | Add-Member -MemberType "ScriptProperty" -Name "FilesUsedPercentage" -Value {[Int]($this.FilesUsed / $this.FilesTotal * 100)}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The [Int] casts the value of ($this.FilesUsed / $this.FilesTotal * 100) as an integer.&amp;nbsp; This will match the format of the PercentageUsed property on the VolumeInfo object.&amp;nbsp; From your script it looks like you want two (2) decimal places of precision in the percent field.&amp;nbsp; If you want that, the code will look something like this...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;foreach ($vol in $vols) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vol | Add-Member -MemberType "ScriptProperty" -Name "FilesAvailable"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -Value {$this.FilesTotal - $this.FilesUsed}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vol | Add-Member -MemberType "ScriptProperty" -Name "FilesUsedPercentage" -Value {($this.FilesUsed / $this.FilesTotal * 100).ToString("N2")}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;You may notice that the Format-Table cmdlet now aligns the FilesUsedPercentage to the left side of the column, but most of the other values are aligned to the right.&amp;nbsp; From what I can tell, this is because the value is now a String and not a number (Int, Float, etc.).&amp;nbsp; From my testing, when I cast the string as a Float -- which looked like this: -Value {[Float](($this.FilesUsed / $this.FilesTotal * 100).ToString("N2"))}, the value was aligned correctly, but it was displayed without any trailing zeros.&amp;nbsp; For example, 11.50 was displayed as 11.5.&amp;nbsp; I'll leave it to you to decide how you would like the data to be displayed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As a final note, please be aware that PowerShell uses Bankers' Rounding.&amp;nbsp; Bankers' Rounding is slightly different than the traditional rounding taught in mathematics classes and is designed to help reduce inaccuracy when working with large amounts of rounded numbers.&amp;nbsp; If you're interested, here is a blog article explaining Bankers' Rounding in VBScript.&amp;nbsp; &lt;A href="http://blogs.msdn.com/b/ericlippert/archive/2003/09/26/bankers-rounding.aspx" target="_blank"&gt;http://blogs.msdn.com/b/ericlippert/archive/2003/09/26/bankers-rounding.aspx&lt;/A&gt;.&amp;nbsp; From what I can tell, casting as an Int and using the .ToString() method both use Bankers' Rounding.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Bill&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Nov 2011 23:31:10 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74192#M3653</guid>
      <dc:creator>paleon</dc:creator>
      <dc:date>2011-11-02T23:31:10Z</dc:date>
    </item>
    <item>
      <title>PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74195#M3654</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like you've already got what you needed but in case it's useful I've been using the code below to run daily checks for volumes where maxfiles is becoming an issue. I include the function below in my Powershell profile then a single line of script can show me any volumes that need checking;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;connect-NaController &lt;EM&gt;yourcontroller &lt;/EM&gt;| get-NaMaxfiles -Percent 30&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it's helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;function Get-NaMaxfiles {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;#&lt;/P&gt;&lt;P&gt;.SYNOPSIS&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Find volumes where the maxfiles values is greater than a specified threshold (default 50%).&lt;/P&gt;&lt;P&gt;.DESCRIPTION&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Find volumes where the maxfiles values is greater than a specified threshold (default 50%).&lt;/P&gt;&lt;P&gt;.PARAMETER Controller&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetApp Controller to query (defaults to current controller if not specified).&lt;/P&gt;&lt;P&gt;.PARAMETER Percent&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filters the results to volumes when the %used files is greater than the number specified. Defaults to 50% if not specified.&lt;/P&gt;&lt;P&gt;.EXAMPLE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; connect-NaController zcgprsan1n1 | get-NaMaxfiles -Percent 30&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get all volumes on filer zcgprsan1n1 where the number of files used is greater than 30% of the max available&lt;/P&gt;&lt;P&gt;#&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [cmdletBinding()]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueFromPipeLine=$true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NetApp.Ontapi.Filer.NaController]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Controller=($CurrentNaController)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$false)]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [int]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Percent=50&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Begin {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check that a controller has been specified&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vols = Get-NaVol -controller $Controller | where {$_.FilesTotal -gt 0 -and ($_.FilesUsed/$_.FilesTotal)*100 -gt $Percent}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check that at least one volume exists on this controller&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($vols.Count -gt 0) {&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; foreach ($vol in $vols) {&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; #calculate the percentage of files used and add a field to the Volume object with the value&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; $filesPercent = [int]("{0:N2}" -f (($vol.FilesUsed/$vol.FilesTotal)*100))&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; add-member -inputobject $vol -membertype noteproperty -name Controller -value $Controller.Name&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; add-member -inputobject $vol -membertype noteproperty -name Used -value $filesPercent&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; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $vols | sort Used -descending | select Controller,Name,FilesUsed,FilesTotal,Used &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Nov 2011 08:56:07 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74195#M3654</guid>
      <dc:creator>egrigson1</dc:creator>
      <dc:date>2011-11-03T08:56:07Z</dc:date>
    </item>
    <item>
      <title>Re: PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74199#M3655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ed,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That is a very nicely coded function.&amp;nbsp; Thank you for sharing it.&amp;nbsp; If I may, I would suggest two changes.&lt;/P&gt;&lt;P&gt;1.&amp;nbsp; If a variable named $vols already exists and "Get-NaVol -controller $Controller | where {$_.FilesTotal -gt 0 -and ($_.FilesUsed/$_.FilesTotal)*100 -gt $Percent}" returns no value (either because the connection to $Controller fails or there are no volumes that meet the criteria), the prior value of $vols will be used in the foreach command.&amp;nbsp; (I've been burned by this on one of my regular reporting scripts.)&amp;nbsp; To address the connection error, I suggets using try/catch blocks.&amp;nbsp; To ensure that a null result from the Where-Object filter does not cause the Foreach-Object cmdlet to process an existing value of $vols from a higher scope, I recommend creating a $null valued instance of the variable within the function scope.&amp;nbsp; As a result, the "if ($vols.Count -gt 0) {" line should change to "if ($vols -ne $null) {".&amp;nbsp; (Technically speaking if $vols is $null then $vols.Count will also be $null, and ($null -gt 0) evaluates as $false, so the prior if statement will function correctly.)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The new code would look like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $exception = $null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&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; # create a null valued instance of $vol within the local scope&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; $vols = $null&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; $vols = Get-NaVol -controller $Controller -ErrorAction "Stop" | where {$_.FilesTotal -gt 0 -and ($_.FilesUsed/$_.FilesTotal)*100 -gt $Percent}&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; #check that at least one volume exists on this controller&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; if ($vols -ne $null) {&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; foreach ($vol in $vols) {&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; #calculate the percentage of files used and add a field to the Volume object with the value&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; $filesPercent = [int]("{0:N2}" -f (($vol.FilesUsed/$vol.FilesTotal)*100))&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; add-member -inputobject $vol -membertype noteproperty -name Controller -value $Controller.Name&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; add-member -inputobject $vol -membertype noteproperty -name Used -value $filesPercent&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; }&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; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $exception = $_&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($exception -eq $null) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $returnValue = ($vols | Sort-Object -Property "Used" -Descending | Select-Object -Property "Controller","Name","FilesUsed","FilesTotal","Used"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $returnValue = $exception&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $returnValue&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.&amp;nbsp; The line "$filesPercent = [int]("{0:N2}" -f (($vol.FilesUsed/$vol.FilesTotal)*100))" introduces a possible precision error.&amp;nbsp; The result is rounded twice -- first to the nearest hudredth and then to the nearest integer.&amp;nbsp; For example, if the number 11.496 is rounded to the nearest hundredth and then rounded to the nearest integer, the result is 12.&amp;nbsp; However, if 11.496 is rounded to the nearest integer, the result is 11.&amp;nbsp; Therefore, I suggest the following code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$filesPercent = [int](($vol.FilesUsed/$vol.FilesTotal)*100)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Bill&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Nov 2011 20:08:43 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74199#M3655</guid>
      <dc:creator>paleon</dc:creator>
      <dc:date>2011-11-03T20:08:43Z</dc:date>
    </item>
    <item>
      <title>Re: PowerShell commands for inodes</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74203#M3656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great suggestions, both added to my function. Thanks! &lt;SPAN __jive_emoticon_name="happy" __jive_macro_name="emoticon" class="jive_macro jive_emote" src="https://community.netapp.com/4.5.5/images/emoticons/happy.gif"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: I've changed the 'Used' value to '%FilesUsed' as there's now a Used attribute as standard on every volume (this function was written with Toolkit v1!).The final code is;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;function Get-NaMaxfiles {&lt;/P&gt;&lt;P&gt;&amp;lt;#&lt;/P&gt;&lt;P&gt;.SYNOPSIS&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Find volumes where the maxfiles values is greater than a specified threshold (default 50%).&lt;/P&gt;&lt;P&gt;.DESCRIPTION&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Find volumes where the maxfiles values is greater than a specified threshold (default 50%).&lt;/P&gt;&lt;P&gt;.PARAMETER Controller&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetApp Controller to query (defaults to current controller if not specified).&lt;/P&gt;&lt;P&gt;.PARAMETER Percent&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filters the results to volumes when the %used files is greater than the number specified. Defaults to 50% if not specified.&lt;/P&gt;&lt;P&gt;.EXAMPLE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; connect-NaController zcgprsan1n1 | get-NaMaxfiles -Percent 30&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get all volumes on filer zcgprsan1n1 where the number of files used is greater than 30% of the max available&lt;/P&gt;&lt;P&gt;#&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [cmdletBinding()]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Param(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$false,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueFromPipeLine=$true&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NetApp.Ontapi.Filer.NaController]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Controller=($CurrentNaController)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$false)]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [int]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Percent=50&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Begin {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check that a controller has been specified&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $exception = $null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&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; # create a null valued instance of $vol within the local scope&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; $vols = $null&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; $vols = Get-NaVol -controller $Controller -ErrorAction "Stop" | where {$_.FilesTotal -gt 0 -and ($_.FilesUsed/$_.FilesTotal)*100 -gt $Percent}&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; #check that at least one volume exists on this controller&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; if ($vols -ne $null) {&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; foreach ($vol in $vols) {&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; #calculate the percentage of files used and add a field to the Volume object with the value&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; $filesPercent = [int](($vol.FilesUsed/$vol.FilesTotal)*100)&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; add-member -inputobject $vol -membertype noteproperty -name Controller -value $Controller.Name&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; add-member -inputobject $vol -membertype noteproperty -name %FilesUsed -value $filesPercent&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; }&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; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch {&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; $exception = $_&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($exception -eq $null) {&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; $returnValue = ($vols | Sort-Object -Property "Used" -Descending | Select-Object -Property "Controller","Name","FilesUsed","FilesTotal","%FilesUsed")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&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; $returnValue = $exception&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $returnValue&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Nov 2011 12:45:22 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/PowerShell-commands-for-inodes/m-p/74203#M3656</guid>
      <dc:creator>egrigson1</dc:creator>
      <dc:date>2011-11-04T12:45:22Z</dc:date>
    </item>
  </channel>
</rss>

