ฉันมีเครือข่ายพร้อมเซิร์ฟเวอร์ windows 2003, 2008 และ 2008r2 ฉันมีสคริปต์ PowerShell ที่ฉันเขียนเพื่อแก้ไขเครื่องท้องถิ่นโดยใช้วัตถุ com "Microsoft.Update" (คล้ายกับการ อัปเดต PowerShell ของ Windows Update ) สคริปต์ของฉันทำงานได้อย่างน่าอัศจรรย์ในพื้นที่ แต่ฉันต้องการใช้ฟังก์ชั่นจากระยะไกลเนื่องจากฉันมีเซิร์ฟเวอร์จำนวนพอสมควรที่จะจัดการ ในกรณีนั้นมันจะล้มลง (คล้ายกับโพสต์อื่นซึ่งไม่ได้แก้ไข)
อย่างไรก็ตามฉันสามารถจำกัดความล้มเหลวให้แคบลงได้ถึงสองวิธีในแต่ละชั้นเรียน
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
หากคุณเรียกใช้สิ่งเหล่านี้ใน PowerShell ภายในเครื่องในฐานะผู้ดูแลระบบคุณจะไม่มีปัญหา หากคุณพยายามใช้คำสั่ง invoke-(หรือเข้าสู่เซสชันหรือ winrs) คุณจะได้รับข้อผิดพลาดดังต่อไปนี้ (นี่เป็นการทดสอบกับ localhost แต่โฮสต์ใดจะทำฉันได้ลองด้วยวิธีการรับรองความถูกต้องที่แตกต่างกันเช่น credssp และ kerberos);
PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()}
Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))"
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
ฉันเคยเห็นสิ่งนี้พูดถึงในบล็อกว่าเป็นบั๊ก แต่ไม่มีการสำรองข้อมูลสำหรับการอ้างสิทธิ์นั้น มีวิธีแก้ไขสองวิธีอยู่และทั้งคู่ก็ไม่ทำให้ฉันมีความสุข
- ใช้ psexec เพื่อรันคำสั่งในฐานะผู้ใช้ระบบ PSExec คือสิ่งที่ฉันพยายามไม่ใช้เนื่องจากพิสูจน์แล้วว่าไม่น่าเชื่อถือ ฉันยังต้องการวิธีแก้ปัญหา powerhell บริสุทธิ์
- สร้างงานที่กำหนดเวลาไว้และบอกให้เรียกใช้สคริปต์ของคุณในฐานะผู้ใช้ระบบ (ผ่านโพสต์ของเขา ) สิ่งนี้ไม่เพียง แต่ยุ่ง แต่ฉันจะไม่ได้รับผลการอัพเดท ฉันจะต้องลงชื่อเข้าใช้ไฟล์หรืออัปเดตฐานข้อมูลหรือบางอย่าง
ฉันเปิดให้วิธีอื่นในการเรียกใช้การอัปเดตในโฮสต์จากระยะไกลเนื่องจากดูเหมือนว่าจะมีปัญหาผู้คนจำนวนมากกำลังกดปุ่ม
ฉันพบเอกสารบางอย่างที่อธิบายข้อความ แต่ไม่ใช่เหตุผลหรือวิธีแก้ปัญหา
ส่งคืนค่าส่งคืน S_OK ถ้าสำเร็จ มิฉะนั้นส่งคืนรหัสข้อผิดพลาด COM หรือ Windows
This method can also return the following error codes. Return code Description E_INVALIDARGA parameter value is invalid. E_ACCESSDENIED This method cannot be called from a remote computer.
จะรู้ได้อย่างไรว่าฉันอยู่บนคอมพิวเตอร์ระยะไกล