पैचिंग सर्वर के साथ समस्याएँ winrm और Microsoft.Update.Session का उपयोग करके दूर से


11

मेरे पास विंडोज़ 2003, 2008 और 2008r2 सर्वर के साथ एक नेटवर्क है। मेरे पास एक पॉवरशेल स्क्रिप्ट है जिसे मैंने "Microsoft.Update" कॉम ऑब्जेक्ट का उपयोग करके एक स्थानीय मशीन को पैच करने के लिए लिखा था। ( विंडोज अपडेट पॉवरशेल रीमोटिंग के समान ।) मेरी स्क्रिप्ट स्थानीय रूप से शानदार काम करती है, लेकिन मैं इसका उपयोग करना चाहूंगा, क्योंकि मैं इसे प्रबंधित करने के लिए उचित संख्या में सर्वर रखता हूं। उस स्थिति में यह नीचे गिरता है (उसी तरह अन्य पद, जो हल नहीं किया गया था)।

मैं हालांकि एक विशेष वर्ग पर दो तरीकों से विफलता को कम करने में सक्षम था।

(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()

यदि आप एक व्यवस्थापक के रूप में स्थानीय स्तर पर इन्हें चलाते हैं, तो आपके पास कोई समस्या नहीं होगी। यदि आप चालान-कमांड (या प्रवेश-सत्र, या विजेता) का उपयोग करने का प्रयास करते हैं, तो आपको निम्न त्रुटि मिलेगी। (यह स्थानीयहोस्ट के साथ परीक्षण कर रहा है, लेकिन कोई भी होस्ट करेगा। मैंने अलग-अलग प्रमाणीकरण विधियों जैसे कि क्रेडिट्स और केर्बरोस के साथ भी कोशिश की है।)

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 वह है जो मैं उपयोग नहीं करने की कोशिश कर रहा हूं क्योंकि यह अविश्वसनीय साबित हुआ है। मुझे शुद्ध पॉवरशेल समाधान भी चाहिए।
  • एक शेड्यूल किए गए कार्य को बनाएं और बताएं कि सिस्टम स्क्रिप्ट के रूप में अपनी स्क्रिप्ट को चलाने के लिए। (टी पोस्ट के माध्यम से ) यह न केवल गन्दा है, बल्कि फिर मेरे पास अद्यतन परिणाम नहीं हैं। मुझे एक फ़ाइल में लॉग इन करना होगा या डेटाबेस या कुछ और अपडेट करना होगा।

मैं एक मेजबान पर अपडेट को चलाने के लिए अन्य तरीकों से खुला हूं क्योंकि ऐसा लगता है कि यह एक मुद्दा है जिसे बहुत से लोग मार रहे हैं।

मुझे कुछ डॉक्स मिले जो संदेश की व्याख्या करते हैं लेकिन कारण या समाधान नहीं।

यदि सफल रहा तो रिटर्न रिटर्न 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.

मुझे कैसे पता चलेगा कि मैं दूरस्थ कंप्यूटर पर हूँ?


यह एक WSUS उदाहरण को खड़ा करने और उस मार्ग पर जाने की तुलना में बहुत अधिक जटिल लगता है। क्या आपने उस मार्ग पर विचार किया है?
बजे बहाव

आप वास्तव में नियंत्रित नहीं कर सकते जब एक सर्वर को खरीदा जाएगा और यह सुनिश्चित करेगा कि यह अकेले WSUS के साथ वापस आएगा। हम अपडेट के लिए इसका लाभ उठाते हैं। यदि आप इसे मांग पर करने के लिए ट्रिगर कर सकते हैं तो मुझे दिलचस्पी होगी।
पुनर्निर्मित करें

मुझे सर्वर 2012 पर पावरशेल वेब एक्सेस का उपयोग करने में एक ही समस्या है, पर्दे के पीछे यह पावरशेल रीमोटिंग का भी उपयोग करता है। वही त्रुटि।
पीटर हैन्डॉर्फ

1
संभावित उत्तर यहाँ serverfault.com/a/474031/23300
निक

@reconbot मुझे इसका बहुत पुराना सवाल पता है लेकिन मैं भी इस मुद्दे का सामना कर रहा हूं। क्या आपको कोई फिक्स या वैकल्पिक तरीका मिला?
मशीन

जवाबों:


6

आप बस इसे मेट नहीं कर सकते, क्योंकि MS आपको WUApi के माध्यम से इसे करने की अनुमति नहीं देता है।

विवरण यहाँ पाया जा सकता है: http://msdn.microsoft.com/en-us/library/windows/desktop/aa387288(v=vs.85).aspx

आप इसे पूरा करने के लिए अनुसूचित कार्य का उपयोग करने का प्रयास कर सकते हैं।


0

इस तरह के कमांड को रिमोट मशीन पर विशेषाधिकारों के साथ चलाने की आवश्यकता है, जिसे डोमेन व्यवस्थापक उपयोगकर्ता या रिमोट मशीन पर व्यवस्थापक के रूप में चलाने की आवश्यकता है।

यदि आपका पहला मामला है, तो मेरे पास कोई मदद नहीं है, लेकिन आप केवल स्थानीय व्यवस्थापक हैं, दूरस्थ नहीं, get-credentialइस तरह का उपयोग करें।

$cred = get-credential

Invoke-Command -ComputerName localhost -credential $cred -scriptblock {}

एक वैकल्पिक और अधिक प्रत्यक्ष रूप Invoke-Commandसाख के लिए पूछना है:

Invoke-Command -scriptblock {$ENV:username} -Credential ""

मैं एक व्यवस्थापक खाते के क्रेडेंशियल्स के साथ चल रहा हूं, त्रुटि निर्दिष्ट करती है "इस विधि को दूरस्थ कंप्यूटर से नहीं बुलाया जा सकता है।"
पुनर्निर्मित करें

0

मैं स्थानीय वर्चुअल खाते के रूप में चलाने के लिए दूरस्थ सर्वर पर एक JEA समापन बिंदु सेट करके यह काम पाने में सक्षम था।

से https://docs.microsoft.com/en-us/powershell/jea/session-configurations :

स्थानीय आभासी खाता

यदि इस JEA एंडपॉइंट द्वारा समर्थित भूमिकाओं का उपयोग सभी स्थानीय मशीन को प्रबंधित करने के लिए किया जाता है, और एक स्थानीय व्यवस्थापक खाता पर्याप्त रूप से कमांड चलाने के लिए पर्याप्त है, तो आपको JEA को स्थानीय वर्चुअल खाते का उपयोग करने के लिए कॉन्फ़िगर करना चाहिए। वर्चुअल खाते अस्थायी खाते हैं जो एक विशिष्ट उपयोगकर्ता के लिए अद्वितीय हैं और केवल उनके पॉवरशेल सत्र की अवधि के लिए हैं। एक सदस्य सर्वर या कार्य केंद्र पर, वर्चुअल खाते स्थानीय कंप्यूटर के व्यवस्थापक समूह से संबंधित होते हैं , और अधिकांश सिस्टम संसाधनों तक पहुंच रखते हैं। सक्रिय निर्देशिका डोमेन नियंत्रक पर, वर्चुअल खाते डोमेन के डोमेन एडमिन समूह के हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.