I have the following script. It was originally intended to send an email with teh results of the script. I need to change it from emailing the data to writing an event log entry that monitoring software can pick up instead.
Does anyone know how to create a log entry instead? I'm completely lost as to where to start with that.
Here is the script, I left out the part taht defines the variables as it isn't relevant....
$Snapshots = @()
$SnapDateTreshold = (Get-Date).AddHours(-1 * $SnapshotAge)
# Get all VMs with snapshots
ForEach ($Snap in (Get-View -ViewType VirtualMachine -Filter @{"Snapshot" = ""} | Get-VIObjectbyVIView | Get-Snapshot)) {
If ($Snap.Created -le $SnapDateTreshold) {
$ThisSnap = New-Object PSObject -Property @{
VM = $Snap.VM
Name = $Snap.Name
Description = $Snap.Description
CreateDate = $Snap.Created
SizeGB = [math]::Round($Snap.SizeGB, 2)
}
$Snapshots += $ThisSnap
}
}
If ($Snapshots.Length -gt 0) {
$HTMLHead = "<style>`nbody{font-family: Verdana, sans-serif;}`ntable{border-collapse:collapse;}`ntable,th,td{border: 1px solid black;padding: 5px;}`nth{color: #FFF; background-color: #A40000}`n</style>"
$HTMLTitle = "Snapshot Report for $VIServer"
$HTMLBody = "<h2>Snapshot Report for $VIServer</h2>`nThe following snapshots have been active for more than $SnapshotAge hours. Please verify if they are needed and remove them as soon as possible.<br/><br/>"
$EmailBody = "$($Snapshots | ConvertTo-Html -Head $HTMLHead -Title $HTMLTitle -Body $HTMLBody VM,Name,Description,CreateDate,SizeGB)"
Send-MailMessage -To $EmailTo -From $EmailFrom -Subject $EmailSubject -Body $EmailBody -SmtpServer $EmailServer -BodyAsHtml
} else {
Write-Host "No snapshots older than $SnapshotAge hours found"
}