Retrieving Last Backup from VMware and Updating them into SolarWinds.

Based on a reply from @jm_Sysadmin in another thread I decided to see if I could this working for me and made some amendments along the way.  This has been working great for me.  Hopefully it can help someone else.

It requires a Custom Property called: "LastBackedUp"

Also, using the below to store your credentials securely.

Get-Credential | Export-CliXml -Path "C:\Scripts\Credentials\SolarWinds-Credential.xml"
Get-Credential | Export-CliXml -Path "C:\Scripts\Credentials\VCentre-Credential.xml"


$SwisServer = 'SolarWindsServer'
$SWIScreds = Import-CliXml -Path "C:\Scripts\Credentials\SolarWinds-Credential.xml"

$swis = Connect-Swis $SwisServer -Credential $SWISCreds

$Nodes = Get-SwisData -SwisConnection $swis -Query "SELECT NodeID, DisplayName FROM Orion.Nodes"

$VCenterCred = Import-CliXml -Path "C:\Scripts\Credentials\VCentre-Credential.xml"
$VCenter = 'VCentreServer'

Connect-VIServer $VCenter -Credential $VCenterCred

$DateFormat = "dd/MM/yyyy HH:mm:ss"
$SolarWindsDateFormat = "M/d/yyyy h:mm tt"

$Results = @{}

foreach ($VM in $VMs)
{
    $VMNotes = $VM | Get-Annotation -Name "Last Backup"
    if ($VMNotes.Value) {
        $node = $Nodes | Where-Object { $_.DisplayName -eq $VM.Name }
        if ($node) {
            $LastBackupTime = [DateTime]::ParseExact($VMNotes.Value, $DateFormat, $null).ToString($SolarWindsDateFormat)
            $Uri = "swis://localhost/Orion/Orion.Nodes/NodeID=$($node.NodeID)/CustomProperties"
            $CustomProps = @{ LastBackedup = $LastBackupTime }
            Set-SwisObject -SwisConnection $swis -Uri $Uri -Properties $CustomProps
            Write-Host "Updating Orion Node: $($node.DisplayName)" -ForegroundColor Green
        }
    }
}


You can add a scheduled task to run each morning using the below.  Make sure to run the schedule as the user who stored the credentials earlier else it will fail to pull them as credentials can only be accessed by the user who created them.

$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File 'C:\Scripts\ScheduledScripts\Update-SolarWindsLastBackup.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "9:00 AM"
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd
$principal = New-ScheduledTaskPrincipal -UserId "DOMAIN\User" 

Register-ScheduledTask -TaskName "Update-SolarWindsLastBackedUp" -Action $action -Trigger $trigger -Settings $settings -Principal $principal

Parents Reply
  • Thanks .  I could not get your version to update the last backup field, most likely different time formats so started writing fresh using yours as a base, thanks for that.  Filtered out entries without a value returned and did a Where as we don't monitor everything in SolarWinds on the VCentre. Took me a while to get the date conversion right, that was annoying :P

Children
No Data