Public/FarmDetails/Get-CitrixSingleServerPerformance.ps1
<#PSScriptInfo .VERSION 1.0.13 .GUID 28827783-e97e-432f-bf46-c01e8c3c8299 .AUTHOR Pierre Smit .COMPANYNAME iOCO Tech .COPYRIGHT .TAGS Citrix .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Created [05/05/2019_08:59] Updated [13/05/2019_04:40] Updated [22/05/2019_20:13] Updated [24/05/2019_19:25] Updated [06/06/2019_19:25] Updated [09/06/2019_09:18] Updated [15/06/2019_01:11] Updated [15/06/2019_13:59] Updated Reports Updated [01/07/2020_14:43] Script Fle Info was updated Updated [01/07/2020_15:42] Script Fle Info was updated Updated [01/07/2020_16:07] Script Fle Info was updated Updated [01/07/2020_16:13] Script Fle Info was updated Updated [06/03/2021_20:58] Script Fle Info was updated Updated [15/03/2021_23:28] Script Fle Info was updated #> <# .DESCRIPTION Function for Citrix XenDesktop HTML Health Check Report #> # .ExternalHelp XDHealthCheck-help.xml Function Get-CitrixSingleServerPerformance { [CmdletBinding()] PARAM( [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$Server, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [PSCredential]$RemoteCredentials) Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Starting] Performance Details for $($server.ToString())" Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Processing] Perfmon Details for $($server.ToString())" $perf = Invoke-Command -ComputerName $Server -ScriptBlock { $CtrList = @( "\Processor(_Total)\% Processor Time", "\memory\% committed bytes in use", "\LogicalDisk(C:)\% Free Space", "\LogicalDisk(D:)\% Free Space" ) Get-Counter $CtrList -ErrorAction SilentlyContinue | Select-Object -ExpandProperty CounterSamples } -Credential $RemoteCredentials Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Processing] Services Details for $($server.ToString())" $services = Invoke-Command -ComputerName $Server -ScriptBlock { Get-Service citrix* | Where-Object { ($_.starttype -eq "Automatic" -and $_.status -eq "Stopped") } } -Credential $RemoteCredentials if ([bool]$Services.DisplayName -eq $true) { $ServicesJoin = [String]::Join(';', $Services.DisplayName) } else { $ServicesJoin = '' } Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Processing] Uptime Details for $($server.ToString())" $OS = Invoke-Command -ComputerName $Server -ScriptBlock { Get-CimInstance Win32_OperatingSystem | Select-Object * } -Credential $RemoteCredentials $Uptime = (Get-Date) - ($OS.LastBootUpTime) $updays = [math]::Round($uptime.Days, 0) $CTXObject = New-Object PSCustomObject -Property @{ DateCollected = (Get-Date -Format dd-MM-yyyy_HH:mm).ToString() ServerName = $Server 'CPU %' = [Decimal]::Round(($perf[0].CookedValue), 2).tostring() 'Memory %' = [Decimal]::Round(($perf[1].CookedValue), 2).tostring() 'CDrive % Free' = [Decimal]::Round(($perf[2].CookedValue), 2).tostring() 'DDrive % Free' = [Decimal]::Round(($perf[3].CookedValue), 2).tostring() Uptime = $updays.tostring() 'Stopped Services' = $ServicesJoin } | Select-Object ServerName, 'CPU %', 'Memory %', 'CDrive % Free', 'DDrive % Free', Uptime, 'Stopped Services' $CTXObject Write-Verbose "$((Get-Date -Format HH:mm:ss).ToString()) [Ending] Performance Details for $($server.ToString())" } #end Function |