1

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

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

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

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

Объект сортировки: Параметр исключения "InstalledOn": "Исключение вызывает" Parse "с аргументом (ами)" 1 ":" Строка не была распознана как допустимый DateTime. ""

2 ответа2

2

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

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

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

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

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 .

1

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

$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.Свойства ["установлен на"]. Значение свойства. Поскольку это свойство является строкой в формате m/d/yyyy, его необходимо разделить вручную на / и затем отсортировать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .