¿Tu configuración de tiempo es correcta?

La configuración de tiempo en los controladores de dominio debe ser correcta en todo el bosque de Active Directory. Debe asegurarse de que todos los controladores de dominio de Active Directory estén configurados para sincronizar la hora mediante la jerarquía de sincronización de hora predeterminada, a menos que desee configurar los controladores de dominio para sincronizar la hora con otra fuente horaria. En la configuración de sincronización de hora predeterminada, todos los controladores de dominio de dominio secundario sincronizan la hora con el emulador de PDC de ese dominio, el emulador de dominio secundario de PDC sincroniza la hora con el controlador de dominio en el dominio raíz y el emulador de PDC permite la raíz del dominio raíz. configuración de tiempo.

Un emulador de PDC de dominio raíz siempre se considera una fuente confiable de tiempo. Debe asegurarse de que todos los controladores de dominio de Active Directory y el emulador de PDC del dominio raíz estén configurados correctamente. Aquí es donde este artículo es útil. Le proporcionaremos un script de PowerShell que puede usar para verificar la configuración de la hora en todos los controladores de dominio, incluido el emulador de PDC del dominio raíz, y luego tomar cualquier medida para corregir la configuración de la hora.

Índice

Requisitos

Antes de poder usar el script, asegúrese de cumplir con los siguientes requisitos:

  • El script de PowerShell debe ejecutar Windows Server 2012 o posterior.
  • Asegúrese de que W32tm.exe funcione correctamente en el ordenador desde la que ejecutará el script de PowerShell. El script de PowerShell usa W32Tm.exe para recopilar el tiempo de configuración de los controladores de dominio.
  • El emulador de PDC del bosque raíz de Active Directory debe estar disponible para recopilar la configuración de tiempo del emulador de PDC del dominio raíz.

¿Qué hace el guión?

El script realiza las siguientes funciones:

  • Obtiene todos los controladores de dominio del bosque actual de Active Directory y exporta los nombres de los controladores de dominio al archivo C:TempGDCList.TXT. El script usa el archivo "C:TempGDCList.TXT" para verificar la configuración de tiempo en todos los controladores de dominio.
  • Se conecta al bosque de Active Directory especificado en $ CurForestName variable y luego obtiene el nombre del emulador de PDC. Comprueba la configuración de tiempo del emulador de PDC e informa el estado en el archivo CSV. El bosque actual que usamos en el script es TechGenix.com.
  • El script ejecuta W32Tm.exe contra cada controlador de dominio especificado en "C:TempGDCList.txt" y recopila datos de configuración de tiempo.
  • La salida del script se genera en el archivo "C:TempADTimeConfiguration.CSV".

Contenido del guión

[code lang="ps"]
### El guión comienza aquí ###

$TotNo = 0

$ ItemCount = 0

$ Texto de prueba = ""

$EstadoPrueba = ""

$ValorSuma = ""

$ Cualquier Brecha = "No"

$ErrorONo = "No"

$ CualquieraOk = "No"

$TotDCsInError = 0

$ CurForestName = "TechGenix.com"

$ TestCSVFile = "C:TempADTimeConfiguration.CSV"

remove-item $ TestCSVFile -ErrorAction SilentlyContinue

$ ThisString = "Controlador de dominio, conexión, estado del comando, tipo de controlador, configuración de sincronización, sincronización con, estado final"

Agregar el contenido de "$ TestCSVFile" $ ThisString

$GDCList = "C:TempDCList.TXT"

remove-item $ GDCList -ErrorAction SilentlyContinue

Servidor DSQuery -O RDN> $GDCList

$ Error.Borrar ()

$ PDCInForest = Get-ADForest $ CurForestName | Select-Object -ExpandProperty RootDomain | Obtener ADDomain | Select-Object -Property PDCEmulator

CUANDO ($ Error.Count -eq 0)

{

$ PDCServer = $ PDCInForest.PDCEmulator

$ RMNow = w32tm / solicitud / configuración / ordenador: $ PDCServer

$ SincronizarConfiguraciónAhora = ""

$ SyncFrom = ""

$ FinStatus = "Bueno"

Foreach ($ Artículo en $ RMAhora)

{

$ T1, $ T2 = $ Artículo.Dividir (":")

SI ($ T1 -eq "Tipo")

{

SI ($ T2 -eq "NTP (local)")

{

}

el otro

{

$ AnyGap = "Sí"

$ FinStatus = "NOTA: El PDC raíz debe sincronizar su hora con el servidor NTP externo especificando el valor NTP (local) en el tipo de entrada del registro. No se recomienda usar NT5DS y AllSync (Local) para el PDC".

}

$ Configuración de sincronización ahora = $ T2

}

SI ($ T1 -eq "ServidorNtp")

{

$ SyncFrom = $ T2

}

}

$ FinalSTR = $ PDCServer + ", Ok, Ok, PDC," + $ SyncSettingNow + "," + '"' + $ SyncFrom + '"' + "," + $ FinStatus

Agregando contenido "$ TestCSVFile" $ FinalStr

}

el otro

{

$ ComConError = $ Error[0].Mensaje.de.exclusión

$ FinalSTR = $ ItemName + ", $ DCConError," + $ ComConError

Agregando contenido "$ TestCSVFile" $ FinalSTR

}

Foreach ($ ItemName en Get-Content "$ GDCList")

{

$DCConError = "Bien"

$DCConStatus = "Bien"

$ ProcederONo = "Sí"

$ Error.Borrar ()

$ AllServices = Get-WMIObject Win32_Service -computer $ ItemName

SI ($ Error.Cuenta -ne 0)

{

$ ProcederONo = "No"

$ TotDCsInError ++

$ DCConError = $ Error[0].Mensaje.de.exclusión

$FinalSTR = $ItemName + ", OK: Error: $DCConError"

Agregando contenido "$ TestCSVFile" $ FinalSTR

}

SI ($ ProcederONo -eq "Sí")

{

$ ComConError = "Bien"

$ Error.Borrar ()

$ RMNow = w32tm / solicitud / configuración / ordenador: $ ItemName

CUANDO ($Error.cuenta -eq 0)

{

$CualquieraOk = "Sí"

$ SincronizarConfiguraciónAhora = ""

$ SyncFrom = ""

$ FinStatus = "Bueno"

Foreach ($ Artículo en $ RMAhora)

{

$ T1, $ T2 = $ Artículo.Dividir (":")

SI ($ T1 -eq "Tipo")

{

SI ($ T2 -eq "NT5DS (Local)" -o $ T2 -eq $ Nulo -o $ T2 -eq "")

{

}

el otro

{

$ AnyGap = "Sí"

$ FinStatus = "NOTA: el controlador de dominio debe usar el valor NT5DS en la entrada de registro Tipo. No se recomienda usar el valor de registro AllSync (local) para los controladores de dominio".

}

$ Configuración de sincronización ahora = $ T2

}

SI ($ T1 -eq "ServidorNtp")

{

$ SyncFrom = $ T2

}

}

IF ($ ItemName.ToLower () -eq $ PDCServer.ToLower ())

{

$ FinStatus = ""

}

$ FinalSTR = $ ItemName + "," + $ DCConError + "," + $ ComConError + ", controlador de dominio," + $ SyncSettingNow + "," + '"' + $ SyncFrom + '"' + "," + $ FinStatus

Agregando contenido "$ TestCSVFile" $ FinalStr

}

el otro

{

$ ComConError = $ Error[0].Mensaje.de.exclusión

$ FinalSTR = $ ItemName + ", $ DCConError," + $ ComConError

Agregando contenido "$ TestCSVFile" $ FinalSTR

}

}

el otro

{

$ ComConError = $ Error[0].Mensaje.de.exclusión

$ FinalSTR = $ ItemName + ", $ DCConError," + $ ComConError

Agregando contenido "$ TestCSVFile" $ FinalSTR

}

}

$OtroTexto = ""

CUANDO ($ TotDCsInError -ne 0)

{

$ OthText = "Algunos controladores de dominio no se han verificado debido a problemas de conexión o comandos".

}

SI ($ AnyGap -eq "Sí")

{

$ TestText = "La sincronización de la hora del controlador de dominio es incorrecta. Asegúrese de que el PDC sincronice su hora con el servidor NTP externo y se sincronice con otros controladores de dominio usando la configuración de sincronización de hora predeterminada. Todos los demás controladores de dominio deben usar el registro $ nTTe5 en el TTe55 registro.

$ValorSuma = $NúmeroTotal

$ TestStatus = "Crítico"

}

SI ($ AnyGap -eq "No")

{

$ TestText = "La sincronización de tiempo está configurada correctamente en el bosque de Active Directory. $ OthText"

$ValorSuma = ""

$ TestStatus = "Alquilado"

SI ($CualquieraOk -eq "No")

{

$ TestText = "Error al ejecutar el paquete dinámico".

$ValorSuma = ""

$ TestStatus = "Ejecutado con errores".

}

}

$ STR = $ ADTestName + "," + $ TestStartTime + "," + $ TestStatus + "," + $ SumVal + "," + $ TestText

### El guión termina aquí ###
[/code]

Después de completar la secuencia de comandos para todos los controladores de dominio en el bosque de Active Directory, se creará un informe de configuración de tiempo para todos los controladores de dominio en el archivo CSV, como se muestra en la siguiente captura de pantalla.

Como puede ver en la captura de pantalla, el script informó la configuración de tiempo de todos los controladores de dominio, incluido el emulador de PDC del dominio raíz. Como muestra la advertencia en la primera línea del informe CSV, el emulador de PDC no está configurado para sincronizar la hora con una fuente de hora externa, lo que va en contra de la recomendación. Debido a que el emulador de dominio raíz de PDC siempre se considera una fuente horaria confiable, debe configurarse para sincronizar la hora con una fuente horaria externa confiable. Todos los demás controladores de dominio están configurados con la configuración de hora correcta, excepto el controlador de dominio DC3.TechGenix.com. DC3.TechGenix.com debe usar la configuración "NT5DS" para usar la jerarquía de sincronización de tiempo predeterminada. Si utiliza Perfilador de estado de Active Directorypuedes realizar Prueba de configuración de tiempo del controlador de dominio de AD Dynamic Pack contra el bosque o el dominio de Active Directory, y luego muestre el resultado del paquete dinámico en la consola de Active Directory Health Profiler, como se muestra en la siguiente captura de pantalla.

Configurar la hora de los controladores de dominio en AD Health Profiler

Se recomienda que utilice la configuración de hora predeterminada en todos los controladores de dominio de Active Directory para evitar problemas de autenticación. Hemos proporcionado un script de PowerShell que puede ayudarlo a ensamblar el tiempo de configuración desde el emulador de PDC, así como los controladores de dominio en el bosque de Active Directory. Puede incluir el script de PowerShell mencionado anteriormente en su procedimiento de salud de Active Directory y ejecutarlo una vez al mes para asegurarse de que la configuración de tiempo en todos los controladores de dominio esté configurada correctamente.

Para descargar un script .txt: haga clic aquí


Artículos de interés

Subir