PS Windows Update cz. 1 Searcher

Nie będę ukrywał swojego zamiłowania do PowerShella, pracuję z nim już od prawie roku. Jednak dzięki swojej rozległej budowie nadal jest mnóstwo obszarów, których jeszcze nie zgłębiłem bądź właśnie poznaję. Jednym z takich obszarów jest właśnie zarządzanie Aktualizacjami systemu Windows.

Podstawowy moduł PowerShella nie zawiera takowych funkcji, niemniej możliwość wykorzystywania swoistych interfejsów w postaci comObject (Component Object Model) umożliwia zarządzanie większością elementów zawartych w systemie Windows, m.in. usługą Windows Update.

Najbardziej przydatnymi interfejsami pod kątem zarządzania Windows Update są:

  • Microsoft.Update.Session
  • Microsoft.Update.UpdateColl
  • Microsoft.Update.ServiceManager
  • Microsoft.Update.SystemInfo
  • Microsoft.Update.Installer
  • Microsoft.Update.AgentInfo

Aby móc skorzystać z tych komponentów konieczne jest najpierw stworzenie obiektów na bazie odpowiednich klas do zarządzania poszczególnymi elementami usługi.

$objSession = New-Object -ComObject "Microsoft.Update.Session"

Mając stworzony obiekt obsługi sesji możemy przejrzeć jakie umożliwia on metody oraz jakie przechowuje wartości.

$objSession | Get-Member

Podstawową metodą obsługi aktualizacji jest metoda CreateUpdateSercher, która odpowiada za wyszukiwanie informacji o aktualizacjach. By z niej skorzystać konieczne jest stworzenie kolejnego obiektu do obsługi wyszukiwania.

$objSearcher = $objSession.CreateUpdateSearcher()

Obiekt ten pozwala na skorzystanie z metod przeglądania historii aktualizacji (nie wymagających łączności z serwerem Windows Update) lub przeglądania dostępnych aktualizacji w usłudze Windows Update.

Aby przeglądać historię wystarczy skorzystać z metody przeszukiwania historii aktualizacji, w której podajemy zakres początkowy i końcowy dostępnych aktualizacji.

$count = $objSearcher.GetTotalHistoryCount()
$colHistory = $objSearcher.QueryHistory(0, $count)

 

By jednak przejrzeć aktualizacje dostępne w usłudze Windows Update, musimy wysłać zapytania wyszukiwania aktualizacji do serwera Windows Update. W zapytaniu tym konieczne jest podanie parametru wyszukiwania np. podaj wszystkie nie zainstalowane aktualizacje na danej maszynie – IsInstalled=0.

$objResults = $objSearcher.Search("IsInstalled=0")

Jako wynik zapytania dostaniemy obiekt zawierający listę dostępnych aktualizacji.  By ją przejrzeć możemy wykorzystać pętlę Foreach.

Foreach($objEntry in $objResults.Updates)  { $objEntry | Select Title, LastDeploymentChangeTime }

 

W kolejnych częściach zaprezentuję jak pobierać I instalować aktualizacje. A dla niecierpliwych odsyłam do modułu, którego używam u siebie PSWindowsUpdate.

Źródła:
http://msdn.microsoft.com/en-us/library/aa387291(v=VS.85).aspx
http://code.msdn.microsoft.com/PSWindowsUpdate

Reklamy

2 thoughts on “PS Windows Update cz. 1 Searcher

  1. Bardzo fajny artykuł. Kod i wytłumaczenie opisane prosto, ale profesjonalnie. Brakuje mi tylko modułu PSWindowsUpdate, o którym wspominasz na końcu. Czy możesz go umieścić lub wysłac na mejla ?

    Pozdrawiam
    hermitagup

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s