Puncte:0

WUA IUpdateSearcher::Metoda de căutare pare să înghețe doar pe unul dintre serverele mele

drapel th

Detalii SISTEM: Ediție = Windows Server 2019 Standard, Versiune = 1809, Compilarea sistemului de operare = 17763.2114

Codul meu:
  - $UpdateSession = Nou-Object -ComObject Microsoft.Update.Session
  - $UpdateServiceManager = Nou-Object -ComObject Microsoft.Update.ServiceManager
  - $UpdateService = $UpdateServiceManager.AddScanPackageService ("Serviciu de sincronizare offline", $CabPath, 1)
  - $UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
  - $UpdateSearcher.ServerSelection = 3
  - $UpdateSearcher.ServiceID = $UpdateService.ServiceID.ToString()
  *Se blochează AICI* - $Missing = $UpdateSearcher.Search("IsInstalled=0")

Scriptul PS rulează bine pe alte câteva servere cu 2012 R2, 2016 și 2019; dar asta imi da batai de cap. Odată ce începe căutarea, -Verbose încetează să ofere rezultate (cu Set-PSDebug -Trace 2).Această metodă de căutare a durat între 3 și 15 minute pe celelalte sisteme, dar chiar și după 24 de ore este încă pe această linie.

Într-un alt fir, snip furnizat mai jos, am găsit ceea ce ar putea fi o soluție, dar trebuie să știu cum să transform funcția de căutare în asincron în timpul căutării. Sau există o altă modalitate de a depana metoda acestui API? WSUS nu a reușit să obțină actualizări de la servere și unele servere nu au fost recunoscute de la AD sau DNS, așa că am folosit scriptul API WUA pentru a căuta offline.

Postare anterioară de Elliot Labs LLC >>

Am vorbit cu managerul de la Microsoft responsabil cu Windows Update (Dave Roth) și a spus că nu ar trebui să încerci să obții starea Windows Update prin intermediul registrului. El a spus că ar trebui să folosești API-ul COM pentru a obține starea executând metoda de căutare și folosind rezultatele returnate pentru starea actualizării computerului dvs.

Mi-a dat și acest sfat:

Ca o simplă informație, pentru a verifica ce actualizări sunt instalate apelând IUpdateSearcher::Search with IsInstalled=1 va genera un obiect updatecollection care conține toate actualizările instalate. Poti sa mergi prin el pentru a vedea ce este deja instalat.

Extindendu-și sfatul cu care ai putea numi această metodă IsInstalled=0 pentru a vedea ce actualizări nu sunt instalate. (vezi exemplu powershell de mai jos).

COM API

API-ul COM este o modalitate bună de a accesa direct Windows Update fără trebuind să analizeze jurnalele. Aplicațiile acestui API variază de la găsire actualizările disponibile pe computer pentru instalare și dezinstalare actualizări.

Puteți utiliza clasa Microsoft.Update.Session pentru a rula o actualizare căutați și apoi numărați numărul de actualizări disponibile pentru a vedea dacă există sunt actualizări pentru computer.

Exemplu PowerShell:

$updateObject = Nou-Object -ComObject Microsoft.Update.Session $updateObject.ClientApplicationID = "Serverfault Exemplu de Script" $updateSearcher = $updateObject.CreateUpdateSearcher() $searchResults = $updateSearcher.Search("IsInstalled=0") Write-Host $searchResults.Updates.Count Dacă rezultatul returnat este mai mare de 0 apoi există actualizări pentru computer care trebuie instalate și/sau descărcat. Puteți actualiza cu ușurință scriptul Powershell pentru a se potrivi aplicatia ta.

Doar un avertisment, se pare că funcția de căutare nu este asincronă, așa că ar îngheța aplicația în timpul căutării. In acest caz tu va dori să-l facă asincron.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.