Public/Get-HorizonFailedSessions.ps1
|
#Requires -Version 5.1 Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' function Get-HorizonFailedSessions { [CmdletBinding()] [OutputType('Enterprise.Horizon.FailedSession')] param( [string]$UserName, [string]$MachineName ) begin { Write-HorizonLog -Message 'Starting Get-HorizonFailedSessions.' -Level Information } process { $parameters = @{ State = 'ERROR' } if ($PSBoundParameters.ContainsKey('UserName')) { $parameters.UserName = $UserName } if ($PSBoundParameters.ContainsKey('MachineName')) { $parameters.MachineName = $MachineName } $sessions = @(Get-HorizonSessions @parameters) $failedSessions = @( foreach ($session in $sessions) { [PSCustomObject]@{ PSTypeName = 'Enterprise.Horizon.FailedSession' SessionId = $session.SessionId UserName = $session.UserName MachineName = $session.MachineName MachineDNS = $session.MachineDNS DesktopPool = $session.DesktopPool SessionState = $session.SessionState StartTime = $session.StartTime DisconnectTime = $session.DisconnectTime DurationMinutes = $session.DurationMinutes ClientName = $session.ClientName ClientAddress = $session.ClientAddress FailureCategory = 'Horizon session state is ERROR' } } ) Write-HorizonLog -Message "$($failedSessions.Count) failed session(s) found." -Level Information return $failedSessions } end { Write-HorizonLog -Message 'Get-HorizonFailedSessions completed successfully.' -Level Information } } |