Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.
Data publikacji: 06-05-2022 | Autor: | Bartosz Bielawski |
Przy zarządzaniu poprawkami w ramach organizacji najczęściej posiłkować się będziemy gotowymi rozwiązaniami, takimi jak WSUS bądź SCCM. I choć oba te menedżery oferują cały wachlarz narzędzi do raportowania, bardzo często potrzebować będziemy rozwiązań skryptowych, które pozwolą nam zarządzać poprawkami.
W tym artykule przyjrzymy się kilku opcjom, dzięki którym w stosunkowo prosty sposób będziemy mogli ustalić, jak wygląda status instalacji poprawek na wybranym serwerze, bez konieczności przebijania się przez wielostronicowe raporty generowane przez uprzednio wspomniane, zaawansowane narzędzia. Na początek przyjrzymy się dwu modułom w PowerShellu, które ułatwią nam pracę z serwerem WSUS (w celu pobrania informacji tam zgromadzonych o interesującym nas serwerze) oraz pracę lokalnie z poprawkami (by sprawdzić, czy obie strony zgadzają się co do tego, czy serwer wymaga poprawek). Dodatkowo moduł ten możemy wykorzystać przy planowaniu instalacji poprawek czy pobieraniu poprawek przed ich instalacją.
> PoshWSUS
Pierwszy moduł to PoshWSUS – dzięki niemu możemy połączyć się z serwerem WSUS, a następnie pobierać i modyfikować jego konfigurację oraz zbierać informacje o statusie instalacji aktualizacji na wybranych komputerach w sieci.
Moduł pobrać i zainstalować możemy z galerii modułów PowerShella:
Install-Module -Name PoshWSUS
Po instalacji musimy zaimportować moduł i połączyć się z naszym serwerem WSUS:
Import-Module -Name PoshWSUS
Connect-PSWSUSServer -WsusServer wsus.contoso.com -Port 8530
Po połączeniu z serwerem możemy zacząć pobierać interesujące nas informacje. Dla przykładu pobierzemy listę serwerów, które przypisane są do grupy, dla której zaaprobowaliśmy aktualizacje z kwietnia 2022:
$grupa = Get-PSWSUSGroup -Name 2022Kwiecien
Get-PSWSUSClient -ComputerTargetGroups $grupa
Inny przykład – pobierzemy informację o aktualizacjach dostępnych dla kategorii Windows Server 2019:
$2019 = Get-PSWSUSCategory -Title 'Windows Server 2019'
Get-PSWSUSUpdate -Category $2019
I wreszcie kwestia najistotniejsza – aprobowanie aktualizacji dla konkretnej grupy serwerów. Potrzebować będziemy w tym przypadku zarówno informacji o aktualizacji, jak i informacji o grupie, do której aktualizację tę zamierzamy przypisać. Dla przykładu – zaaprobujemy aktualizacje opublikowane po pierwszym kwietnia 2022 roku w kategorii Windows Server 2019 dla grupy „2022Kwiecien”:
$aktualizacje = Get-PSWSUSUpdate -Category $2019 -FromCreationDate '2022-04-01'
$grupa = Get-PSWSUSGroup -Name 2022Kwiecien
Approve-PSWSUSUpdate -Action Install -Group $grupa -Update $aktualizacje
Oczywiście, na ogół warto zapoznać się z informację o aktualizacji, która zamierzamy zainstalować. Również do tej informacji uzyskamy dostęp za pomocą poleceń z modułu PoshWSUS:
$aktualizacje[0] | Format-List
Title : 2022-04 Cumulative Update for .NET Framework 3.5, 4.7.2 and 4.8 for
Windows Server 2019 for x64 (KB5012328)
Description : A security issue has been identified in a Microsoft software product
that could affect your system. You can help protect your system by
installing this update from Microsoft. For a complete listing of the
issues that are included in this update, see the associated Microsoft
Knowledge Base article. After you install this update, you may have to
restart your system.
KnowledgebaseArticles : {5012328}
UpdateID : ff28b27a-f01f-4082-9f57-f25be8847ceb
CreationDate : 4/12/2022 5:00:00 PM
ProductTitles : {Windows Server 2019}
W kontekście raportowania o statusie instalacji aktualizacji, najbardziej interesować nas będzie polecenie Get-PSWSUSUpdatePerClient. Konkretniej zaś informacja o aktualizacjach, które zaaprobowaliśmy do instalacji, a które nie znajdują się w jednej z dwóch kategorii: już zainstalowanych bądź niepotrzebnych na interesującym nas systemie. Aby umożliwić to filtrowanie, musimy w pierwszej kolejności skorzystać z innego polecenia – New-PSWSUSUpdateScope:
$zakres = New-PSWSUSUpdateScope -UpdateApprovalActions Install -ExcludedInstallationStates NotApplicable, Installed
$wymaganeAktualizacje = Get-PSWSUSUpdatePerClient -ComputerName serwer -UpdateScope $zakres |
Where-Object {$_.UpdateApprovalAction -eq 'Install'}
Przykładowy wynik dla serwera, który nadal wymaga aktualizacji:
$wymaganeAktualizacje | Format-List
Computername : serwer.contoso.com
UpdateKB : 4535680
UpdateTitle : Security Update for Windows Server 2016 for x64-based Systems
(KB4535680)
UpdateInstallationState : NotInstalled
UpdateApprovalAction : Install
UpdateServerName : wsus.contoso.com
Artykuł pochodzi z miesięcznika: IT Professional
Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.
Transmisje online zapewnia: StreamOnline