Obtenha os hotfixes no Server 2008 Powershell

1

Usando o seguinte comando no Windows Server 2008-R2 funciona:

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

Mas não funciona no Windows Server 2003 (não é de surpreender) OR Server 2008 32 bits (isso é o que é estranho para mim).

Eu recebo o seguinte erro quando executo esse script em um servidor Win 2008 de 32 bits:

Sort-Object : Exception setting "InstalledOn": "Exception calling "Parse" with "1" argument(s): "String was not recognized as a valid DateTime.""

    
por Brian Henson 22.10.2015 / 20:53

2 respostas

2

Está lançando o erro porque não está conseguindo classificá-los por data / hora devido a um hotfix com uma entrada InstalledOn que não pode ser analisada em uma data / hora válida.

Portanto, é muito provável que você tenha as HotFixes instaladas na única máquina que não possui uma "Data de instalação instalada" adequada e, por isso, apenas retorna em branco para essas entradas.

Isso não é específico para uma versão do Windows, pois testei isso em um servidor Windows 2012 R2 e vi o mesmo erro.

Você pode confirmar as datas do InstalledOn executando a consulta sem a classificação:

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

Exemplo:

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 acima que muitos deles não mostram nada para InstalledOn .

    
por 22.10.2015 / 21:37
1

Definitivamente não é a melhor solução, mas funciona para mim:

$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 solução utiliza a propriedade $ _. PSBase.Properties ["installedon"]. value. Como essa propriedade é uma string no formato m / d / yyyy, ela precisa ser dividida manualmente no / e classificar depois.

    
por 16.03.2018 / 19:00