Получение исправлений в Powershell Server 2008

использование следующей команды в Windows Server 2008-R2 работает:

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

но не работает на Windows Server 2003 (не удивительно) или Server 2008 32-бит (это то, что странно для меня).

Я получаю следующую ошибку при запуске этого скрипта на 32-битном сервере Win 2008:

Sort-Object: параметр исключения "InstalledOn":" вызов исключения "синтаксический анализ" с аргументом "1": "строка не была распознана как допустимый DateTime.""

26
задан Brian Henson
11.02.2023 6:08 Количество просмотров материала 2392
Распечатать страницу

2 ответа

Это бросает ошибку, потому что он не в состоянии сортировать их по дате/времени из-за исправления с записью InstalledOn, которые не могут быть разобраны в допустимую дату/время.

Так, скорее всего, у вас есть исправления, установленные на одной машине, которые не имеют надлежащего "установлен на дату", и поэтому он просто возвращает пустой для этих записей.

Это не относится к версии Windows, а я испытал это на сервере Windows 2012 R2 и увидел ту же ошибку.

вы можете подтвердите даты установки, выполнив запрос без сортировки:

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

пример:

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

обратите внимание, что многие из них показывают ничего InstalledOn.

2
отвечен Ƭᴇcʜιᴇ007 2023-02-12 13:56

определенно не лучшее решение, но работает для меня:

$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

Это решение использовать $_.PSBase.Свойства["установить"].свойство value. Так как это свойство представляет собой строку в формате m/d / yyyy, ее нужно разбить вручную на / и отсортировать.

1
отвечен Uwe 2023-02-12 16:13

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх