Score:0

WUA IUpdateSearcher::Search method ดูเหมือนจะค้างบนเซิร์ฟเวอร์ของฉันเพียง 1 เครื่องเท่านั้น

ธง th

รายละเอียดระบบ: Edition = Windows Server 2019 มาตรฐาน รุ่น = 1809, OS บิลด์ = 17763.2114

รหัสของฉัน:
  - $UpdateSession = New-Object -ComObject Microsoft.Update.Session
  - $UpdateServiceManager = New-Object -ComObject Microsoft.Update.ServiceManager
  - $UpdateService = $UpdateServiceManager.AddScanPackageService("บริการซิงค์ออฟไลน์", $CabPath, 1)
  - $UpdateSearcher = $UpdateSession.CreateUpdateSearcher()
  - $UpdateSearcher.ServerSelection = 3
  - $UpdateSearcher.ServiceID = $UpdateService.ServiceID.ToString()
  *แขวนที่นี่* - $Missing = $UpdateSearcher.Search("IsInstalled=0")

สคริปต์ PS ทำงานได้ดีบนเซิร์ฟเวอร์อื่น ๆ ที่มี 2012 R2, 2016 และ 2019; แต่อันนี้ทำให้ฉันปวดหัว เมื่อเริ่มค้นหา -Verbose จะหยุดให้เอาต์พุต (ด้วย Set-PSDebug -Trace 2)วิธีการค้นหานี้ใช้เวลาตั้งแต่ 3 - 15 นาทีในระบบอื่น แต่แม้จะผ่านไปแล้ว 24 ชั่วโมงก็ยังอยู่ในบรรทัดนี้

ในหัวข้ออื่น snip ด้านล่าง ฉันพบสิ่งที่อาจเป็นวิธีแก้ปัญหา แต่จำเป็นต้องรู้วิธีเปลี่ยนฟังก์ชันการค้นหาเป็น async ขณะค้นหา หรือมีวิธีอื่นในการดีบักเมธอดของ API นี้หรือไม่ WSUS ไม่สามารถรับการอัปเดตจากเซิร์ฟเวอร์ และบางเซิร์ฟเวอร์ไม่ได้รับการยอมรับจาก AD หรือ DNS ดังนั้นฉันจึงใช้สคริปต์ WUA api เพื่อค้นหาแบบออฟไลน์

โพสต์ก่อนหน้าโดย Elliot Labs LLC >>

ฉันได้พูดคุยกับผู้จัดการของ Microsoft ที่รับผิดชอบ Windows Update (Dave Roth) และเขาบอกว่าคุณไม่ควรพยายามที่จะได้รับ สถานะของ Windows Update ผ่านรีจิสตรี เค้าบอกว่าให้ใช้ COM API เพื่อรับสถานะโดยดำเนินการค้นหาและใช้ ผลลัพธ์ที่ส่งคืนสำหรับสถานะการอัปเดตของคอมพิวเตอร์ของคุณ

เขายังให้คำแนะนำนี้กับฉัน:

ในฐานะที่เป็น FYI ง่าย ๆ สำหรับการตรวจสอบว่ามีการติดตั้งการอัปเดตใดบ้าง IUpdateSearcher::Search ด้วย IsInstalled=1 จะสร้าง วัตถุ updatecollection ที่มีการปรับปรุงที่ติดตั้งทั้งหมด คุณสามารถเดิน ผ่านมันเพื่อดูว่ามีการติดตั้งอะไรบ้าง

การขยายคำแนะนำของเขาคุณอาจเรียกวิธีการนั้นด้วย IsInstalled=0 เพื่อดูว่าโปรแกรมปรับปรุงใดไม่ได้ติดตั้งไว้ (ดู ตัวอย่าง PowerShell ด้านล่าง)

COM API

COM API เป็นวิธีที่ดีในการเข้าถึง Windows Update ได้โดยตรงโดยไม่ต้องใช้ ต้องแยกวิเคราะห์บันทึก การประยุกต์ใช้ API นี้มีตั้งแต่การค้นหา การอัปเดตที่มีอยู่ในคอมพิวเตอร์เพื่อติดตั้งและถอนการติดตั้ง การปรับปรุง

คุณสามารถใช้คลาส Microsoft.Update.Session เพื่อเรียกใช้การอัปเดต ค้นหาแล้วนับจำนวนการอัปเดตที่มีเพื่อดูว่ามีหรือไม่ เป็นการปรับปรุงใด ๆ สำหรับคอมพิวเตอร์

ตัวอย่าง PowerShell:

$updateObject = New-Object -ComObject Microsoft.Update.Session $updateObject.ClientApplicationID = "สคริปต์ตัวอย่างความผิดพลาดของเซิร์ฟเวอร์" $updateSearcher = $updateObject.CreateUpdateSearcher() $searchResults = $updateSearcher.Search("IsInstalled=0") เขียน-โฮสต์ $searchResults.Updates.Count หากผลลัพธ์ที่ส่งคืนมากกว่า 0 จากนั้นมีการอัปเดตสำหรับคอมพิวเตอร์ที่จำเป็นต้องติดตั้ง และ/หรือดาวน์โหลด คุณสามารถอัปเดตสคริปต์ PowerShell ให้พอดีได้อย่างง่ายดาย ใบสมัครของคุณ.

โปรดทราบว่าฟังก์ชันการค้นหาไม่ตรงกัน ดังนั้นจะทำให้แอปพลิเคชันของคุณหยุดทำงานขณะค้นหา ในกรณีที่คุณ จะต้องการทำ async

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา