Analizar la duración del inicio de sesión mediante tareas generadas por script
Los tiempos de inicio de sesión prolongados disminuyen la productividad del usuario y generan una experiencia de usuario deficiente. Como administrador, es posible que quiera obtener una visión general detallada de los tiempos de inicio de sesión para identificar los procesos que provocan inicios de sesión lentos, de modo que pueda tomar las medidas correctivas correspondientes.
Para lograr este objetivo, puede utilizar el script Analyze_Logon_Duration.ps1
. Es un script de PowerShell que consulta el registro de eventos para cada evento importante relacionado con el proceso de inicio de sesión. El script ofrece las siguientes ventajas y más:
- Le ofrece un desglose de la duración del inicio de sesión más reciente de un usuario.
- Muestra todas las fases secuenciales principales del proceso de inicio de sesión y facilita ver qué fase está ralentizando el inicio de sesión.
- Le permite comprobar si hay un retraso entre el final de una fase y el inicio de la siguiente.
Para ver más beneficios, vaya a https://www.controlup.com/script-library-posts/analyze-logon-duration/.
Workspace Environment Management (WEM) le proporciona una función de tarea generada por script que automatiza la ejecución de scripts. Todo lo que necesita hacer es configurar una tarea generada por script. Un flujo de trabajo general es el siguiente:
- Preparar scripts relevantes
- Firme el script y verifique la firma del script.
- Agregar una tarea generada por script
- Configurar la tarea generada por script
- Ver el informe de ejecución de tareas
Preparar scripts relevantes
Prepare un archivo ZIP que contenga estos dos scripts:
-
Analyze_Logon_Duration-0531.ps1
. Puede obtener este script de https://www.controlup.com/script-library-posts/analyze-logon-duration/. -
Run_Analyze_Logon_Duration.ps1
. Como el script de duración del inicio de sesión requiere el nombre de dominio y el nombre de usuario, proporcionamos un script contenedor para pasarle el dominio y el nombre de usuario. Por ejemplo, proporcionamos una forma de obtener el nombre de dominio y el nombre de usuario en la cuenta de servicio. Sin embargo, este script contenedor requiere una sesión de usuario.
En este ejemplo, el script Run_Analyze_Logon_Duration.ps1
contiene el siguiente contenido:
$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-->
Firmar el guión
La tarea con script debe ejecutarse con acceso completo. Debe agregar una firma para el script del punto de entrada: RunAnalyzeLogonDuration.ps1
. Te recomendamos que utilices un certificado oficial. Si tienes un certificado oficial, puedes saltarte los tres pasos siguientes. Si no tiene un certificado, puede usar un certificado SSL autofirmado solo para su prueba. Los certificados SSL autofirmados son riesgosos porque no tienen validación de una autoridad externa, que suele ser una empresa de certificados SSL de confianza.
Por ejemplo, para generar e instalar un certificado autofirmado, siga estos pasos.
-
Abra PowerShell como administrador. Haga clic con el botón derecho en el icono Empezar y seleccione
Windows PowerShell (administrador)
oTerminal Windows (administrador)
. Ejecute el comando para crear un certificado. -
Utilice la función
New-SelfSignedCertificate
cmdlet para crear un certificado autofirmado. Especifique parámetros como el nombre del certificado (nombre descriptivo), su período de validez y su uso (KeyUsage).
$cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "MyTestCertificate.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName "MyTestCertificate"
<!--NeedCopy-->
Este comando crea un nuevo certificado con un año de validez y lo etiqueta como MyTestCertificate. Este certificado se almacena en el almacén personal del equipo local.
Cuando el certificado se crea correctamente, se muestran los siguientes detalles:
- Exporte el certificado con una clave privada, si es necesario. Para utilizar el certificado para firmar, debe exportarlo con su clave privada. Esto es esencial para usar el certificado en otra máquina o para proteger la clave.
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
Export-PfxCertificate -cert $cert -FilePath "C:\MyTestCertificate.pfx" -Password $pwd
<!--NeedCopy-->
Reemplazar TuContraseñaFuerte con una contraseña segura de su elección. Este comando exporta el certificado a un archivo .pfx, que incluye la clave privada.
- Si ya ha exportado el certificado y necesita instalarlo en el mismo equipo o en uno diferente, puede volver a importarlo en el almacén de certificados. Copie el archivo *.pfx en el equipo de destino y, a continuación, use el archivo
Import-PfxCertificate
cmdlet.
$pwd = ConvertTo-SecureString -String "YourStrongPassword" -Force -AsPlainText
Import-PfxCertificate -FilePath "C:\MyTestCertificate.pfx" -CertStoreLocation "Cert:\LocalMachine\Root" -Password $pwd
<!--NeedCopy-->
- Firmar con el certificado: Si utiliza un certificado oficial, debe introducir el valor CN correcto. En este ejemplo, usamos
MyTestCertificate.com
. Para encontrar el certificado, use el comando$cert = ls Cert:\LocalMachine\RVaya| donde {$_.sujeto -eq CN=MyTestCertificate.com"}
cmdlet.
Utilice la función Set-AuthenticodeSignature
cmdlet para firmar un script de PowerShell o cualquier otro archivo que admita firmas digitales.
Set-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1" $cert -IncludeChain all -HashAlgorithm SHA1 -TimestampServer http://timestamp.digicert.com
<!--NeedCopy-->
Este comando aplica una firma digital a RunLogOnduration.ps1
utilizando el certificado creado anteriormente.
- Verificar la firma: Para verificar que el archivo se ha firmado correctamente, puede utilizar el siguiente comando:
Get-AuthenticodeSignature -FilePath "C:\logonDuration\RunLogOnduration.ps1
<!--NeedCopy-->
Si la firma del script es válida, se muestran los siguientes detalles:
Agregar una tarea generada por script
La siguiente información complementa la guía de Agregar una tarea programada. Para crear una tarea que analice la duración del inicio de sesión, siga las instrucciones generales de ese artículo, teniendo en cuenta los detalles que aparecen a continuación.
En Consola web > Tareas generadas por script, agregue la tarea de la siguiente manera:
-
Para Tipo de archivo, seleccione ZIP.
-
Cree un archivo zip que contenga los dos scripts siguientes.
AnalyzeLogonDuration.ps1
RunAnalyzeLogonDuration.ps1
-
Busque el archivo zip para cargarlo y configurar el script
RunAnalyzeLogonDuration.ps1
como punto de entrada. -
La opción Conceder permisos está diseñada para agregar una capa adicional de seguridad para proteger contra los ataques que se originan en scripts que no son de confianza, que de otro modo podrían plantear riesgos de seguridad. La tarea Analyze_Logon_Duration debe ejecutarse con acceso total.
Configurar la tarea generada por script
La siguiente información complementa la guía de Configurar una tarea generada por script. Para configurar la tarea Analyze_Logon_Duration, siga las instrucciones generales de ese artículo, teniendo en cuenta los detalles a continuación.
-
Vaya al conjunto de configuraciones correspondiente, vaya a Configuración de tareas generadas por script y configure la tarea Analyze_Logon_Duration en General de la siguiente manera:
- WEM le permite decidir si quiere verificar la firma antes de ejecutar la tarea. La verificación de firmas es obligatoria cuando se concede acceso completo a la tarea con script. Esto garantiza la seguridad al proteger los scripts para que no se vean comprometidos. Los ajustes del filtro y del tiempo de espera de la tarea son opcionales.
-
En Desencadenantes, configure los desencadenantes de la tarea.
-
Utilice los activadores para controlar cuándo ejecutar la tarea. Por ejemplo, puede crear un desencadenador “programado” para programar la ejecución de la tarea y, a continuación, asociar el desencadenador con la tarea.
-
-
En Parámetros, elija si quiere pasar parámetros a la tarea. En este ejemplo, puede omitir este paso.
-
En Salida, configure los ajustes de la siguiente manera:
Ver el informe de ejecución de tareas
Una vez que la tarea se haya ejecutado correctamente, puede ver los resultados consultando los informes. Para obtener más información, consulte Informes. En este ejemplo, puede ver el siguiente informe:
Puede usar filtros para limitar la vista a los informes relevantes y, a continuación, exportarlos. Para obtener información sobre la exportación de informes, consulte Exportar informes. En función de los datos exportados, puede realizar análisis adicionales.
El siguiente es un ejemplo de visualización de datos de interés en Power BI. Muestra un desglose de la duración del inicio de sesión del usuario.
Consejo:
La optimización del rendimiento de inicio de sesión es uno de los aspectos más destacados del servicio Workspace Environment Management. La función puede cambiar el proceso general de inicio de sesión para reducir drásticamente los tiempos de inicio de sesión. Consulte Optimización de inicio desesión.