This fucntion allows you to list the information of backups of each database on all servers.
System databases are not listed, but is easily changed by taking the property $ _.IsSystemObject.

It was created thinking of the characteristic consistency, that is, it simply returns you to backup information. The filters you apply the pipe.
It has a logging mechanism that sends information to a file, which if not passed the path it will use the C:\ temp. If you want to change, please put the path on each call Save-SQLMsg "Get-SQLBackup" "$svr" $databasename "$msg" "Seupath"
 

Examples of use are commented in the code.

If you only want the current server, do not pass anything as a parameter. If you want multiple servers, create one .Txt file and put the names on it. Something like:
Server1
Server2\Instance

You can automate powershell for a job, CmdExec or windows task scheduler.

PowerShell
Edit|Remove
Function Save-SQLMsg () 
<#
----------------------------------------------------------
Save  log in file
----------------------------------------------------------
Requires POWERSHELL 2.0

File Name     			= $NamePS1
Server name   			= $Server 
DatabaseName 			= $databasename
Message To Log		    = $Message
Path to generate file 	= $PathFileLog 
Date to Log				= $TodayDate
#>


{

	[CmdletBinding()]
	
	Param (
		[Parameter(position=1,Mandatory = $true )][String] $NamePS1,
		[Parameter(position=2,Mandatory = $true )][String] $Server,
		[Parameter(position=3,Mandatory = $false )][String] $DatabaseName = "",
		[Parameter(position=4,Mandatory = $false )][String] $Message = $error[0],
		[Parameter(position=5,Mandatory = $false )][String] $PathFileLog = "C:\temp1",
		[Parameter(position=6,Mandatory = $false )][String] $TodayDate = (Get-Date -Format "yyyyMMddhhmmss")
		)
	process 
	{
	
		#test if path wich will contains the error file exists. if not create 
	
	if (!(Test-Path -path $PathFileLog))
	{
		try {
			New-Item $PathFileLog -itemtype directory -ErrorAction  Stop   | Out-Null
		}
		catch {
			Write-Host "Can not create log file path"
			break;
		}
	} 
	
	
	$NameFileFull = $PathFileLog + "\" + $NamePS1 + $TodayDate + ".log" 
	
	$TDate = $TodayDate.Substring(0,4) + "-" + $TodayDate.Substring(4,2) + "-" + $TodayDate.Substring(6,2) 
	
	"Server : " + $Server + " Database : " + $DatabaseName + " Date : "  + $TDate + " Message: "  + $Message | Out-file  $NameFileFull -append 
	} 
}

Function Get-SQLBackup () 
{

<#
----------------------------------------------------------
Get all backup information
----------------------------------------------------------
Requires POWERSHELL 2.0

$TXTServersList         = Txt with servers to be checked - Default server


#>
	[CmdletBinding()]
	
	PARAM	(
				[Parameter(position=1,Mandatory=$false, ValueFromPipelineByPropertyName=$true,HelpMessage="File Servers List")]
				[Alias("FullNameTXT")]
				[String] $TXTServersList = $env:COMPUTERNAME
				
			)

	begin 
	{
		[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null 
	}
	Process
	{
	
		$verbosePreference="continue" 
		[datetime] $TodayDate = get-date -Format "yyyy/MM/dd hh:mm:ss"
		if ($TXTServersList.substring($TXTServersList.length -4,4) -eq ".TXT")
		{
			try
			{
				$ServersList = get-content $TXTServersList	
			} catch {
						$msg = $error[0]
						Write-Warning $msg
						break;
			}
		}	
		else
		{
			$ServersList = $TXTServersList
		}	
		
		
		$LineNumber = 1
		$FinalResult = @()
	
		foreach ($svr in  $ServersList )
		{
			try 
			{
				$DatabaseName = ""
				$Server=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr"
				$Data = $Server.Databases| where-object {$_.IsSystemObject -eq $FALSE -and
				$_.IsAccessible -eq $TRUE } | foreach {

		
					$Object = New-Object PSObject

					[datetime] $LastBackupDate 			= "{0:yyyy/MM/dd hh:mm:ss}"	-f  [datetime] $_.LastBackupDate  
					[datetime]$LastDifferentialBackupDate = "{0:yyyy/MM/dd hh:mm:ss}" -f  [datetime] $_.LastDifferentialBackupDate  
					[datetime]$LastLogBackupDate 			= "{0:yyyy/MM/dd hh:mm:ss}"	-f  [datetime] $_.LastLogBackupDate
					[String] $DatabaseName = $_.name


					$Object | add-member Noteproperty LineNumber  					$LineNumber 	
					$Object | add-member Noteproperty Date  						$TodayDate 	
					$Object | add-member Noteproperty ServerName  					$svr
					$Object | add-member Noteproperty DatabaseName 					$DatabaseName 					
					$Object | add-member Noteproperty LastBackupDate 				$LastBackupDate
					$Object | add-member Noteproperty LastDifferentialBackupDate 	$LastDifferentialBackupDate
					$Object | add-member Noteproperty LastLogBackupDate 			$LastLogBackupDate

					$FinalResult += $Object
					$LineNumber ++ 
					
				}                
			
			}   catch	{ 
					$msg = $error[0]
					Write-Warning $msg
					Save-SQLMsg "Get-SQLBackup" "$svr" "$DatabaseName" "$msg" 
					continue
			} 
		}	
		
		Write-Output $FinalResult				
	}
}
#list all default server
#Get-SQLBackup 

#list all using txt
#Get-SQLBackup "C:\TEMP\Servers.txt"


# list all databases without backup for 1 day
#Get-SQLBackup "C:\TEMP\servers1.txt" | where-Object {( (get-Date) - ($_.LastBackupDate)).days -gt 1}  | 
#Select LineNumber,Date,ServerName,DatabaseName,LastBackupDate,LastDifferentialBackupDate,LastLogBackupDate | Format-Table

# list all databases backup information and stored sql table
#create table (BackupsXML XML)
#(Get-SQLBackup "C:\TEMP\servers.txt" | Select LineNumber,Date,ServerName,DatabaseName,LastBackupDate,LastDifferentialBackupDate,LastLogBackupDate | ConvertTo-Xml -NoTypeInformation).save("c:\temp\Backups.xml") 
#$XML = (Get-Content "C:\Temp\Backups.xml" ) -replace "'", "''"
#$SQL = "insert into BackupsXML (XMLCol) values ('$XML')" 
#invoke-sqlcmd -ServerInstance $env:COMPUTERNAME -database "tempdb" -query $sql

# TSQL to list with servername  condition = "Jupiter"
#Select t2.Col1.value('(Property[@Name="LineNumber"]/text())[1]', 'int') LineNumber,
#    t2.Col1.value('(Property[@Name="Date"]/text())[1]', 'nvarchar(255)') Date,
#    t2.Col1.value('(Property[@Name="ServerName"]/text())[1]', 'nvarchar(max)') ServerName,
#    t2.Col1.value('(Property[@Name="DatabaseName"]/text())[1]', 'nvarchar(255)') DatabaseName,
#    t2.Col1.value('(Property[@Name="LastBackupDate"]/text())[1]', 'nvarchar(255)') LastBackupDate
#FROM dbo.BackupsXML
#CROSS APPLY xmlcol.nodes('/Objects/Object') As t2(Col1)
#where t2.Col1.value('(Property[@Name="ServerName"]/text())[1]', 'nvarchar(max)') = 'Jupiter'