Software Development Kit (SDK) and API Discussions

Trying to figure out how to get properties of properties


When I look at get-ncvol | gm, I see the primary properties, then  I see what I presume are object-properties.

i.e. get-ncvol | gm I see a few Property's, but then I see Property's flagged as (DataONTAP.C.Type.Volume...)

I'd like to get the information on these, for example the volumeSisAttributes;  if I run (get-ncvol).volumeSisAttributes | gm I see the list of additional SIS data I'd like to pull.  But I am unsure how to do that.  I don't really understand what kind of properties these sub-servient properties are, or how to get them via a PS get-ncvol structure.


Can anyone help?






@Tas wrote:

if I run (get-ncvol).volumeSisAttributes | gm I see the list of additional SIS data I'd like to pull.  But I am unsure how to do that.

You're looking to select custom properties.  This should get you in the right direction...

Get-NcVol -Name vol1 | Select-Object -Property Name,State,TotalSize,used,Available,Dedupe,@{n="PercentSpaceSaved";e={$_.VolumeSisAttributes.PercentageTotalSpaceSaved}}

To include the ConvertTo-FormattedNumber scriplet you referenced and a pretty percent sign...

Get-NcVol -Name vol1 | Select-Object -Property Name,State,@{n="TotalSize";e={try { ConvertTo-FormattedNumber $_.TotalSize DataSize "0.0" } catch [Exception] { $null }}},@{n="Used";e={try { ConvertTo-FormattedNumber $_.Used Percent } catch [Exception] { $null }}},@{n="Available";e={try { ConvertTo-FormattedNumber $_.Available DataSize "0.0" } catch [Exception] { $null }}},@{n="PercentSpaceSaved";e={ConvertTo-FormattedNumber $_.VolumeSisAttributes.PercentageTotalSpaceSaved Percent}}

Here is a primer on using Select-Object to view custom properties


Thanks @Semicolon;  I will try out your suggestions.  I've been deperately looking for something like this.



Hi Tas,


Not sure i've understood what you are trying to achiving but i hope this helps and makes sense.



Import-Module DataONTAP
Connect-NcController -Name cluster1 -HTTPS -Credential $(Get-Credential)
$volume = Get-NcVol -Name volume1 -Vserver vserver1
If you invoke "$volume | fl" and pipe it to format-list you will see the volumes properties and sub object types. 
EG: DataONTAP.C.Types.Volume.VolumeSisAttributes
If you invoke the sub object type and pipe it to format-list you can enumerate the property names of the sub object.
EG: "$volume.VolumeSisAttributes | fl"
You can then access the volumes sub object property values by name.
EG: "$volume.VolumeSisAttributes.IsSisVolume"



If this post resolved your issue, help others by selecting ACCEPT AS SOLUTION or adding a KUDO.




Thanks.  I was trying to figure out the 'sub-object' (sub-properties?).  I still don't understand what a sub-object is.  What I was trying to do, is to get a listing of a certain set of volumes with the percentagetotalspacesaved for each, in a one-liner.

I think I may have to assign the volume properties to a variable and run via a foreach on each one to get the actual properties and sub-properties I need;  Oh and of course I need to pass them through the 'convertto-formattednumber' scriplet.



NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner