Workspace Environment Management

Analyser la durée de connexion à l’aide de tâches scriptées

Les longs temps de connexion diminuent la productivité de l’utilisateur et entraînent une mauvaise expérience utilisateur. En tant qu’administrateur, vous souhaiterez peut-être obtenir une vue d’ensemble détaillée des heures d’ouverture de session afin d’identifier les processus qui entraînent des ouvertures de session lentes afin de pouvoir prendre des mesures correctives en conséquence.

Pour atteindre cet objectif, vous pouvez utiliser le script Analyze_Logon_Duration.ps1. Il s’agit d’un script PowerShell qui interroge le journal des événements pour chaque événement majeur lié au processus d’ouverture de session. Le script offre les avantages suivants et plus encore :

  • Il vous donne une ventilation de la durée de connexion de la connexion la plus récente d’un utilisateur.
  • Il affiche toutes les principales phases séquentielles du processus de connexion et permet de voir facilement quelle phase ralentit la connexion.
  • Il vous permet de vérifier s’il y a un délai entre la fin d’une phase et le début de la suivante.

Pour voir plus d’avantages, rendez-vous sur https://www.controlup.com/script-library-posts/analyze-logon-duration/.

Workspace Environment Management (WEM) vous fournit une fonctionnalité de tâche scriptée qui automatise l’exécution du script pour vous. Tout ce que vous avez à faire est de configurer une tâche scriptée. Un flux de travail général est le suivant :

  1. Préparer des scripts pertinents
  2. Signez le script et vérifiez la signature du script.
  3. Ajouter une tâche basée sur un script
  4. Configurer la tâche scriptée
  5. Afficher le rapport d’exécution des tâches

Préparer des scripts pertinents

Préparez un fichier zip contenant les deux scripts suivants :

Fichier zip contenant des scripts

  • Analyze_Logon_Duration-0531.ps1. Vous pouvez obtenir ce script à partir de https://www.controlup.com/script-library-posts/analyze-logon-duration/.
  • Run_Analyze_Logon_Duration.ps1. Comme le script de durée d’ouverture de session nécessite le nom de domaine et le nom d’utilisateur, nous fournissons un script d’encapsulation pour lui transmettre le domaine et le nom d’utilisateur. Par exemple, nous fournissons un moyen d’obtenir le nom de domaine et le nom d’utilisateur sous le compte de service. Toutefois, ce script wrapper nécessite une session utilisateur.

Dans cet exemple, le script Run_Analyze_Logon_Duration.ps1 Contient le contenu suivant :

  $User = tasklist /v /FI "IMAGENAME eq explorer.exe" /FO list | find "User Name:"
  $User = $User.Substring(14)
  $UserName = $User.Split("\")[1]
  $DomainName = "$env:userdomain\$UserName"
  &.\AnalyzeLogonDuration.ps1  -DomainUser $DomainUser

<!--NeedCopy-->

Signez le script

La tâche scriptée doit s’exécuter avec un accès complet. Vous devez ajouter une signature pour le script de point d’entrée : RunAnalyzeLogonDuration.ps1. Nous vous recommandons d’utiliser un certificat officiel. Si vous avez un certificat officiel, vous pouvez sauter les trois étapes suivantes. Si vous n’avez pas de certificat, vous pouvez utiliser un certificat SSL auto-signé uniquement pour votre test. Les certificats SSL auto-signés sont risqués car ils n’ont pas de validation d’une autorité tierce, qui est généralement une société de certificats SSL de confiance.

Par exemple, pour générer et installer un certificat auto-signé, procédez comme suit.

  1. Ouvrez PowerShell en tant qu’administrateur. Cliquez avec le bouton droit de la souris sur l’icône Commencer et choisissez Windows PowerShell (administrateur) ou Terminal Windows (administrateur). Exécutez la commande pour créer un certificat.

  2. Utilisez le New-SelfSignedCertificate pour créer un certificat auto-signé. Spécifiez des paramètres tels que le nom du certificat (nom convivial), sa période de validité et son utilisation (KeyUsage).


  $cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "MyTestCertificate.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName "MyTestCertificate"

<!--NeedCopy-->

Cette commande crée un nouveau certificat d’une validité d’un an et l’étiquette comme MyTestCertificate. Ce certificat est stocké dans le magasin personnel de la machine locale.

Lorsque le certificat est créé avec succès, les détails suivants s’affichent:

Créer un certificat

  1. Exportez le certificat avec une clé privée, si nécessaire. Pour utiliser le certificat pour la signature, vous devez l’exporter avec sa clé privée. Ceci est essentiel pour utiliser le certificat sur une autre machine ou pour protéger la clé.

  $pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
  Export-PfxCertificate -cert $cert -FilePath "C:\MyTestCertificate.pfx" -Password $pwd

<!--NeedCopy-->

Remplacer VotreStrongPassword avec un mot de passe fort de votre choix. Cette commande exporte le certificat dans un fichier .pfx, qui inclut la clé privée.

  1. Si vous avez déjà exporté le certificat et que vous devez l’installer sur le même ordinateur ou sur un autre ordinateur, vous pouvez le réimporter dans le magasin de certificats. Copiez le fichier *.pfx sur la machine cible, puis utilisez la commande Import-PfxCertificate applet de commande.
  $pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText

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

<!--NeedCopy-->
  1. Signez à l’aide du certificat : Si vous utilisez un certificat officiel, vous devez saisir la bonne valeur CN. Dans cet exemple, nous utilisons MyTestCertificate.com. Pour trouver le certificat, utilisez la commande $cert = ls cert :\LocalMachine\Root| où {$_.sujet -eq CN=MyTestCertificate.com"} applet de commande.

Utilisez le Set-AuthenticodeSignature cmdlet pour signer un script PowerShell ou tout autre fichier prenant en charge les signatures numériques.


  Set-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1" $cert -IncludeChain all -HashAlgorithm SHA1 -TimestampServer http://timestamp.digicert.com

<!--NeedCopy-->

Cette commande applique une signature numérique à RunLogOnduration.ps1 à l’aide du certificat créé précédemment.

  1. Vérifier la signature : pour vérifier que le fichier a été correctement signé, vous pouvez utiliser la commande suivante :

  Get-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1

<!--NeedCopy-->

Si la signature du script est valide, les détails suivants s’affichent:

Signature de script valide

Ajouter une tâche basée sur un script

Les renseignements suivants complètent les lignes directrices de la Ajouter une tâche scriptée. Pour créer une tâche qui analyse la durée d’ouverture de session, suivez les instructions générales de cet article, en tenant compte des détails ci-dessous.

Dans Web Console > Tâches scriptées, ajoutez la tâche comme suit :

Ajouter une tâche basée sur un script

  • Pour Type de fichierchoisir Fermeture éclair.

  • Créez un fichier zip contenant les deux scripts suivants.

    • AnalyzeLogonDuration.ps1
    • RunAnalyzeLogonDuration.ps1
  • Naviguez jusqu’au fichier zip pour le télécharger et définir le script RunAnalyzeLogonDuration.ps1 comme point d’entrée.

  • Le Accorder des autorisations est conçue pour ajouter une couche de sécurité supplémentaire afin de se protéger contre les attaques provenant de scripts non approuvés, qui pourraient autrement présenter des risques de sécurité. La tâche Analyze_Logon_Duration doit s’exécuter en accès complet.

Configurer la tâche scriptée

Les informations suivantes complètent les instructions de la section Configurer une tâche scriptée. Pour configurer la tâche Analyze_Logon_Duration, suivez les instructions générales de cet article, en tenant compte des détails ci-dessous.

  1. Accédez au jeu de configuration approprié, accédez à Paramètres de tâche scriptéeet configurez la tâche Analyze_Logon_Duration dans Généralités comme suit:

    • WEM vous permet de décider si vous souhaitez vérifier la signature avant d’exécuter la tâche. La vérification de la signature est obligatoire lorsque la tâche scriptée bénéficie d’un accès complet. Cela garantit la sécurité en protégeant les scripts contre la compromission. Le Filtre et Délai d’expiration de la tâche Les paramètres sont facultatifs.

    Configurer la tâche scriptée en général

  2. Dans Déclenche, configurez les déclencheurs de la tâche.

    Configurer la tâche scriptée dans Trigger

    • Utilisez des déclencheurs pour contrôler le moment de l’exécution de la tâche. Par exemple, vous pouvez créer un déclencheur « planifié » pour planifier l’exécution de la tâche, puis associer le déclencheur à la tâche.

      Ajoutez un "Prévue" gâchette

      Associez le "Prévue" Déclencheur avec la tâche

  3. Dans Paramètres, choisissez de transmettre ou non des paramètres à la tâche. Dans cet exemple, vous pouvez ignorer cette étape.

  4. Dans Sortie, configurez les paramètres comme suit :

    Configurer la tâche scriptée dans Sortie

Afficher le rapport d’exécution des tâches

Une fois la tâche exécutée avec succès, vous pouvez afficher les résultats en consultant les rapports. Pour de plus amples informations, consultez la section Rapports. Dans cet exemple, vous pouvez voir le rapport suivant :

Exemple de rapport

Vous pouvez utiliser des filtres pour restreindre votre vue aux rapports pertinents, puis les exporter. Pour plus d’informations sur l’exportation de rapports, consultez Exporter des rapports. Sur la base des données exportées, vous pouvez effectuer une analyse plus approfondie.

Voici un exemple de visualisation de données d’intérêt dans Power BI. Il affiche une répartition de la durée de connexion de l’utilisateur.

Exemple de visualisation de données

Conseil :

L’optimisation des performances de connexion est l’un des points forts du service de gestion de l’environnement de travail. La fonctionnalité peut modifier le processus d’ouverture de session global afin de réduire considérablement les temps d’ouverture de session. Voir Optimisation de l’ouverture de session.

Analyser la durée de connexion à l’aide de tâches scriptées