使用脚本化任务分析登录持续时间

Last published : Nov 13, 2026
登录时间过长会降低用户生产力并导致糟糕的用户体验。作为管理员,您可能希望详细了解登录时间,以识别导致登录缓慢的进程,从而可以相应地采取补救措施。
为实现此目标,您可以使用脚本 analyzeLogonDuration.ps1。它是一个 PowerShell 脚本,用于查询事件日志中与登录过程相关的每个主要事件。该脚本提供以下优点及更多功能:
  • 它为您提供用户最近一次登录的登录持续时间细分。
  • 它显示登录过程的所有主要顺序阶段,并使您能够轻松查看哪个阶段正在减慢登录速度。
  • 它允许您检查一个阶段结束和下一个阶段开始之间是否存在延迟。
要查看更多优点,请访问 <https://www.controlup.com/script-library-posts/analyze-logon-duration/>。
Workspace Environment Management™ (WEM) 为您提供脚本化任务功能,可自动为您运行脚本。您只需配置一个脚本化任务。一般工作流程如下:
  1. 准备相关脚本。
  2. 当脚本化任务被授予完全访问权限时,脚本签名是强制性的。
  3. 添加脚本化任务。
  4. 配置脚本化任务。
  5. 查看任务执行报告。

准备相关脚本

准备一个包含以下两个脚本的 zip 文件:
包含脚本的 Zip 文件(/en-us/workspace-environment-management/service/media/1-relevant-scripts.png)
  • analyzeLogonDuration.ps1。您可以从 <https://www.controlup.com/script-library-posts/analyze-logon-duration/> 获取此脚本。
  • runLogonDuration.ps1。由于登录持续时间脚本需要域名和用户名,我们提供了一个包装脚本来将域名和用户名传递给它。例如,我们提供了一种在服务帐户下获取域名和用户名的方法。但是,此包装脚本需要一个用户会话。
在此示例中,脚本 runLogonDuration.ps1 包含以下内容:
$User = tasklist /v /FI "IMAGENAME eq explorer.exe" /FO list | find "User Name:"
$User = $User.Substring(14)
$UserName = $User.Split("\")[1]
$DomainUser = "$env:userdomain\$UserName"
&.\analyzeLogonDuration.ps1  -DomainUser $DomainUser

签署脚本

脚本任务需要以完全访问权限运行。您需要为入口点脚本添加签名:runLogonDuration.ps1。我们建议您使用官方证书,如果您有官方证书,则可以跳过步骤 1 到 步骤 3。如果您没有证书,则只能在测试中使用自签名 SSL 证书。自签名 SSL 证书存在风险,因为它们没有来自第三方机构(通常是受信任的 SSL 证书公司)的验证。

步骤 1:创建自签名证书

  1. 以管理员身份打开 PowerShell。右键单击“开始”按钮,然后选择 Windows PowerShell (Admin) 或 Windows Terminal (Admin)。
  2. 使用 New-SelfSignedCertificate cmdlet 创建自签名证书。指定证书的名称(友好名称)、有效期和用途 (KeyUsage) 等参数。
$cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "MyTestCertificate.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName "MyTestCertificate"
此命令创建一个有效期为一年的新证书,并将其标记为 MyTestCertificate。此证书存储在本地计算机的个人存储中。
证书创建成功后,将显示以下详细信息:
创建证书(/en-us/workspace-environment-management/service/media/2-echo-cert.png)

步骤 2:导出自签名证书

如果需要,导出带有私钥的证书。要使用证书进行签名,必须将其与私钥一起导出。这对于在另一台计算机上使用证书或保护密钥至关重要。运行以下命令:
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
Export-PfxCertificate -cert $cert -FilePath "C:\MyTestCertificate.pfx" -Password $pwd
将 YourStrongPassword 替换为您选择的强密码。此命令将证书导出到 .pfx 文件,其中包含私钥。

步骤 3: 安装证书

如果您已导出证书并需要在同一台或不同的计算机上安装它,您可以将其重新导入到证书存储中。将 *.pfx 文件复制到目标计算机,然后使用 Import-PfxCertificate cmdlet。
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText

Import-PfxCertificate -FilePath "C:\MyTestCertificate.pfx" -CertStoreLocation "Cert:\LocalMachine\Root" -Password $pwd

步骤 4: 使用证书签署文件

如果您使用官方证书,您需要输入正确的 CN 值。在此示例中,我们使用 MyTestCertificate.com。要查找证书,请使用 cmdlet:
$cert = ls Cert:\LocalMachine\Root| where {$_.subject -eq CN=MyTestCertificate.com"}
使用 Set-AuthenticodeSignature cmdlet 签署 PowerShell 脚本或任何其他支持数字签名的文件。
Set-AuthenticodeSignature -FilePath "C:\logonDuration\runLogonDuration.ps1" $cert -IncludeChain all -HashAlgorithm SHA1 -TimestampServer http://timestamp.digicert.com
此命令使用之前创建的证书将数字签名应用于 runLogonDuration.ps1。

步骤 5: 验证签名

要验证文件是否已正确签名,您可以使用以下命令:
Get-AuthenticodeSignature -FilePath "C:\logonDuration\runLogonDuration.ps1"
如果脚本签名有效,将显示以下详细信息:
有效的脚本签名

添加脚本化任务

以下信息是对 添加脚本化任务 中指南的补充。要创建分析登录持续时间的任务,请遵循该文章中的一般指南,并注意以下详细信息。
在 Web 控制台 > 脚本化任务中,按如下方式添加任务:
添加脚本化任务
  • 对于 文件类型,选择 ZIP。
  • 创建一个包含以下两个脚本的 zip 文件。
    • analyzeLogonDuration.ps1
    • runLogonDuration.ps1
  • 浏览到 zip 文件以上传它,并将脚本 runLogonDuration.ps1 设置为入口点。
  • 授予权限选项旨在增加额外的安全层,以防止来自不受信任脚本的攻击,否则这些脚本可能会带来安全风险。Analyze_Logon_Duration 任务必须在完全访问权限下运行。

配置脚本化任务

以下信息是对配置脚本化任务 中指南的补充。要配置 Analyze_Logon_Duration 任务,请遵循该文章中的一般指南,并注意以下详细信息。
  1. 转到相关的配置集,导航到脚本化任务设置,然后按如下方式在常规中配置 Analyze_Logon_Duration 任务:
    • WEM 允许您决定是否在运行任务之前验证签名。当脚本化任务被授予完全访问权限时,签名验证是强制性的。这通过保护脚本免受损害来确保安全性。筛选器和任务超时设置是可选的。
  2. 在触发器中,为任务配置触发器。
    • 使用触发器控制何时运行任务。例如,您可以创建一个“计划”触发器来计划任务的运行,然后将该触发器与任务关联。
  3. 在参数中,选择是否将参数传递给任务。在此示例中,您可以跳过此步骤。
  4. 在输出中,按如下方式配置设置。设置正则表达式值:
    ((?<Key>[a-zA-Z]+\s+)+(?<value>\d+.\d+)\s)在输出中配置脚本化任务

查看任务执行报告

任务成功运行后,您可以通过查看报告来查看结果。有关详细信息,请参阅报告。在此示例中,您可以看到以下报告:
示例报告
您可以使用筛选器将视图缩小到相关报告,然后将其导出。有关导出报告的信息,请参阅导出报告。根据导出的数据,您可以执行进一步的分析。
以下是在 Power BI 中可视化感兴趣数据的示例。它显示了用户登录持续时间的细分。
数据可视化示例
提示:
登录性能优化是 Workspace Environment Management 服务的一大亮点。此功能可以改变整体登录过程,从而大幅缩短登录时间。请参阅登录优化。