PSWindowsUpdate moduł do zarządzania aktualizacjami Windows z PowerShell

Bardzo wygodne jest użycie specjalnego modułu PowerShell do zarządzania aktualizacjami systemu Windows z wiersza poleceń - PSWindowsUpdate. Moduł PSWindowsUpdate nie jest wbudowany w system Windows i jest modułem innej firmy dostępnym w Galerii skryptów Technet. PSWindowsUpdate pozwala administratorom zdalnie sprawdzać, instalować, usuwać i ukrywać określone aktualizacje na komputerach i stacjach roboczych. Moduł PSWindowsUpdate jest szczególnie cenny, gdy jest używany do zarządzania aktualizacjami w podstawowych wersjach systemu Windows Server, które nie mają interfejsu graficznego, a także podczas konfigurowania obrazu systemu Windows w trybie inspekcji.

Treść

  • Zainstaluj moduł zarządzania aktualizacjami PSWindowsUpdate
  • Przegląd poleceń modułu PSWindowsUpdate
  • Zarządzanie aktualizacjami systemu Windows na komputerach zdalnych za pomocą programu PowerShell
  • Uzyskaj listę dostępnych aktualizacji systemu Windows z programu PowerShell
  • Install-WindowsUpdate: Zainstaluj aktualizacje za pomocą PSWindowsUpdate
  • Get-WUHistory: Wyświetl historię zainstalowanych aktualizacji systemu Windows
  • Remove-WindowsUpdate: Odinstaluj aktualizacje
  • Hide-WindowsUpdate: jak ukryć niepotrzebne aktualizacje za pomocą PowerShell

Zainstaluj moduł zarządzania aktualizacjami PSWindowsUpdate

Jeśli używasz systemu Windows 10, możesz zainstalować moduł PSWindowsUpdate z repozytorium online za pomocą menedżera pakietów PackageManagement za pomocą jednego polecenia:

Install-Module -Name PSWindowsUpdate

W moim przypadku pojawiło się ostrzeżenie, że PSWindowsUpdate 1.5.2.6 jest już zainstalowany. Aby zainstalować nowszą wersję, musisz uruchomić polecenie:

Install-Module -Name PSWindowsUpdate -Force

Po zakończeniu instalacji musisz sprawdzić dostępność pakietu:

Get-Package -Name PSWindowsUpdate

Jeśli masz starszą wersję systemu Windows (Windows 7 / 8.1 / Windows Server 2008 R2 / 2012 R2) lub nie masz bezpośredniego dostępu do Internetu, możesz ręcznie zainstalować moduł PSWindowsUpdate.

Moduł PSWindowsUpdate można zainstalować na dowolnej obsługiwanej wersji systemu Windows, począwszy od Vista / Windows Server 2008 z zainstalowanym programem PowerShell 2.0 (ale zalecany jest PoSh 3.0 i wyższy).

  1. Pobierz najnowszą wersję modułu PSWindowsUpdate ze strony: https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc i odblokuj pobrany plik; zwróć uwagę, że tylko stara wersja modułu jest dostępna w galerii skryptów TechNet - wer. 1.5.6. Podczas gdy menedżer pakietów NuGet instaluje PSWindowsUpdate 2.1.1.2 z PowershellGallery. Dostępne polecenia cmdlet i parametry mogą się różnić w różnych wersjach modułu..
  2. Rozpakuj archiwum z modułem do jednego z katalogów % USERPROFILE% \ Documents \ WindowsPowerShell \ Modules lub % WINDIR% \ System32 \ WindowsPowerShell \ v1.0 \ Moduły (przy ciągłym korzystaniu z modułu jest to najlepsza opcja);
  3. Zezwalaj na skrypty: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
  4. Teraz możesz zaimportować moduł do sesji PowerShell: Moduł importu PSWindowsUpdate Uwaga. W systemie Windows 7 / Server 2008 R2 podczas importowania modułu PSWindowsUpdate może wystąpić błąd, taki jak: Nazwa „Odblokuj plik” nie jest rozpoznawana jako nazwa polecenia cmdlet. Faktem jest, że moduł używa niektórych funkcji, które pojawiły się tylko w PowerShell 3.0. Aby korzystać z tych funkcji, musisz zaktualizować PowerShell lub ręcznie usunąć linię | Odblokuj plik z pliku PSWindowsUpdate.psm1.

Po zainstalowaniu modułu PSWindowsUpdate na komputerze można zdalnie zainstalować go na innych komputerach lub serwerach za pomocą polecenia cmdlet Aktualizacja-wumodule. Na przykład, aby skopiować moduł PSWindowsUpdate z komputera na dwa zdalne serwery, wykonaj polecenia (potrzebujesz dostępu do zdalnych serwerów za pomocą protokołu SMB, port TCP 445):

$ Targets = „Server1”, „Server2”
Update-WUModule -ComputerName $ Targets -Local

Aby zapisać moduł w katalogu sieciowym w celu dalszego importu modułu na inne komputery, wykonaj:

Save-Module -Name PSWindowsUpdate -Path \\ fs01 \ ps \

Przegląd poleceń modułu PSWindowsUpdate

Lista dostępnych poleceń cmdlet modułu może być wyświetlana w następujący sposób:

get-command -module PSWindowsUpdate

Krótko opisujemy cel poleceń modułu:

  • Clear-wujob - Użyj Get-WUJob, aby wywołać zadanie WUJob w harmonogramie.
  • Pobierz-WindowsUpdate (alias dla Get-WindowsUpdate -Download) - pobierz listę aktualizacji i pobierz je;
  • Get-WUInstall, Install-WindowsUpdate (alias dla Get-WindowsUpdate -Install) - zainstaluj aktualizacje;
  • Hide-WindowsUpdate (alias dla Get-WindowsUpdate -Hide: $ false) - ukryj aktualizację;
  • Uninstall-windowsupdate - usuń aktualizację za pomocą opcji Użyj Usuń-WindowsUpdate;
  • Dodaj-WUServiceManager - rejestracja serwera aktualizacji (Windows Update Service Manager) na komputerze;
  • Włącz-Wuremoting - włącz reguły zapory, które pozwalają na zdalne korzystanie z polecenia cmdlet PSWindowsUpdate;
  • Pobierz-WindowsUpdate (Get-WUList) - wyświetla listę aktualizacji, które spełniają określone kryteria, pozwala znaleźć i zainstalować żądaną aktualizację. To jest główne polecenie cmdlet modułu PSWindowsUpdate. Umożliwia pobieranie i instalowanie aktualizacji z serwera WSUS lub Microsoft Update. Umożliwia wybranie kategorii aktualizacji, określonych aktualizacji i określenie zasad ponownego uruchamiania komputera podczas instalowania aktualizacji;
  • Get-WUApiVersion - Pobierz wersję Windows Update Agent na komputer
  • Get-wuhistory - wyświetlać listę zainstalowanych aktualizacji (historia aktualizacji);
  • Get-WUInstallerStatus - Sprawdzanie stanu usługi Instalatora Windows
  • Get-wujob - Uruchom zadania aktualizacji WUJob w Harmonogramie zadań
  • Get-WULastResults - daty ostatniego wyszukiwania i instalacji aktualizacji (LastSearchSuccessDate i LastInstallationSuccessDate);
  • Get-WURebootStatus - pozwala sprawdzić, czy konieczne jest ponowne uruchomienie w celu zastosowania określonej aktualizacji;
  • Get-WUServiceManager - wyjściowe źródła aktualizacji;
  • Get-wusettings - Pobierz ustawienia klienta Windows Update
  • Invoke-wujob - zdalne wywoływanie zadań WUJobs w Task Schduler w celu natychmiastowego wykonania zadań PSWindowsUpdate.
  • Remove-WindowsUpdate - odinstaluj aktualizację;
  • Remove-WUServiceManager - wyłącz Menedżera usług Windows Update;
  • Set-pswusettings - zapisz ustawienia modułu PSWindowsUpdate w pliku XML;
  • Ustawienia zestawu - Skonfiguruj ustawienia klienta Windows Update
  • Aktualizacja-wumodule - zaktualizuj moduł PSWindowsUpdate (możesz zaktualizować moduł na komputerze zdalnym, kopiując go z bieżącego lub zaktualizuj z PSGallery).

Zarządzanie aktualizacjami systemu Windows na komputerach zdalnych za pomocą programu PowerShell

Prawie wszystkie polecenia cmdlet modułu PSWindowsUpdate pozwalają kontrolować instalację aktualizacji na komputerach zdalnych. Do tego służy atrybut. -Nazwa komputera Host1, Host2, Host3.

Aby zarządzać aktualizacjami na komputerach zdalnych, musisz dodać ich nazwy do listy zaufanych hostów winrm:

winrm set winrm / config / client '@ TrustedHosts = "HOST1, HOST2, ..."'

Zainstaluj moduł PSWindowsUpdate na komputerach zdalnych i zezwól procesowi dllhost.exe na dostęp do dynamicznych portów RPC w zaporze.

Uzyskaj listę dostępnych aktualizacji systemu Windows z programu PowerShell

Możesz wyświetlić listę aktualizacji dostępnych dla tego komputera na serwerze aktualizacji za pomocą poleceń Get-WindowsUpdate lub Get-WUList.

Aby sprawdzić listę dostępnych aktualizacji na komputerze zdalnym, wykonaj następujące czynności:

Get-WUList -ComputerName server2

Możesz sprawdzić, skąd system operacyjny Windows powinien otrzymywać aktualizacje. Uruchom polecenie:

Get-WUServiceManager

ServiceID IsManaged IsDefault Nazwa --------- --------- --------- ---- 8b24b027-1dee-babb-9a95-3517dfb9c552 False False DCat Flighting Prod 855e8a7c -ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod) 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service 9482f4b4-e343-43b6-b170-9a65bc822c77 False

Jak widać, komputer jest skonfigurowany do odbierania aktualizacji z lokalnego serwera WSUS (Windows Server Update Service = True). W takim przypadku powinna zostać wyświetlona lista aktualizacji zatwierdzonych dla Twojego komputera w programie WSUS.

Jeśli chcesz przeskanować komputer na serwerach Microsoft Update (oprócz aktualizacji systemu Windows, serwery te zawierają aktualizacje pakietu Office i inne produkty) w Internecie, uruchom polecenie:

Get-WUlist -MicrosoftUpdate

Otrzymasz ostrzeżenie:

Get-WUlist: Nie znaleziono usługi Windows Update na komputerze

Aby włączyć skanowanie w witrynie Microsoft Update, uruchom polecenie:

Dodaj-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7

Teraz możesz skanować do Microsoft Update. Jak widać, w tym przypadku znaleziono dodatkowe aktualizacje dla Microsoft Visual C ++ 2008 i Microsoft Silverlight.

Aby sprawdzić wersję Agenta usługi Windows Update na komputerze, uruchom polecenie:

Get-WUApiVersion

ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion ------------ --------------- ------------- ----- ----- --------------- FS01 2.1.1.2 2.0.6995.28496 8.0 10.0.14393.2879

Aby usunąć niektóre produkty lub określone pakiety z listy aktualizacji otrzymywanych przez komputer, możesz je wykluczyć poprzez:

  • Kategorie (-NotCategory);
  • Nazwa (-NotTitle);
  • Numer aktualizacji (-NotKBArticleID).

Na przykład wykluczamy z listy aktualizacji sterowników OneDrive i jeden konkretny KB:

Get-WUlist -NotCategory „Drivers” -NotTitle OneDrive -NotKBArticleID KB4533002

Install-WindowsUpdate: Zainstaluj aktualizacje za pomocą PSWindowsUpdate

Aby automatycznie pobrać i zainstalować wszystkie dostępne aktualizacje dla systemu Windows, wykonaj następujące czynności:

Zainstaluj-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

Klawisz AcceptAll umożliwia zatwierdzenie instalacji dla wszystkich pakietów, a funkcja AutoReboot umożliwia systemowi Windows automatyczne ponowne uruchomienie po zainstalowaniu aktualizacji..

Możesz zapisać historię instalowania aktualizacji w pliku dziennika (może być używany zamiast WindowsUpdate.log).

Zainstaluj-WindowsUpdate -AcceptAll -Install -AutoReboot | Plik wyjściowy „c: \ $ (get-date -f rrrr-MM-dd) -WindowsUpdate.log” -force

Można zainstalować tylko określone aktualizacje według numeru KB:

Pobierz-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

W takim przypadku musisz ręcznie potwierdzić instalację każdej aktualizacji.

Jeśli chcesz wykluczyć niektóre aktualizacje z listy instalacji, wykonaj:

Install-WindowsUpdate -NotCategory „Drivers” -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot

Moduł umożliwia zdalne rozpoczęcie instalowania aktualizacji na kilku komputerach lub serwerach jednocześnie (moduł PSWindowsUpdate musi być obecny na komputerach). Jest to szczególnie wygodne, ponieważ pozwala administratorowi nie wprowadzać ręcznie wszystkich serwerów podczas planowanej instalacji aktualizacji. Następujące polecenie zainstaluje wszystkie dostępne aktualizacje na trzech zdalnych serwerach:

Invoke-WUInstall -ComputerName server1, server2, server3 -Script ipmo PSWindowsUpdate; Pobierz-WindowsUpdate -Install -AcceptAll -AutoReboot | Plik wyjściowy C: \ Windows \ PSWindowsUpdate.log -Potwierdź: $ false -Verbose -SkipModuleTest -RunNow

W module PSWindowsUpdate 2.1 musisz użyć Invoke-WUJob zamiast cmdlet Invoke-WUInstall. To polecenie cmdlet tworzy zadanie harmonogramu na komputerze zdalnym uruchamianym z SYSTEMU.

Dlatego w nowych wersjach modułu do zdalnej instalacji aktualizacji użyj następującego polecenia:

$ ServerNames = „serwer 1, serwer 2, serwer 3”
Invoke-WUJob -ComputerName $ ServerNames -Script ipmo PSWindowsUpdate; Zainstaluj-WindowsUpdate -AcceptAll | Plik wyjściowy C: \ Windows \ PSWindowsUpdate.log -RunNow -Confirm: $ false

Możesz zainstalować aktualizacje na komputerze zdalnym i wysłać raport e-mail do administratora:

Install-WindowsUpdate -ComputerName server1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport -PSWUSettings @ SmtpServer = "smtp.winitpro.ru"; Od = "[email protected]"; To = "[email protected]" 25 - Verbose

Get-WUHistory: Wyświetl historię zainstalowanych aktualizacji systemu Windows

Za pomocą polecenia Get-wuhistory możesz uzyskać listę aktualizacji zainstalowanych na komputerze wcześniej automatycznie lub ręcznie.

Możesz uzyskać informacje o dacie instalacji określonej aktualizacji:

Get-WUHistory | Where-Object $ _. Dopasuj tytuł "KB4517389" | Wybierz obiekt * | ft

Aby uzyskać informacje o zainstalowanej aktualizacji na kilku komputerach zdalnych, możesz użyć następującego kodu:

„serwer 1”, „serwer 2” | Get-WUHistory | Where-Object $ _. Dopasuj tytuł "KB4011634" | Wybierz obiekt * | ft

Remove-WindowsUpdate: Odinstaluj aktualizacje

Aby poprawnie usunąć aktualizacje, użyj polecenia cmdlet Remove-WindowsUpdate. Musisz tylko podać numer KB jako argument parametru KBArticleID. Aby opóźnić automatyczne ponowne uruchomienie komputera, możesz dodać klucz -Nie, uruchom ponownie:

Remove-WindowsUpdate -KBArticleID KB4011634 -NoRestart

Hide-WindowsUpdate: jak ukryć niepotrzebne aktualizacje za pomocą PowerShell

Możesz ukryć niektóre aktualizacje, aby nigdy nie były instalowane przez usługę Windows Update na twoim komputerze (najczęściej ukrywają aktualizacje sterowników). Na przykład, aby ukryć aktualizacje KB2538243 i KB4524570, uruchom następujące polecenia:

$ HideList = „KB2538243”, „KB4524570”
Get-WindowsUpdate -KBArticleID $ HideList -Hide

lub użyj aliasu:

Hide-WindowsUpdate -KBArticleID $ HideList -Verbose

Teraz następnym razem skanuj w poszukiwaniu aktualizacji za pomocą polecenia Get-WUlist ukryte aktualizacje nie pojawią się na liście łat dostępnych do instalacji.

Możesz wyświetlić listę aktualizacji ukrytych na tym komputerze w następujący sposób:

Pobierz-WindowsUpdate -IsHidden

Uwaga: atrybut H (ukryty) pojawił się w kolumnie Status ukrytych aktualizacji.

Możesz cofnąć ukrywanie niektórych aktualizacji w następujący sposób:

Get-WindowsUpdate -KBArticleID $ HideList -WithHidden -Hide: $ false

lub tak:

Pokaż-WindowsUpdate -KBArticleID $ HideList

Dla tych, którzy czują się niekomfortowo w konsoli PowerShell, mogę polecić narzędzie graficzne Windows Update MiniTool do zarządzania aktualizacjami Windows 10.