Since we released ControlUp 4.1 we have received a lot of feedback regarding the Logon Duration monitoring feature.
One of the main requests was to better explain our "Logon Duration - Other" component (which included any delay not caused by Profile, GPO or the Desktop component) and provide an easy way to find the culprit for slow logons.
Based on this feedback we decided to write a PowerShell script that will enable any Citrix and Windows admin to troubleshoot a slow logon process without requiring any 3rd party tools. The same script can also be executed through the ControlUp Script-based Actions feature.
This post will describe how the script works, the major logon phases it covers, the script prerequisites and a short video showing how the script helps troubleshooting two slow logon scenarios.
Analyze_Logon_Duration.ps1 is a PowerShell script that displays all major sequential phases of the logon process and makes it easy to see which phase is slowing down the user logon. It is also possible to see if there is a delay between the end of one phase and the start of the next one.
Here is a screenshot of the script output showing the logon duration analysis for a user called cuupm logging on to a XenApp server:
Some notes on the script output:
- Logon Time - based on the most recent logon event found in the security log for the specified user (Event ID 4624 with logon type 2, 10 or 11)
- Logon Duration - calculation of the login time and the end time of the last logon phase (in this example - 10:15:47 - 10:16:57)
- Interim Delay - between the end of the previous phase and the start of the current phase (in this example there was a delay of 1.7 seconds between the end of the Network Providers phase and the start of the Citrix Profile Management phase)
- GP Scripts - output will show if Group Policy scripts were executed in synchronous or asynchronous mode
Script Download Link
The following table summarizes the logon phases the script covers and the Windows events used for calculating the start and end time for each phase:
The following are the script prerequisites:
- Enable the auditing of process tracking via GPO or local security policy (secpol.msc) on all relevant computers. This is required since some of the phases start and end events are determined by the creation or termination of a specific process.
Note - one customer encountered an issue where enabling auditing via a GPO didn't apply to the target computers. The fix is described here – Microsoft KB921468.
Perform the following steps to execute the script via PowerShell:
- Import the script to the shell using the 'Import-Module' function.
For example. "Import-Module C:\Scripts\LogonDuration\Analyze_Logon_Duration.ps1"
- After importing the module you can call the Get-LogonDurationAnalysis function from the shell, the function requires 2 parameters:
- -UserName: <The name of the user we want to examine>
- -UserDomain: <The name of the domain the user is member of>
- Example - "Get-LogonDurationAnalysis -Username cudemo -UserDomain ControlUp"
- If multiple sessions exist for the same user on the same computer, the script will show data relevant for the most recent user session.
- Group Policy events are not generated if a previous session is still running for the same user account.
Analyze_Logon_Duration.ps1 (download link)
The following video demo shows how the Analyze Logon Duration PowerShell script helps identify the root cause of a slow logon for two user sessions:
With a bird's-eye-view of your VDI environment, hypervisors to individual processes, ControlUp provides performance visibility and end-user experience metrics to easily detect, troubleshoot and remediate issues in real-time and within context. Proactively apply best practices through ControlUp Insights to measure system health and give you definitive answers for everyday IT questions.
Learn more about ControlUp in this Citrix Ready blog post: ControlUp 4.0 - New XenServer/vSphere Support and Enhanced IOPS Troubleshooting. Get a free 30-day trial - www.controlup.com.