रिबूट के बाद पैच का पता लगाने के लिए दूरस्थ रूप से खिड़कियों को कैसे पूरा किया जाए


10

हम अपने निर्माण बुनियादी ढांचे के लिए वीएम के निर्माण को स्वचालित करने की योजना बना रहे हैं ताकि हम कर सकें:

  1. आवश्यकता के आधार पर बिल्ड संसाधनों को स्केल करें, जैसे आवश्यकता होने पर अधिक बिल्ड एजेंट जोड़कर और आवश्यकता न होने पर उन्हें हटा दें
  2. बिल्ड पर्यावरण के सभी या कुछ हिस्सों को फिर से बनाएँ / यदि मशीनें मर जाती हैं
  3. जब हमें परीक्षण सेट की आवश्यकता होती है तो बिल्ड वातावरण को डुप्लिकेट करें

इस प्रक्रिया के चरणों में से एक VM बेस छवियों के निर्माण को स्वचालित कर रहा है (हाइपर-वी का उपयोग करके हमारे मामले में)। उसके लिए हमारे पास एक स्क्रिप्ट है:

  1. ISO से नए VHDX को Convert-WindowsImage स्क्रिप्ट के साथ बनाता है । हम वर्तमान में Windows 2012R2 का उपयोग कर रहे हैं, लेकिन उपलब्ध होते ही 2016 के साथ आरंभ करना चाहते हैं।
  2. सभी आधार कॉन्फ़िगरेशन के साथ नए VHDX के लिए एक अनअटेंडेड स्क्रिप्ट जोड़ता है जो हमें चाहिए
  3. लागू- WindowsUpdate स्क्रिप्ट का उपयोग करके नवीनतम विंडोज़ पैच के साथ VHDX को अपडेट करता है
  4. VHDX पर आधारित एक नया हाइपर-वी वीएम बनाता है और इसे शुरू करता है
  5. VM को बूट करने के लिए प्रतीक्षा करता है और WinRM सेवा के लिए दूरस्थ कनेक्शन स्वीकार करने के लिए तैयार होने की प्रतीक्षा करता है
  6. प्रारंभिक कॉन्फ़िगरेशन और नए पैच के कॉन्फ़िगरेशन को पूरा करने के लिए खिड़कियों की प्रतीक्षा करता है
  7. किसी भी आगे पैच लागू करता है
  8. नवीनतम पैच के कॉन्फ़िगरेशन को पूरा करने के लिए रिबूट
  9. पैच को पूरा करने के लिए खिड़कियों की प्रतीक्षा करता है
  10. मशीन के लिए एक sysprep स्क्रिप्ट देता है और उस स्क्रिप्ट को आमंत्रित करता है। यह sysprep चलाता है और फिर मशीन को बंद कर देता है
  11. VM को हटा देता है लेकिन VHDX को रखता है
  12. VHDX से sysprep और unattend फाइलें हटाता है और फिर VHDX को कंपैक्ट करता है
  13. VHDX को टेम्प्लेट स्थान पर ले जाता है और केवल पढ़ने के लिए चिह्नित करता है

समस्या जो हम अनुभव कर रहे हैं, वह चरण 6 और 9 में है। आदर्श रूप से हम मशीन को रिबूट / शट डाउन करने से पहले सभी कॉन्फ़िगरेशन के पूरा होने की प्रतीक्षा करते हैं, लेकिन ऐसा प्रतीत नहीं होता है कि विंडो का कॉन्फ़िगरेशन चरण समाप्त हो गया है।

यूआई से गुजरते समय यह या तो स्पष्ट होता है जब या तो चरण किया जाता है क्योंकि लॉग-इन यूआई प्रक्रिया तैयार होने तक दिखाई नहीं देता है। हालाँकि जब मशीन से दूर से कनेक्ट करने के लिए WinRM का उपयोग किया जाता है तो यह कम स्पष्ट होता है क्योंकि WinRM विन्यास कार्य के साथ काम करने से पहले मशीन तक पहुँच प्रदान करता है।

तो सवाल यह है कि एक दूरस्थ कनेक्शन का पता लगाने के लिए सबसे मूर्खतापूर्ण सबूत तरीका क्या है जिसे विंडोज ने अपडेट अपडेट आदि को समाप्त कर दिया है ताकि हम बाद में समस्या पैदा किए बिना मशीन को रिबूट / बंद कर सकें।

------ EDIT -----

अंत में हम कैथरीन के उत्तर के एक संशोधित संस्करण का उपयोग कर रहे हैं जिसमें हमारी स्क्रिप्ट भी प्रतीक्षा कर रही है windeployऔर ngenपूरी होने वाली है। यह देखते हुए कि ngenओएस काम करने के बाद जब तक पूरा नहीं हो जाता, यह देखते हुए और एक बोनस के रूप में अंतिम VHDX में .NET फ्रेमवर्क ngen-ed होगा, जिसका अर्थ है कि जब हम नया बनाते हैं, तो हमें उससे निपटना नहीं पड़ता है। टेम्पलेट डिस्क के वी.एम. दोनों स्क्रिप्ट जो हम VHDX टेम्पलेट बनाने के लिए उपयोग करते हैं और स्थानीय टेस्ट वातावरण बनाने के लिए स्क्रिप्ट किसी भी रुचि के मामले में जीथब पर हैं।

जवाबों:


6

यह एक अजीब जवाब की तरह लग सकता है, लेकिन ...

यह देखने के लिए जाँच करने के लिए एक PowerShell स्क्रिप्ट है कि क्या Nagios के लिए उपलब्ध अद्यतन हैं । आप शायद नागोइस के बिना इस स्क्रिप्ट या अपने उद्देश्यों के लिए एक संस्करण का उपयोग कर सकते हैं।

जैसा कि वे प्रगति में हैं, के लिए जाँच करें कि Wuauclt और TrustedInstaller चल रहे हैं या नहीं। सर्वर कोर पर अपडेट के बारे में Microsoft की सलाह यहाँ मदद कर सकती है :

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

आप शायद उस जानकारी को कुछ इस तरह से खींच सकते हैं Get-Process -Computername YourImage TrustedInstaller.exe। Wuauclt और TrustedInstaller दोनों प्रक्रियाओं के समाप्त होने के बाद, इसे रिबूट करने के लिए सुरक्षित होना चाहिए।


वह स्क्रिप्ट अपडेट प्राप्त करने और यह पता लगाने की समस्या को हल करती है कि क्या रिबूट की आवश्यकता है, जो कि एक और समस्या है जिसे हमें हल करने की आवश्यकता हो सकती है, लेकिन स्क्रिप्ट रिबूट के इंतजार के साथ सौदा नहीं करती है जहां मशीन काम करने के लिए तैयार है। ।
पेट्रिक

आपने टिप्पणी की थी जब मैं संपादन कर रहा था। मैंने सर्वर कोर में उस स्थिति का पता लगाने के बारे में कुछ जानकारी जोड़ी, जो इसे दूरस्थ रूप से करने के करीब है।
कैथरीन विलियार्ड

1
मैं बहुत खुश हो रहा था। Wuauclt या TrustedInstaller की खोज पर मेरी नज़र होगी।
पेट्रिक

मैं अपने आप को थोड़ा "हिट पोस्ट" खुश हो रहा था। :)
कैथरीन विलियार्ड

1
इस दृष्टिकोण ने मेरे लिए लगभग काम किया, सिवाय इसके कि ट्रस्टेडइनस्टैलर और वुआयुक्लेट दोनों आरंभीकरण से पहले समाप्त हो गए। Windeploy और ngen जोड़ने के बाद स्क्रिप्ट मशीन के सभी इनिशियलाइज़ेशन को पूरा करने के लिए इंतजार करती है (शायद इसलिए कि ngen तब तक पूरी नहीं होती है जब तक कि मशीन ने इनिशियलाइज़िंग पूरी नहीं कर ली है)।
पेट्रिक

3

प्रत्येक Windows अद्यतन पैच सेटअप इवेंट लॉग में कई ईवेंट लिखेगा।

  • इवेंट ID 1 - पैकेज के लिए परिवर्तन की शुरुआत KB ####
  • इवेंट ID 4 - पैकेज KB से पहले एक रिबूट आवश्यक है। #### को स्थापित स्थिति में बदला जा सकता है
  • इवेंट ID 2 - पैकेज KB #### सफलतापूर्वक स्थापित स्थिति में बदल गया था

सभी पैच को निर्धारित करने का एक तरीका लागू किया गया था कि इवेंट ID 4 पर एक चेक को लूप किया जाएगा। उस इवेंट के समय की वर्तमान समय से तुलना करें। यदि कोई घटना आईडी 4 की 5 या 10 मिनट के लिए नहीं लिखी गई थी, तो संभवतः सभी पैटेक किए जाते हैं, और रिबूट करने के लिए तैयार हैं।

यदि आप पैच (इंस्टालेशन 4) स्थापित करने के बाद पहला रिबूट करना चाहते हैं, या दूसरा रीबूट करने के बाद मैं स्पष्ट नहीं हूं कि वे कॉन्फ़िगर करने के बाद (इवेंट 2)। यह कोड पूर्व करता है। बस अपने कदम 10 से पहले अन्य रिबूट के लिए ईवेंट 2 2 के लिए फ़िल्टरहैशटेबल को बदलें।

$target = "bart"
$found = $false
while (-not $found) {
    $lastEvent4 = (get-winevent -comp $target -maxEvents 1 -filterHashTable @{ Logname='Setup'; id = '4';}).timeCreated
    if (((get-date) - $lastEvent4).totalMinutes -gt 10) {
        "do reboot"
        restart-computer -comp -$target
        $found = $true
    } else {
        "wait"
        start-sleep 60
    }
}

क्या यह उन सभी पैकेजों के KB ID को लिखने के लिए काम नहीं करेगा जो इंस्टॉल करना शुरू करते हैं, और केवल तभी पूरा करते हैं जब कोई और अपडेट इन-फ्लाइट नहीं होता है?
सिमोन रिक्टर

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

1
मुझे आपके उत्तर के विस्तार के रूप में मतलब था: जब अपडेट स्थापित होना शुरू होता है (घटना 1), तो इसे सूची में जोड़ा जाता है, और जब यह किया जाता है तब हटा दिया जाता है (घटना 4)। कुछ ट्विकिंग के साथ (असफल अपडेट, रिबूट के दौरान सूची रीसेट?) यह निर्धारित करना संभव होना चाहिए कि क्या अभी भी एक स्थापना चल रही है।
शमौन रिक्टर

तो एक ताजा स्थापित करने के लिए दुर्भाग्य से घटना में कोई प्रविष्टियाँ नहीं हैं। मैंने मशीन को शुरू करने के बाद स्थापित करने की कोशिश नहीं की है, लेकिन मुझे लगता है कि यह दृष्टिकोण उस मामले में ठीक काम करेगा।
पेट्रिक

ताजा स्थापित? उलझन में। आपको यहां 13 चरण की प्रक्रिया मिली है। आपने चरण 6 और 9 के साथ सहायता के लिए कहा। आपका प्रश्न "यह पता लगाने का एक तरीका है कि विंडोज़ ने कॉन्फ़िगरेशन चरण को समाप्त कर दिया है" पैच की तैनाती शुरू करने का तरीका नहीं है।
क्लेटन

0

मुझे निम्नलिखित दृष्टिकोण के साथ अच्छी सफलता मिली है: प्रतीक्षा करें जब तक कि विंडोज स्टार्टअप मॉड्यूल के विंडोज प्रकार इंस्टॉलर सेवा (उर्फ ट्रस्टेडइनस्टॉलर) को मैनुअल (डिमांड स्टार्ट) में बदल देता है - एक रिबूट के बाद। उस बिंदु पर, अपडेट इंस्टॉल करना पूरा कर चुके हैं।

विश्वसनीय इंस्टालर प्रक्रिया कभी-कभी पैच स्थापित होने के बाद भी चलती रहती है? हालाँकि सेवा प्रारंभ प्रकार अभी भी मैनुअल पर रीसेट है।

यदि सिस्टम और सेटअप लॉग के बीच पिछले ईवेंट लॉग संदेश और सहसंबद्ध घटनाओं को देखकर, आप देख सकते हैं कि यदि उपरोक्त अवलोकन सुसंगत / सही है, तो आप अपने लिए सत्यापित कर सकते हैं।

Windows मॉड्यूल इंस्टॉलर में स्टार्ट-अप परिवर्तन 7040 सिस्टम ईवेंट के रूप में लॉग किया गया है, और यह रिबूट के बाद सेटअप लॉग में अंतिम ईवेंट 2 से संबंधित है।

मुझे लगता है, कि जब अपडेट पहली बार इंस्टॉल किए जाते हैं, तो रिबूट की आवश्यकता होने पर यह सेवा 'ऑटो स्टार्ट' पर सेट होती है। अंतिम पैच स्थापित होने पर ('रिबूट की आवश्यकता थी) की परवाह किए बिना इसे' मैनुअल 'पर वापस सेट किया जाता है।

कुछ सर्वरों पर, मैंने देखा है कि विश्वसनीय इंस्टॉलर स्टार्टअप को मैन्युअल से स्वचालित और बैक पर टॉगल किया जाता है, और यह हर घंटे या तो हो सकता है। मुझे संदेह है कि यह कुछ एप्लिकेशन है जो नियमित रूप से अपडेट के लिए जाँच कर रहा है। लेकिन, मुझे अनुभव है, यह आमतौर पर मानने के लिए सुरक्षित लगता है, अगर स्टार्ट-अप मैनुअल है, तो कोई पैचिंग नहीं हो रही है।

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