Egy rendszerüzemeltető számára nagyon fontos a Windows operációs rendszerek frissítésének állapota. Ezt a Windows Update kliens szolgáltatás végzi, ennek állapotát a Microsoft.Update.Autoupdate COM objektumon keresztül tudjuk lekérdezni.
[22] PS C:\> $o = New-Object -ComObject Microsoft.Update.Autoupdate
[23] PS C:\> $o | gm
TypeName: System.__ComObject#{4a2f5c31-cfd9-410e-b7fb-29a653973a0f}
Name MemberType Definition
---- ---------- ----------
DetectNow Method void DetectNow ()
EnableService Method void EnableService ()
Pause Method void Pause ()
Resume Method void Resume ()
ShowSettingsDialog Method void ShowSettingsDialog ()
Results Property IAutomaticUpdatesResults Results () {get}
ServiceEnabled Property bool ServiceEnabled () {get}
Settings Property IAutomaticUpdatesSettings Settings () {get}
Sőt! Nem csak az állapotát tudjuk lekérdezni, hanem vezérelni is tudjuk bizonyos mértékig. Például elindíthatunk egy frissességi vizsgálatot, azaz azt a folyamatot, hogy ellenőrizze a Windows Update kliens, hogy a rendelkezésére álló javítócsomagok közül mindegyik telepítve van-e már, és a hiányzókat telepíti.
[24] PS C:\> $o.detectnow()
[25] PS C:\> $o.results
LastSearchSuccessDate LastInstallationSuccessDate
--------------------- ---------------------------
2009. 12. 05. 15:56:46 2009. 11. 25. 8:13:07
Illetve lekérdezhetjük az aktuális beállításait:
[26] PS C:\> $o.settings
NotificationLevel : 4
ReadOnly : False
Required : False
ScheduledInstallationDay : 0
ScheduledInstallationTime : 3
IncludeRecommendedUpdates : True
NonAdministratorsElevated : True
FeaturedUpdatesEnabled : False
Természetesen az előző példák csak ízelítők próbáltak lenni a COM objektumok kezeléséből, nem kívántam egy komplett COM szakkönyvet írni, hiszen ennek már széles a szakirodalma. A lényeg az, hogy bármilyen COM objektum nagyon egyszerűen megszólítható PowerShellből, így egy meglevő, például VBScriptben írt példa nagyon egyszerűen átemelhető PowerShellbe.