NetApp Community Update
This site will enter Read Only mode on July 23 as we prepare to move to a new platform. You will still be able to view content, but posting and replying will be temporarily disabled.
We're excited to launch our new Community experience on July 30 and more information will follow soon.
Stay connected during the transition - Join our Discord community today.

Microsoft Virtualization Discussions

Remove Snapshot by name

JGPSHNTAP
3,079 Views

In our environment we sometimes get stale SME snapshots that start with {. 

So here is a little powershell script that will loop through all the filers and remove it.

[Code]

### Mail "constants"

      $sendMailAs    = "x"

   $recipients    = "X"

       $subjectLine = "GUID LOG"

       $mailMessage = "GUID Report  The Attached Snapshots have been removed from the filers."

       $smtpServer = "X"

       $priority = "high"

### File Constants

    $date = (get-date).toString('dd-MMM-yyyy_h-mm-ss')

    $ext = ".log"

    $outfile = "Exchange_GUID__" + $date + $ext

    $delim = "`t"

Import-Module DataONTAP

$hostfile = "exchange.txt"

gc $hostFile |% {

    $nacontroller = Connect-NaController $_

    Get-NaVol | Get-NaSnapshot -SnapName "{*" | select TargetName,Name,Created,Total,CumulativeTotal | ft @{Expression={$nacontroller};Label="Filer name";Width=20},@{Expression={$_.TargetName};Label="Volume";Width=40},@{Expression={$_.Name};Label="Name";Width=40},@{Expression={$_.Created.ToShortDateString()};Label="Created";Width=12},@{Expression={ConvertTo-FormattedNumber $_.Total DataSize "0.0"};Label="Total";Width=10},@{Expression={ConvertTo-FormattedNumber $_.CumulativeTotal DataSize "0.0"};Label="Cumulative";Width=10} | Out-File -filepath $outfile -append

    get-navol | get-nasnapshot -snapname "{*" | where-object {$_.busy -like "*false*"} | remove-nasnapshot -confirm:$false

}

## Send Email

Send-MailMessage -To $recipients -From $sendMailAs -Attachments $outfile -Subject $subjectLine -Body $mailMessage -Priority $priority -SmtpServer $smtpServer

#####

[/code]

Now, i'm not sure its the best way to do this, but it works.    I wanted to ensure we weren't trying to delete busy snaps so I through in $_.busy -like "*false*".   I tried -eq "false" but it wouldn't return anything which was confusing to me .

Now remember i'm very new to powershell so any criticism is welcome.  I didn't know a good way to log in one line and then delete in another so, I had to run the cmdlet again.  Any suggestions for imporvement are welcome.

1 REPLY 1

cknight
3,079 Views

where-object { $_.busy -eq $false }

Public