Public/Get-MSPBackupSessionErrorList.ps1
Function Get-MSPBackupSessionErrorList { <# .Synopsis Get session errors of MSP Backup .Description Get session errors of MSP Backup. This function is a wrapper around the clienttool.exe file used to manage MSP Backups. It shows the session error list of a given backup type. .Parameter DataSource Datasource to show errors for. Possible values are BareMetalRestore, Exchange, FileSystem, MySql, NetworkShares, Oracle, SystemState, VMware, VirtualDisasterRecovery, VssHyperV, VssMsSql or VssSharePoint. .Parameter Limit Maximum number of items to return, default is 1 .Example Get-MSPBackupSessionErrorList -DataSource FileSystem This will show any errors of the last FileSystem backup-session .Link about_functions_advanced .Link about_CommonParameters #> [CmdletBinding()] Param( [Parameter( Mandatory = $True, HelpMessage = "Valid options are: 'BareMetalRestore', 'Exchange', 'FileSystem', 'MySql', 'NetworkShares', 'Oracle', 'SystemState', 'VMware', 'VirtualDisasterRecovery', 'VssHyperV', 'VssMsSql', 'VssSharePoint'" )] [ValidateSet('BareMetalRestore', 'Exchange', 'FileSystem', 'MySql', 'NetworkShares', 'Oracle', 'SystemState', 'VMware', 'VirtualDisasterRecovery', 'VssHyperV', 'VssMsSql', 'VssSharePoint')] [String]$DataSource, [Parameter()] [Int]$Limit = 1 ) Begin { If (-not $PSBoundParameters.ContainsKey('Verbose')) { $VerbosePreference = $PSCmdlet.SessionState.PSVariable.GetValue('VerbosePreference') } If (-not $PSBoundParameters.ContainsKey('ErrorAction')) { $ErrorActionPreference = $PSCmdlet.SessionState.PSVariable.GetValue('ErrorActionPreference') } Write-Verbose ('{0}:: Function started' -f $MyInvocation.MyCommand) Write-Verbose ('{0}:: ErrorAction={1} ErrorActionPreference={2}' -f $MyInvocation.MyCommand, $ErrorAction, $ErrorActionPreference) $stdOutTempFile = [System.IO.Path]::GetTempFileName() $stdErrTempFile = [System.IO.Path]::GetTempFileName() } Process { Write-Verbose ('{0}:: Collecting session errors for {1}' -f $MyInvocation.MyCommand, $DataSource) Foreach ($Source in $DataSource) { $SessionErrorList = & $Script:CmdPath -machine-readable control.session.error.list -limit $Limit -no-header -delimiter ';' -datasource $DataSource If ($null -ne $SessionErrorList) { $SessionErrorList = $SessionErrorList.Split(";") Write-Verbose ('{0}:: Generating session data for {1}' -f $MyInvocation.MyCommand, $DataSource) [array]$Hash += $(New-CustomPSObject "DateTime", "Path", "Content" "$($SessionErrorList[0])", "$($SessionErrorList[1])", "$($SessionErrorList[2])") } Else { Write-Verbose ('{0}:: No session data found for {1}' -f $MyInvocation.MyCommand, $DataSource) $Hash = $null } } } End { Write-Output $hash Write-Verbose ('{0}:: Function ended' -f $MyInvocation.MyCommand) } } |