vCenter Snapshot prüfen und Report als Mail senden
Viele große Unternehmen und Firmen nutzen das vCenter von VMware. Von den Virtuellen Maschinen werden Snapshot erstellt. Wer aber viele VMs hat, also eine große Umgebung der verliert schnell den Überblick. Was kann man also tun? vCenter Snapshot prüfen! Diese kann man sich per Aufgabenplanung 1x im Monat per Mail zusenden lassen 🙂
Snapin das dringend benötigt wird:
“C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Modules”
vCenter snapshot prüfen:
Mit folgendem PowerShell Script überprüft ihr auf Snapshots im vCenter. Diese Übersicht wird dann per Mail an euch verschickt.
# PowerShell script to check for VM snapshots and send Email report $esxhost = 'esxserver.your.domain' add-pssnapin VMware.VimAutomation.Core Connect-VIServer -Server $esxhost # HTML formatting $a = "<style>" $a = $a + "BODY{background-color:white;}" $a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}" $a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: black;foreground-color: black;background-color: LightBlue}" $a = $a + "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: black;foreground-color: black;background-color: white}" $a = $a + "</style>" # Main section of check Write-Host "Checking VMs for for snapshots" # Get list of VMs with snapshots # Note: It may take some time for the Get-VM cmdlet to enumerate VMs in larger environments $ss = Get-vm | Get-Snapshot if(!$ss) {exit} #$ss | Select-Object vm, name, description, powerstate | ConvertTo-HTML -head $a -body "<H2>VM Snapshot Report $esxhost</H2>"| Out-File $filename $body = $ss | Select-Object vm, name, description | ConvertTo-HTML -head $a -body "<H2>VM Snapshot Report $esxhost</H2>" # Create mail message $server = "10.10.10.10" $port = 25 $to = "[email protected]" $from = "[email protected]" $subject = "VM Snapshot Report $esxhost" $message = New-Object system.net.mail.MailMessage $from, $to, $subject, $body # Create SMTP client $client = New-Object system.Net.Mail.SmtpClient $server, $port # Credentials are necessary if the server requires the client # to authenticate before it will send e-mail on the client's behalf. $client.Credentials = [system.Net.CredentialCache]::DefaultNetworkCredentials # Try to send the message try { # Convert body to HTML $message.IsBodyHTML = $true # Uncomment these lines if you want to attach the html file to the email message # $attachment = new-object Net.Mail.Attachment($filename) # $message.attachments.add($attachment) # Send message $client.Send($message) "Message sent successfully" } #Catch error catch { "Exception caught in CreateTestMessage1(): " }
Nach dem Ausführen des Scripts wird euch eine Mail mit dem Report der VM Snapshot gesendet.
🙂