Quick post on how to get netbackup information back using BPList and splitting the image information to powershell objects. You can get more information from BPList using the –l argument such as size, account, etc… but I’ve just not coded that up yet. The parameters for this default to the last 24 hours. Use at your own risk.
function Get-SqlNetBackups{ param( [Parameter(Mandatory=$true, ValueFromPipeline=$true)] [string]$ServerName, [Parameter(Mandatory=$false, ValueFromPipeline=$false)] [DateTime]$Start = (get-date).AddDays(-1), [Parameter(Mandatory=$false, ValueFromPipeline=$false)] [DateTime]$End = (Get-Date) ) #HKEY_LOCAL_MACHINE\SOFTWARE\VERITAS\NetBackup\CurrentVersion $installDir = Get-ItemProperty "HKLM:\SOFTWARE\VERITAS\NetBackup\CurrentVersion" | select -expandproperty INSTALLDIR if($installDir -eq $null){ throw "Netbackup is not installed." } $bpList = "$installDir\NetBackup\bin\bplist.exe" if(!(Test-Path $bpList -PathType Leaf)){ throw "BPList was not found at $bpList. This cmdlet uses (abuses) BPList to " } #Push-Location sl "$([System.IO.Path]::GetDirectoryName($bpList))" $objects = @(); try{ $fStart = $Start.ToString("MM/dd/yyyy") $fEnd = $End.ToString("MM/dd/yyyy") $type = "" $ErrorActionPreference = "stop"; <# -l to show file details, the following is the format with -l. We can get the size and account, which is nice. When I find the time I'll implement... -rw------- SQLAcctSe SQLAcctSe 2949120 Mar 02 00:04 SEAPR1DB0051.MSSQL7.SEAPR1DB0051.trx.p0013510cd7b_620.~.7.001of001.20160302000354..C:\ -rw------- SQLAcctSe SQLAcctSe 0 Mar 02 00:04 SEAPR1DB0051.MSSQL7.SEAPR1DB0051.trx.p0013510cd7b_620.~.7.001of001.20160302000354..C:\ -rw------- SQLAcctSe SQLAcctSe 0 Mar 02 00:04 SEAPR1DB0051.MSSQL7.SEAPR1DB0051.trx.p0013510cd7b_620.~.7.001of001.20160302000354..C:\ -rw------- SQLAcctSe SQLAcctSe 0 Mar 02 00:04 SEAPR1DB0051.MSSQL7.SEAPR1DB0051.trx.p0013510cd7b_620.~.7.001of001.20160302000354..C:\ -rw------- SQLAcctSe SQLAcctSe 0 Mar 02 00:04 SEAPR1DB0051.MSSQL7.SEAPR1DB0051.trx.p0013510cd7b_620.~.7.001of001.20160302000354..C:\ #> $list = .\bplist -C $ServerName -t 15 -S seaveritas247 -s $fStart -e $fEnd -R \ $fmtString = "yyyyMMddHHmmss" $list -split "`r`n" | select -Unique | %{ $backupType = "" $arr = $_.Split("."); #the image string... switch($arr[3]){ #0-based, so 4th item 1-based...used to tell the backup type... "db"{ $backupType = "Full" } "trx"{ $backupType = "TranLog" } "inc"{ $backupType = "Diff" } default{ $backupType = "Other" } } $objects += [PSCustomObject]@{ ServerName = $arr[0] DatabaseName = $arr[4] Date = [DateTime]::ParseExact($arr[8], $fmtString, $null) Type = $backupType Image = $_ } } $objects; } catch{ $_ | fl -Force } }