Principales conclusiones
- Automatiza la recuperación de la fecha de instalación: el script obtiene de forma eficaz la fecha de instalación del sistema operativo Windows, automatizando lo que de otro modo sería una tarea manual que llevaría mucho tiempo.
- Utiliza múltiples fuentes de datos: recupera las fechas de instalación del registro, información del sistema, WMI y Get-ComputerInfo de PowerShell, garantizando una recopilación de datos exhaustiva.
- Ofrece salida de campos personalizados: el parámetro opcional CustomField permite la integración con sistemas de datos existentes guardando la fecha de instalación en un campo especificado.
- Compatible con las principales versiones de Windows: diseñado para Windows 10 y Windows Server 2016, por lo que es relevante para la mayoría de los entornos Windows modernos.
- Mecanismos de tratamiento de errores: iIncluye bloques try-catch para cada método de recuperación de datos, lo que garantiza que el script se ejecute sin interrupciones.
- Facilita la gestión de TI y la seguridad: ayuda a los profesionales de TI a identificar los sistemas obsoletos, lo que es crucial para el mantenimiento y el cumplimiento de las normas de seguridad.
- Integración con plataformas de gestión: la funcionalidad del script para comprobar la fecha de instalación del sistema pone de manifiesto las ventajas de integrar este tipo de herramientas en plataformas como NinjaOne para una gestión integral del sistema.
En el dinámico campo de las tecnologías de la información, la gestión eficaz de la información del sistema es crucial. Los scripts de PowerShell se han convertido en una herramienta fundamental para simplificar tareas complejas, gracias a su capacidad para automatizar y recuperar datos con precisión. Un ejemplo notable es un script diseñado para obtener la fecha de instalación de un sistema operativo Windows. Esta capacidad no es solo una cuestión de mantenimiento de registros, sino un aspecto esencial de la gestión y la seguridad del sistema.
Contexto
El script en cuestión cumple una función importante para los profesionales de TI y los proveedores de servicios gestionados (MSP). Está diseñado para recuperar la fecha de instalación del sistema operativo Windows en una máquina. Esta información es vital por varias razones, como el cumplimiento de la normativa, la programación del mantenimiento y las auditorías de seguridad. Dado que los entornos de TI son cada vez más complejos, disponer de un script para automatizar esta tarea es inmensamente valioso.
El script para comprobar la fecha de instalación del sistema Windows
#Requires -Version 5.1
<#
.SYNOPSIS
Fetches the install date. Outputs to the activity feed and can store it in a custom field.
.DESCRIPTION
Fetches the install date. Outputs to the activity feed and can store it in a custom field.
.EXAMPLE
(No Parameters)
## EXAMPLE OUTPUT WITHOUT PARAMS ##
Install Date: 08/18/2021 13:50:15
PARAMETER: -CustomField "InstallDate"
A custom field to save the install date to.
.EXAMPLE
-CustomField "InstallDate"
## EXAMPLE OUTPUT WITH CustomField ##
Install Date: 08/18/2021 13:50:15
.OUTPUTS
None
.NOTES
Minimum OS Architecture Supported: Windows 10, Windows Server 2016
Release Notes: Renamed script and added Script Variable support
By 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.
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.
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.
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.
Warranty Disclaimer: The script is provided “as is” and “as available”, 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.
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.
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.
EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>
[CmdletBinding()]
param (
[string]$CustomField
)
begin {
$Epoch = [DateTime]'1/1/1970'
if ($env:customFieldName -and $env:customFieldName -notlike "null") { $CustomField = $env:customFieldName }
Write-Host ""
}
process {
$InstallDate = $(
try {
# Get Install Date from registry
Get-ChildItem -Path "HKLM:\System\Setup\Source*" -ErrorAction SilentlyContinue | ForEach-Object {
$InstallDate = Get-ItemPropertyValue -Path Registry::$_ -Name "InstallDate" -ErrorAction SilentlyContinue
[System.TimeZone]::CurrentTimeZone.ToLocalTime(($Epoch).AddSeconds($InstallDate))
}
$InstallDateCu = Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name "InstallDate" -ErrorAction SilentlyContinue
[System.TimeZone]::CurrentTimeZone.ToLocalTime(($Epoch).AddSeconds($InstallDateCu))
}
catch {
# Skip if errors
}
try {
# Get Install date from system info
$SystemInfo = systeminfo.exe
# --- Output of system info ---
# Original Install Date: 9/3/2020, 8:54:48 AM
$($SystemInfo | Select-String "install date") -split 'Date:\s+' | Select-Object -Last 1 | Get-Date
}
catch {
# Skip if errors
}
try {
# Get Install date from WMI
$(Get-CimInstance -ClassName Win32_OperatingSystem -ErrorAction SilentlyContinue).InstallDate
}
catch {
# Skip if errors
}
try {
if ($PSVersionTable.PSVersion.Major -ge 5 -and $PSVersionTable.PSVersion.Minor -ge 1) {
$ComputerInfo = Get-ComputerInfo -Property WindowsInstallDateFromRegistry, OsInstallDate -ErrorAction SilentlyContinue
$ComputerInfo.WindowsInstallDateFromRegistry
$ComputerInfo.OsInstallDate
}
}
catch {
# Skip if errors
}
) | Sort-Object | Select-Object -First 1
if ($InstallDate) {
if ($CustomField) {
Ninja-Property-Set -Name $CustomField -Value $InstallDate
}
Write-Host "Install Date: $InstallDate"
}
else {
if ($CustomField) {
Ninja-Property-Set -Name $CustomField -Value "Unknown"
}
Write-Host "Install Date: Unknown"
}
}
end {
}
Accede a más de 300 scripts en el Dojo de NinjaOne
Análisis detallado
El script para comprobar la fecha de instalación del sistema funciona en varias etapas:
- Definición de parámetros: comienza definiendo un parámetro opcional CustomField. Permite al usuario especificar un campo personalizado donde se guardará la fecha de instalación.
- Inicialización: inicializa una variable que representa la época Unix (1 de enero de 1970) como referencia para los cálculos de fecha.
- Proceso de recuperación de datos: a continuación, el script para comprobar la fecha de instalación del sistema emplea varios métodos para obtener la fecha de instalación:
- Entradas de registro: comprueba múltiples rutas de registro para la fecha de instalación, convirtiendo la marca de tiempo Unix a un formato de hora local.
- Utilidad de información del sistema: extrae la fecha de instalación de la salida del comando systeminfo.exe.
- Instrumentación de gestión de Windows (WMI): recupera la fecha de instalación de la clase Win32_OperatingSystem.
- Información del ordenador (para PowerShell 5.1 y superiores): utiliza el cmdlet Get-ComputerInfo para obtener las fechas de instalación.
- Selección y salida de datos: de las fechas recopiladas, elige la más antigua como la fecha de instalación original más probable y la muestra o la establece en un campo personalizado especificado.
Posibles casos de uso
Imagínate a un administrador de TI que gestiona una flota de ordenadores en una gran organización. Ejecutando este script para comprobar la fecha de instalación del sistema, puede determinar rápidamente qué equipos funcionan con instalaciones antiguas, lo que puede indicarle que deben actualizarse o someterse a auditorías de seguridad más exhaustivas.
Comparaciones
Los métodos tradicionales, como la comprobación manual de las propiedades del sistema o la búsqueda en los registros del sistema, llevan mucho tiempo y son propensos a errores humanos. Este script para comprobar la fecha de instalación del sistema automatiza y centraliza el proceso, haciéndolo más rápido y fiable.
FAQ
- ¿Cómo se ejecuta el script para comprobar la fecha de instalación del sistema?
Ejecútalo en un entorno PowerShell, especificando opcionalmente un CustomField para la salida. - ¿Puede funcionar en todas las versiones de Windows?
Está diseñado para Windows 10 y Windows Server 2016 y superiores. - ¿Es a prueba de errores?
El script para comprobar la fecha de instalación del sistema contiene múltiples bloques try-catch para manejar debidamente cualquier error durante la ejecución.
Implicaciones
El conocimiento exacto de las fechas de instalación del sistema operativo es fundamental para el cumplimiento de las normas de seguridad y el mantenimiento del sistema. Los sistemas obsoletos pueden suponer un riesgo para la seguridad, y este script para comprobar la fecha de instalación del sistema ayuda a identificar dichos sistemas para realizar las actualizaciones necesarias.
Recomendaciones
- Prueba siempre los scripts en un entorno controlado antes de desplegarlos en un entorno de producción.
- Personaliza el parámetro CustomField de acuerdo con la estructura de datos de tu organización para una integración perfecta.
Reflexiones finales
Este script para comprobar la fecha de instalación del sistema ejemplifica cómo herramientas como NinjaOne pueden mejorar las operaciones de TI. La plataforma de NinjaOne podría integrar dichos scripts para una gestión más amplia del sistema, ofreciendo una solución integral que agilice las operaciones de TI, garantizando que los sistemas estén actualizados y seguros. El uso de scripts PowerShell en este tipo de plataformas aporta eficacia y precisión a la gestión de TI.