{"id":257159,"date":"2024-05-21T09:24:22","date_gmt":"2024-05-21T09:24:22","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=257159"},"modified":"2024-05-21T09:25:12","modified_gmt":"2024-05-21T09:25:12","slug":"comparar-la-hora-del-sistema-local","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/comparar-la-hora-del-sistema-local\/","title":{"rendered":"C\u00f3mo utilizar PowerShell para comparar la hora del sistema local con la de los servidores NTP"},"content":{"rendered":"<p>La sincronizaci\u00f3n horaria es un elemento fundamental en las TI. Garantizar que los dispositivos de una red tengan tiempos congruentes es vital para diversas funcionalidades y protocolos de seguridad. Este art\u00edculo profundiza en un script PowerShell dise\u00f1ado para <strong>comparar la hora del sistema local con la de un servidor NTP<\/strong>, se\u00f1alando si la diferencia supera cierto umbral.<\/p>\n<h2>Antecedentes<\/h2>\n<p>A medida que evolucionan las infraestructuras de TI modernas, la importancia de la precisi\u00f3n horaria ha aumentado. Las disparidades, incluso tan peque\u00f1as como unos pocos segundos, pueden causar estragos, provocando anomal\u00edas en las aplicaciones o poniendo en peligro la seguridad. Los profesionales de TI y los <a href=\"https:\/\/www.ninjaone.com\/es\/que-es-un-msp\/\">proveedores de servicios gestionados (MSP)<\/a> deben garantizar sincronizaciones horarias precisas entre dispositivos. Nuestro script para comparar la hora del sistema local sirve de herramienta para se\u00f1alar posibles discrepancias.<\/p>\n<h2>El script para comparar la hora del sistema local con la de los servidores NTP<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Compares the local system time to an NTP server, returning an exit code of 0 if less than a 2 minute difference or 1 if more than 2 minute difference.\r\n.DESCRIPTION\r\n    Compares the local system time to an NTP server, returning an exit code of 0 if less than a 2 minute difference or 1 if more than 2 minute difference.\r\n.EXAMPLE\r\n    No parameters needed\r\n    The maximum acceptable time difference of 2 minute.\r\n.EXAMPLE\r\n    -Max 5\r\n    The maximum acceptable time difference of 5 minute.\r\n.EXAMPLE\r\n    -NtpServer \"pool.ntp.org\"\r\n    The maximum acceptable time difference of 2 minute, but uses the ntp.org's pool and use the time server pool \"pool.ntp.org\".\r\n    Alterative pools:\r\n    time.google.com\r\n    time.cloudflare.com\r\n    time.facebook.com\r\n    time.apple.com\r\n    time.nist.gov\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Exit code 1: If the time is off more than Max\r\n    Exit code 0: If the time is off less than or equal to Max\r\n    Release Notes:\r\n    Initial Release\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter()]\r\n    [int]\r\n    $Max = 2,\r\n    [Parameter()]\r\n    [string]\r\n    $NtpServer = \"time.windows.com\"\r\n)\r\n\r\nbegin {}\r\nprocess {\r\n    Write-Host \"Using NTP server($NtpServer) to get time.\"\r\n    $TimeSample = w32tm.exe \/StripChart \/Computer:\"$NtpServer\" \/DataOnly \/Samples:1\r\n    $Diff = $($($TimeSample | Select-Object -Last 1) -split ', ' | Select-Object -Last 1) -replace '+' -replace '-'\r\n    $TimeScale = $Diff -split '' | Select-Object -Last 1 -Skip 1\r\n\r\n    # Convert to minutes\r\n    $Diff = switch ($TimeScale) {\r\n        \"s\" { [double]$($Diff -replace 's') \/ 60 }\r\n        \"m\" { [double]$($Diff -replace 'm') }\r\n        \"h\" { [double]$($Diff -replace 'h') * 60 * 60 }\r\n        \"d\" { [double]$($Diff -replace 'd') * 60 * 60 * 24 }\r\n        Default {}\r\n    }\r\n    Write-Host \"Time Difference between NTP server and local system: $($([Math]::Round($Diff,2))) minutes\"\r\n\r\n    if ($Max -lt 0) {\r\n        # If Max is negative then flip the sign to positive\r\n        $Max = 0 - $Max\r\n    }\r\n\r\n    # Only output this if -Verbose is used\r\n    Write-Verbose \"$($Diff) minutes &gt; $Max minutes = $($Diff -gt $Max)\"\r\n    # Assuming that $Max and $Diff are positive\r\n    if (\r\n        $Diff -gt $Max\r\n    ) {\r\n        # If time difference &gt; $Max then return exit code of 1\r\n        Write-Host \"Time is over the maximum minutes of $Max.\"\r\n        exit 1\r\n    }\r\n    else {\r\n        # If time difference &lt; $Max then return exit code of 0\r\n        Write-Host \"Time is under the maximum minutes of $Max.\"\r\n        exit 0\r\n    }\r\n}\r\nend {}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p style=\"text-align: center;\">Accede a m\u00e1s de 300 scripts en el Dojo de NinjaOne<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.ninjaone.com\/es\/prueba-gratuita-formulario\/\">Obt\u00e9n acceso<\/a><\/p>\n<\/div>\n<h2>An\u00e1lisis detallado<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Cmdlet Binding y par\u00e1metros<\/strong>: el script utiliza el atributo CmdletBinding, lo que permite utilizarlo como cmdlet y aprovechar las funciones integradas de PowerShell. Se declaran dos par\u00e1metros: <strong>$Max<\/strong>, la diferencia de tiempo m\u00e1xima aceptable (por defecto 2 minutos), y <strong>$NtpServer<\/strong>, el servidor a comprobar (por defecto time.windows.com).<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Bloque de proceso<\/strong>: aqu\u00ed se ejecuta la l\u00f3gica principal.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Obtiene la diferencia horaria utilizando <strong>w32tm.exe<\/strong>, una herramienta de l\u00ednea de comandos de Windows.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Analiza la hora obtenida, discerniendo la diferencia y su escala (segundos, minutos, etc.).<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Convierte la diferencia horaria en minutos.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Compara la diferencia calculada con <strong>$Max<\/strong>, devolviendo el c\u00f3digo de salida apropiado.<\/li>\n<\/ul>\n<h2>Posibles casos de uso<\/h2>\n<p>Imagina a un profesional de las TI supervisando una amplia red de dispositivos en toda una empresa. Se han observado anomal\u00edas en aplicaciones que registran acciones con fecha y hora. Para diagnosticar, despliega este script para detectar dispositivos con desviaciones temporales sustanciales. Con los resultados, podr\u00e1 hacer los ajustes necesarios.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Aunque existen herramientas basadas en GUI y aplicaciones de terceros que ofrecen funciones de sincronizaci\u00f3n horaria, este script para comparar la hora del sistema local destaca por su sencillez y adaptabilidad. Puede integrarse en flujos de trabajo inform\u00e1ticos o herramientas de automatizaci\u00f3n existentes, lo que la convierte en una opci\u00f3n vers\u00e1til.<\/p>\n<h2>FAQ<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>\u00bfPuedo utilizar diferentes servidores NTP?<\/strong><br \/>\nS\u00ed, el script proporciona un valor por defecto, pero con el par\u00e1metro <strong>$NtpServer<\/strong>, puedes especificar otro servidor.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>\u00bfY si quiero un umbral de tiempo diferente?<\/strong><br \/>\nModifica el par\u00e1metro <strong>$Max<\/strong> al n\u00famero de minutos deseado.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>\u00bfEl script es exclusivo de Windows?<\/strong><br \/>\nEl script proporcionado est\u00e1 dise\u00f1ado para Windows, en particular las versiones 10 y Server 2016 en adelante.<\/li>\n<\/ul>\n<h2>Implicaciones<\/h2>\n<p>Las discrepancias temporales pueden parecer inocuas, pero pueden tener profundas implicaciones. Las marcas de tiempo dispares pueden socavar la integridad de los datos, afectar a las tareas programadas y exponer vulnerabilidades. Los atacantes pueden aprovecharse de las lagunas temporales, por lo que las comprobaciones peri\u00f3dicas con herramientas como este script son cruciales para la seguridad inform\u00e1tica.<\/p>\n<h2>Recomendaciones<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Ejecuta el script a intervalos regulares para garantizar una supervisi\u00f3n continua.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Comprueba siempre la validez del servidor NTP utilizado.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">En caso de discrepancias, investiga la causa ra\u00edz, ya que podr\u00eda ser sintom\u00e1tica de problemas subyacentes de mayor envergadura.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>Si bien los scripts para comparar la hora del sistema local son muy valiosos, una <a href=\"https:\/\/www.ninjaone.com\/es\/\">plataforma integral como NinjaOne<\/a> puede elevar tu gesti\u00f3n de TI. Integrando <a href=\"https:\/\/www.ninjaone.com\/es\/rmm\/automatizacion-de-ti\/\">comprobaciones automatizadas, monitorizaci\u00f3n y correcci\u00f3n<\/a>, NinjaOne puede complementar herramientas como nuestro script PowerShell, asegurando que tu infraestructura permanece tanto funcional como segura.<\/p>\n","protected":false},"author":35,"featured_media":144315,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4265],"class_list":["post-257159","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/257159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/comments?post=257159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media\/144315"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=257159"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=257159"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=257159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}