Windows yeniden başlatıldıktan sonra yama yapılandırmasını tamamladı


10

Yapı altyapımız için VM'lerin oluşturulmasını otomatikleştirmeyi planlıyoruz, böylece:

  1. Yapı kaynaklarını isteğe göre ölçeklendirin, örneğin gerektiğinde daha fazla yapı aracısı ekleyerek ve gerektiğinde bunları kaldırarak
  2. Makineler ölürse / olduğunda yapı ortamının tamamını veya bir kısmını yeniden oluşturun
  3. Test kurulumuna ihtiyaç duyduğumuzda oluşturma ortamını çoğaltın

Bu süreçteki adımlardan biri VM taban görüntülerinin oluşturulmasını otomatikleştirmektir (bizim durumumuzda Hyper-V kullanarak). Bunun için bir betiğimiz var:

  1. Convert-WindowsImage komut dosyasıyla ISO'dan yeni VHDX oluşturur . Şu anda Windows 2012R2'yi kullanıyoruz, ancak 2016'ya başlar başlamaz başlamak istiyoruz.
  2. İhtiyacımız olan tüm temel yapılandırmayla yeni VHDX'e katılımsız bir komut dosyası ekler
  3. Apply-WindowsUpdate komut dosyasını kullanarak VHDX'i en son Windows düzeltme ekleriyle güncelleştirir
  4. VHDX tabanlı yeni bir Hyper-V VM oluşturur ve başlatır
  5. Sanal Makinenin önyüklenmesini ve WinRM hizmetinin uzak bağlantıları kabul etmeye hazır olmasını bekler
  6. Pencerelerin ilk yapılandırmayı ve yeni düzeltme eklerinin yapılandırmasını tamamlamasını bekler
  7. Diğer yamaları uygular
  8. En son yamaların yapılandırmasını tamamlamak için yeniden başlatır
  9. Yamaların yapılandırılmasını tamamlamak için pencerelerin beklenmesi
  10. Makineye bir sysprep betiği gönderir ve bu betiği çağırır. Bu sysprep komutunu çalıştırır ve ardından makineyi kapatır
  11. VM'yi siler ancak VHDX'i korur
  12. Sysprep ve katılımsız yükleme dosyalarını VHDX'ten kaldırır ve ardından VHDX'i sıkıştırır
  13. VHDX'i şablon konumuna taşır ve salt okunur olarak işaretler

Yaşadığımız sorun 6. ve 9. adımlardadır. İdeal olarak, makineyi yeniden başlatmadan / kapatmadan önce tüm yapılandırmanın tamamlanmasını bekleriz, ancak pencerelerin yapılandırma aşamasını tamamladığını algılamanın bir yolu yoktur.

Kullanıcı arayüzünden geçerken her iki adımın da ne zaman yapılacağı çok açıktır çünkü oturum açma kullanıcı arayüzü işlem hazır olana kadar görünmez. Ancak, WinRM'yi makineye uzaktan bağlanmak için kullanırken, bu daha az açıktır, çünkü WinRM, konfigürasyon çalışması yapılmadan önce makineye erişim sağlar.

Yani soru, Windows'un güncellemeleri vb. Yapılandırmayı bitirdiği uzak bir bağlantı üzerinden tespit etmenin en aptalca yolu nedir, böylece daha sonra sorun çıkarmadan makineyi yeniden başlatabilir / kapatabiliriz.

------ DÜZENLE -----

Sonunda senaryomuzun da beklemesi windeployve ngentamamlaması için Katherine'in cevabının değiştirilmiş bir versiyonunu kullanıyoruz . ngenİşletim sisteminin bu işleri başlatmayı tamamlamasından sonraya kadar tamamlanmadığı göz önüne alındığında ve bonus olarak nihai VHDX, tüm .NET framework ngen-ed'e sahip olacak, yani yeni oluşturduğumuzda bununla uğraşmak zorunda değiliz Şablon disk VM'leri. Hem VHDX şablonu oluşturmak için kullandığımız hem de yerel test ortamını oluşturmak için kullanılan komut dosyaları , herkesin ilgisini çekmesi durumunda github üzerindedir.

Yanıtlar:


6

Bu garip bir cevap gibi gelebilir, ama ...

Nagios için kullanılabilir güncellemeler olup olmadığını kontrol etmek için bir PowerShell betiği vardır . Bu komut dosyasını veya bir varyantı Nagios olmadan amaçlarınız için kullanabilirsiniz.

Devam etmekte olup olmadıklarına gelince, Wuauclt ve TrustedInstaller'ın çalışıp çalışmadığını kontrol edin. Microsoft'un Sunucu Çekirdeğindeki güncelleştirmelerle ilgili önerileri burada yardımcı olabilir :

Yüklü güncelleştirmelere bağlı olarak, sistem bunu size bildirmeyecek olsa da bilgisayarı yeniden başlatmanız gerekebilir. Yükleme işleminin tamamlanıp tamamlanmadığını belirlemek için, Wuauclt veya Güvenilen Yükleyici işlemlerinin etkin çalışmadığından emin olmak için Görev Yöneticisi'ni kullanın. Yüklü güncellemelerin listesini kontrol etmek için "Yüklü güncellemeleri görüntüleme" bölümündeki yöntemleri de kullanabilirsiniz.

Muhtemelen bu bilgileri böyle bir şeyle çekebilirsiniz Get-Process -Computername YourImage TrustedInstaller.exe. Hem Wuauclt hem de TrustedInstaller işlemleri tamamlandıktan sonra, yeniden başlatma güvenli olmalıdır.


Bu komut dosyası, güncelleştirmeleri alma ve yeniden başlatma gerekip gerekmediğini algılama sorununu çözer, bu da çözmemiz gerekebilecek başka bir sorundur, ancak komut dosyası, makinenin çalışmaya hazır olduğu noktaya kadar yeniden başlatmanın beklenmesi ile ilgilenmez. .
Petrik

Ben düzenleme yaparken yorum yaptın. Uzaktan yapmaya yakın olan Sunucu Çekirdeğinde bu durumu algılama hakkında bazı bilgiler ekledim.
Katherine Villyard

1
Çok mutlu oldum. Wuauclt veya TrustedInstaller'ı arayacağım.
Petrik

Biraz "hit yazı" olmaktan mutlu oluyordum. :)
Katherine Villyard

1
Bu yaklaşım benim için neredeyse işe yaradı, ancak başlatılmadan önce TrustedInstaller ve Wuauclt sona erdi. Windeploy ve ngen eklendikten sonra komut dosyası, makinenin tüm başlatmayı tamamlamasını bekler (muhtemelen ngen, makine başlatmayı tamamlayana kadar tamamlanmaz).
Petrik

3

Her Windows güncelleme düzeltme eki, Setup olay günlüğüne birkaç olay yazar.

  • Olay Kimliği 1 - KB #### paketi için değişiklikler başlatma
  • Olay Kimliği 4 - KB #### paketinin yüklü duruma değiştirilebilmesi için yeniden başlatma gerekiyor
  • Olay Kimliği 2 - KB #### paketi Yüklendi durumuna başarıyla değiştirildi

Tüm düzeltme eklerinin uygulandığını belirlemenin bir yolu, Olay Kimliği 4'ü denetlemek olacaktır. Bu etkinliğin saatini geçerli saatle karşılaştırın. 5 veya 10 dakika boyunca hiçbir olay kimliği 4 yazılmamışsa, tüm pataches muhtemelen yapılır ve yeniden başlatılmaya hazırdır.

Düzeltme ekleri yükleme (event4) tamamlandığında ilk yeniden başlatmayı veya yapılandırma tamamlandıktan sonra ikinci yeniden başlatmayı (olay 2) yapmak istiyorsanız açık değilim. Bu kod ilkini yapar. Adım 10'dan önce filterHashTable'ı diğer yeniden başlatma için olay kimliği 2 olarak değiştirin.

$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
    }
}

Yüklemeye başlayan tüm paketlerin KB kimliklerini yazmak işe yaramıyor ve yalnızca uçuşta başka güncelleme olmadığında tamamlandığını varsaymıyor mu?
Simon Richter

Yama listesi her ay Salı yamasıyla değişecek. Her ay yeni bir liste kullanmak için süreci güncellemek devam eden bir bakım noktası olacaktır ... Önerdiğim şeyin daha basit olacağını düşündüm.
Clayton

1
Cevabınıza bir uzantı demek istedim: güncelleme yüklenmeye başladığında (olay 1), listeye eklenir ve rapor verildiğinde kaldırılır (olay 4). Bazı ince ayarlarla (başarısız güncellemeler, yeniden başlatma sırasında liste sıfırlama?) Hala bir kurulum olup olmadığını belirlemek mümkün olmalıdır.
Simon Richter

Yani yeni bir yükleme için maalesef eventlog'da herhangi bir giriş yok. Makine başlatıldıktan sonra yüklemeyi denemedim ancak bu yaklaşımın bu durumda işe yarayacağını varsayıyorum.
Petrik

Yeni kurulum? Şaşkın. Burada 13 adımlık bir sürecin var. 6. ve 9. adımlarla ilgili yardım istediniz. Sorunuz, yamaların dağıtımına başlamanın bir yolu değil, "pencerelerin yapılandırma aşamasını tamamladığını algılamanın bir yolu" idi.
Clayton

0

Aşağıdaki yaklaşımla iyi bir başarı elde ettim: Windows yeniden başlatıldıktan sonra Windows Modül Yükleyici Hizmeti'nin (diğer adıyla TrustedInstaller) başlangıç ​​türünü El ile (İsteğe Bağlı Başlatma) değiştirene kadar bekleyin. Bu noktada, güncellemeler yüklenmeyi tamamladı.

Güvenilir Yükleyici işlemi yamalar yüklendikten sonra da çalışmaya devam eder mi? Ancak, hizmet başlatma türü yine de Manuel olarak sıfırlanır.

Yukarıdaki gözlem tutarlı / doğru ise, önceki olay günlüğü iletilerine bakarak ve Sistem ve Kurulum günlükleri arasındaki olayları ilişkilendirerek kendiniz doğrulayabilirsiniz.

Windows Module Installer'daki başlatma değişikliği 7040 Sistem olayı olarak günlüğe kaydedilir ve yeniden başlatıldıktan sonra Kurulum günlüğündeki son Olay 2 ile ilişkilidir.

Güncellemeler ilk yüklendiğinde, yeniden başlatma gerektiğinde bu hizmetin 'Otomatik Başlatma' olarak ayarlandığını düşünüyorum. Son yama yüklendiğinde (Yeniden başlatma gerekip gerekmediğine bakılmaksızın) 'Manuel' olarak ayarlanır.

Bazı sunucularda, güvenilir Yükleyici başlatmanın Manuel'den Otomatik ve geri hızlı bir şekilde değiştirildiğini fark ettim ve bu her saatte bir meydana gelebilir. Düzenli olarak güncellemeleri kontrol eden bir uygulama olduğundan şüpheleniyorum. Ancak, benim deneyimim, eğer başlangıç ​​Manuel ise, o zaman hiçbir yama meydana gelmediğini varsaymak genellikle güvenli görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.