Установить последнее исправление true

#powershell #powershell-3.0

#powershell #powershell-3.0

Вопрос:

Я пытаюсь установить последнее «обновление для системы безопасности» из списка подключенных к сети ПК. Я использую функцию Get-HotFix с несколькими опциями, и это работает, за исключением случаев, когда два разных исправления были обновлены в один и тот же день.. пример

Функция оценки

 (Get-HotFix -ComputerName $Client -Description 'Security Update' | Sort-Object -Property InstalledOn)[-1]
 

Результат

 Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
PC-W007  Security Update  KB4586863     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
 

Полный список исправлений

 Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
PC-W007  Update           KB4578974     NT AUTHORITYSYSTEM  10/23/2020 12:00:00 AM
PC-W007  Update           KB4513661                          1/9/2020 12:00:00 AM
PC-W007  Security Update  KB4516115                          1/9/2020 12:00:00 AM
PC-W007  Update           KB4517245                          1/9/2020 12:00:00 AM
PC-W007  Security Update  KB4528759                          1/9/2020 12:00:00 AM
PC-W007  Security Update  KB4561600     NT AUTHORITYSYSTEM  8/8/2020 12:00:00 AM
PC-W007  Security Update  KB4565554     NT AUTHORITYSYSTEM  8/8/2020 12:00:00 AM
PC-W007  Security Update  KB4569073     NT AUTHORITYSYSTEM  8/21/2020 12:00:00 AM
PC-W007  Security Update  KB4576751     NT AUTHORITYSYSTEM  9/18/2020 12:00:00 AM
PC-W007  Security Update  KB4577670     NT AUTHORITYSYSTEM  10/23/2020 12:00:00 AM
PC-W007  Security Update  KB4580325     NT AUTHORITYSYSTEM  10/23/2020 12:00:00 AM
PC-W007  Security Update  KB4586863     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
PC-W007  Security Update  KB4586786     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
 

Желаемый результат

 PC-W007  Security Update  KB4586786     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
 

Как я могу это сделать?

Обратите внимание на эти два результата: Мне нужно последнее

 PC-W007  Security Update  KB4586863     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
PC-W007  Security Update  KB4586786     NT AUTHORITYSYSTEM  11/19/2020 12:00:00 AM
 

Полный сценарий

 Start-Transcript -Path "$(Get-location)RESULTLOG-$(Get-date -Format "yyyyMMddTHHmmss").log"

Function Get-FileName{
 [System.Reflection.Assembly]::LoadWithPartialName(“System.windows.forms”) |
 Out-Null

 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
 $OpenFileDialog.initialDirectory = Get-Location
 $OpenFileDialog.filter = “All files (*.*)| *.*”
 $OpenFileDialog.ShowDialog() | Out-Null
 $OpenFileDialog.filename
}

$Importfile = Get-FileName
$Clients = Get-Content $Importfile
Foreach($Client in $Clients){

    if (Test-Connection -ComputerName $Client -Count 2 -Quiet) {

        try { 
            (Get-HotFix -ComputerName $Client -Description 'Security Update' | Sort-Object -Property InstalledOn)[-1]
            "==============================================================================="
        }
        catch { 
            "$Client An error occurred." 
            "==============================================================================="
        }  
   }
    else{
        "$Client  >>>>>>>  not on line "
        "==============================================================================="
    }
 }
Stop-Transcript
 

Комментарии:

1. какая версия PoSh вам нужна? версии v2 и v3 немного отличаются … [ усмешка ]

2. Кажется Get-HotFix , что командлет возвращает объекты, свойство InstalledOn которых является строкой без истинной временной части. Также вызывается свойство InstallDate , которое является объектом DateTime, но я никогда не видел, чтобы оно действительно имело значение..

3. @Lee_Dailey Мне нужна версия 3

4. @victorR — я вижу, что вы нашли решение … и опубликовал его. отлично! [ усмешка ] поскольку вам не нужна ps2, пожалуйста, удалите этот тег из вашего вопроса.

Ответ №1:

Я нашел решение своей проблемы, я изменил свою функцию оценки на это :

 (Get-HotFix -ComputerName $Client -Description 'Security Update' | Select-Object -Last 1)