Microsoft Virtualization Discussions

Time values represented as integers

benjstarratt

First...great initial release of a powershell interface.  I have been pestering my NetApp team for one for the last year.  As I have started playing with it, I have noticed some things that are difficult to use.  As an example, the get-nasnapshot command's accesstime property has a type of System.Int64.  A date time value would have been much easier to work with.  I end up using code that looks ike this:

Get-NaVol myvolume | Get-NaSnapshot | select Name, @{Name="AccessTime"; Expression = {([datetime]"1/1/1970").AddSeconds($_.AccessTime).ToLocalTime()}}

Additionally, the NetApp.Ontapi.Filer.Snapshot.SnapshotInfo object doesn't relate back to a volume.  I would love to use a simple expression to find all snapshots older than 7 days on a filer (something that wsa easily doable using the CodePlex PoshOnTap project):

get-navol | get-nasnapshot | where-object {$_.AccessTime -lt (Get-Date).AddDays(-7)}) | sort AccessTime

Are there plans to release a v2 with more nice-to-haves?  Am I misunderstanding the best way to accomplish some of these tasks?

1 ACCEPTED SOLUTION

fjohn

Hi Ben,

Thanks for your feedback.

Ah the joy of converting between Windows & Unix time and vica versa.  Yes it would be nice to a couple of time conversion functions.

The NetApp.Ontapi.Filer.Snapshot.SnapshotInfo object doesn't relate specifically to a volume by can be used for an aggregate snapshot as well.  Perhaps "ParentObjectName" that you could alias or something?  In the meantime, you might try piping the output of get-navol to a foreach, and in the foreach do you where clause...

J

View solution in original post

3 REPLIES 3

fjohn

Hi Ben,

Thanks for your feedback.

Ah the joy of converting between Windows & Unix time and vica versa.  Yes it would be nice to a couple of time conversion functions.

The NetApp.Ontapi.Filer.Snapshot.SnapshotInfo object doesn't relate specifically to a volume by can be used for an aggregate snapshot as well.  Perhaps "ParentObjectName" that you could alias or something?  In the meantime, you might try piping the output of get-navol to a foreach, and in the foreach do you where clause...

J

View solution in original post

fjohn

Hi Ben

Here you go:

get-navol | foreach-object {$ParentName=$_.Name;get-nasnapshot $_.Name | add-member -membertype noteproperty -name ParentName -value $ParentName -passthru} | select ParentName
,Name,@{Name="AccessTime";Expression={[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($_.AccessTime))}}

Displays:

ParentName                                                   Name                                                         AccessTime
----------                                                   ----                                                         ----------
vol0                                                         nightly.0                                                    6/9/2010 10:00:31 PM
vol0                                                         hourly.0                                                     6/9/2010 6:00:31 PM
vol0                                                         hourly.1                                                     6/9/2010 2:00:31 PM
vol0                                                         hourly.2                                                     6/9/2010 10:00:30 AM
vol0                                                         hourly.3                                                     6/9/2010 6:00:31 AM
vol0                                                         nightly.1                                                    6/8/2010 10:00:32 PM
vol0                                                         hourly.4                                                     6/8/2010 6:00:31 PM
vol0                                                         hourly.5                                                     6/8/2010 2:00:31 PM

I just add the property "ParentName" to each object output by get-nasnapshot, then add that property in my list of stuff to display with select.  Could it be better?  Probably; but for now it works.

Happy Scripting

J


cknight

Ben, I've just posted Toolkit version 1.0.1 which adds a ConvertTo-DateTime cmdlet.  It's not as nice as having all the cmdlets return DateTime values, but for the time being it's a slight improvement on the solution above:

C:\PS> Get-NaSnapshot vol0 | ft Name,@{Name="AccessTime";Expression={ConvertTo-DateTime $_.AccessTime}}


    Name                                    AccessTime
    ----                                    ----------
    weekly.0                                6/14/2010 4:00:32 AM
    benson(0118045471)_vol0_svq-src.0       6/3/2010 9:14:47 PM
    hourly.0                                2/12/2009 12:00:16 PM
    hourly.1                                2/12/2009 8:00:15 AM
    nightly.0                               2/12/2009 12:00:16 AM
    hourly.2                                2/11/2009 8:00:16 PM
    hourly.3                                2/11/2009 4:00:16 PM
    hourly.4                                2/11/2009 12:00:16 PM
    hourly.5                                2/11/2009 8:00:16 AM
    nightly.1                               2/11/2009 12:00:31 AM
Announcements
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
Public