Microsoft Virtualization Discussions

Happy New Year - "Get-NaSnapshot... | -last 1" returns Dec and not Jan


The powershell script I use to update my snapvault has stopped working.  A brief investigation shows that the snapshot name selection process has failed.

I use the commandlet

$smeEXsnap = Get-NaSnapshot exdb1 exchsnap__* | select-object Name -last 1

it retuns "exchsnap__exmbx1_12-31-2011_23.40.13__daily"

Snaps on filer

SAN> snap list -n exdb1

Volume exdb1


date          name

------------  --------

Jan 02 23:43  exchsnap__exmbx1_01-02-2012_23.40.13__daily

Jan 02 00:01  exchsnap__exmbx1_01-01-2012_23.40.14__daily

Jan 01 00:11  exchsnap__exmbx1_12-31-2011_23.40.13__daily (snapvault)

Dec 30 23:42  exchsnap__exmbx1_12-30-2011_23.40.13__daily

The work around is simple in that I can manually run my script with the snapshot name to update the snapvaults and then remove the snapshots from last year.  But I would like to know if this is a 'bug' in the commandlet or I need to change my code so that 'last' also takes in the year value.



PS - Happy new year all


Re: Happy New Year - "Get-NaSnapshot... | -last 1" returns Dec and not Jan


I am also getting this trouble since I can not include in the year value into result list? Is there any solution to solve that?


Re: Happy New Year - "Get-NaSnapshot... | -last 1" returns Dec and not Jan


You have to sort the results by date and then select last 1.

Get-NaSnapshot volname | Sort-Object Created | Select-Object -last 1



Re: Happy New Year - "Get-NaSnapshot... | -last 1" returns Dec and not Jan


This bug bit me too, because I have scripts that automatically mount snapshots and do some processing for a SQL process I've created. Once the December backups were gone, it started working again. Fortunately, I'd fixed the problem by then.

"Sort-Object Created" will not work. "Created" is not the actual field name for the date the snapshot was created, even though it's column display name is "Created".

I work around the sorting problem by doing this...

get-nasnapshot -Name volname | Where { $_.Name -like "sqlsnap*" } | Sort-Object AccessTime,Name -descending | Select -Last 1

This will get me any snapshot named "sqlsnap*", so I'm filtering out the automatic snapshots for my snapmirror process, etc.. Then I sort the object from most recent to least recent by the date the snapshot was created and the name of the snapshot. The name is just in there as a safety measure, I guess. There's little chance that two snapshots could have the same exact creation time.

Earn Rewards for Your Review!
GPI Review Banner
All Community Forums