Quantcast
Channel: VMware Communities: Message List
Viewing all articles
Browse latest Browse all 232869

Re: Who created the Snapshot

$
0
0

# - SnapReminder V1.0 By Virtu-Al - http://virtu-al.net

#

# Please use the below variables to define your settings before use

#

$smtpServer = "SMTPServerName"

$MailFrom = "EmailAddress"

$VISRV = "vCernterServer"

 

function Get-SnapshotExtra ($snap)

{

    $guestName = $snap.VM   # The name of the guest

 

    $tasknumber = 999       # Windowsize of the Task collector

 

    $taskMgr = Get-View TaskManager

 

    # Create hash table. Each entry is a create snapshot task

    $report = @{}

 

    $filter = New-Object VMware.Vim.TaskFilterSpec

    $filter.Time = New-Object VMware.Vim.TaskFilterSpecByTime

    $filter.Time.beginTime = (($snap.Created).AddSeconds(-5))

    $filter.Time.timeType = "startedTime"

    $filter.State = "success"

    $filter.Entity = New-Object VMware.Vim.TaskFilterSpecByEntity

    $filter.Entity.recursion = "self"

    $filter.Entity.entity = (Get-Vm-Name $snap.VM.Name).Extensiondata.MoRef

 

    $collectionImpl = Get-View ($taskMgr.CreateCollectorForTasks($filter))

 

    $dummy = $collectionImpl.RewindCollector

    $collection = $collectionImpl.ReadNextTasks($tasknumber)

    while($collection -ne $null){

        $collection | where {$_.DescriptionId -eq "VirtualMachine.createSnapshot" -and $_.State -eq "success" -and $_.EntityName -eq $guestName} | %{

            $row = New-Object PsObject

            $row | Add-Member-MemberType NoteProperty -Name User -Value $_.Reason.UserName

            $vm = Get-View $_.Entity

            $snapshot = Get-SnapshotTree $vm.Snapshot.RootSnapshotList $_.Result

            if ( $snapshot -ne $null)

            {

                $key = $_.EntityName + "&" + ($snapshot.CreateTime.ToLocalTime().ToString())

                $report[$key] = $row

            }

        }

        $collection = $collectionImpl.ReadNextTasks($tasknumber)

    }

    $collectionImpl.DestroyCollector()

 

    # Get the guest's snapshots and add the user

    $snapshotsExtra = $snap | % {

        $key = $_.vm.Name + "&" + ($_.Created.ToLocalTime().ToString())

        if($report.ContainsKey($key)){

            $_ | Add-Member-MemberType NoteProperty -Name Creator -Value $report[$key].User

            write-host $report[$key].User is creator of $key

 

        }

        $_

    }

    $snapshotsExtra

}

 

Function SnapMail ($Mailto, $snapshot)

{

      $msg = new-object Net.Mail.MailMessage

      $smtp = new-object Net.Mail.SmtpClient($smtpServer)

      $msg.From = $MailFrom

      $msg.To.Add($Mailto)

 

      $msg.Subject = "Snapshot Reminder"

 

$MailText = @"

This is a reminder that you have a snapshot active on $($snapshot.VM) which was taken on $($snapshot.Created).

 

Name: $($snapshot.Name)

 

Description: $($snapshot.Description)

"@

 

      $msg.Body = $MailText

      $smtp.Send($msg)

}

 

Connect-VIServer $VISRV

 

foreach ($snap in (Get-VM | Get-Snapshot | Where {$_.Created -lt ((Get-Date).AddDays(-14))})){

      $SnapshotInfo = Get-SnapshotExtra $snap

      $mailto = ((Find-User $SnapshotInfo.Creator).Properties.mail)

      SnapMail $mailto $SnapshotInfo

}


Viewing all articles
Browse latest Browse all 232869

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>