Obtener revisiones en Server 2008 Powershell

1

El uso del siguiente comando en Windows Server 2008-R2 funciona:

Get-Hotfix -cn HOSTNAME | sort InstalledOn -des  | select HotfixID, Description, InstalledOn -first 20

Pero no funciona en Windows Server 2003 (no es sorprendente) O Server 2008 de 32 bits (esto es lo que me parece extraño).

Recibo el siguiente error cuando ejecuto este script en un servidor Win 2008 de 32 bits:

Objeto de ordenación: configuración de excepción "InstalledOn": "Excepción que llama" Parse "con" 1 "argumento (s):" La cadena no se reconoció como un DateTime válido ".

Brian Henson
fuente

Respuestas:

2

Está generando el error porque no puede ordenarlos por Fecha / Hora debido a un hotfix con una entrada InstalledOn que no se puede analizar en una Fecha / Hora válida.

Por lo tanto, lo más probable es que tenga HotFix instalados en la máquina que no tienen una "Fecha de instalación instalada" adecuada, y por lo tanto, simplemente se vuelve en blanco para esas entradas.

Esto no es específico de una versión de Windows, ya que lo probé en un servidor Windows 2012 R2 y vi el mismo error.

Puede confirmar las fechas de InstalledOn ejecutando la consulta sin la ordenación:

Get-Hotfix -cn HOSTNAME | select HotfixID, Description, InstalledOn -first 20

Ejemplo:

PS C:\Windows\system32> Get-Hotfix | select HotfixID, Description, InstalledOn -first 20

HotfixID                                Description                             InstalledOn
--------                                -----------                             -----------
KB2868626                               Security Update
KB2883200                               Update
KB2887595                               Update
KB2894852                               Security Update                         01Dec2015 12:00:00 AM
KB2896496                               Update
KB2900986                               Security Update
KB2903939                               Update
KB2904440                               Update
KB2911106                               Update
KB2919355                               Update                                  04Oct2014 12:00:00 AM

Note arriba que muchos de ellos no muestran nada por InstalledOn.

Ƭᴇcʜιᴇ007
fuente
No era la respuesta que quería escuchar, pero sí respondí mi pregunta. Curiosamente, esto funciona localmente en el servidor 2008, pero no de forma remota desde un servidor 2008 R2.
Brian Henson
1

Definitivamente no es la mejor solución, pero funciona para mí:

$lastHotFixInstallDate = Get-HotFix | Select-Object @{ 
    'L' = 'installDate';
    'E' = {
        "{0}-{1:00}-{2:00}" -f `
            [Int]$_.PSBase.Properties["installedon"].value.Split('/')[2], `
            [Int]$_.PSBase.Properties["installedon"].value.Split('/')[0], `
            [Int]$_.PSBase.Properties["installedon"].value.Split('/')[1]}  
}  | Sort-Object -Property installDate | Select-Object -Last 1

Esta solución utiliza la propiedad $ _. PSBase.Properties ["installedon"]. Value. Dado que esta propiedad es una cadena en formato m / d / aaaa, debe dividirse manualmente en la / y luego ordenarla.

Uwe
fuente