Soru Pencereleri uzaktan nasıl algılamak yeniden başlatma sonrasında yama yapılandırmasını tamamladı


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

  1. Yapı kaynaklarını talebe bağlı olarak ölçeklendirin, ör. Gerektiğinde daha fazla oluşturma aracı ekleyerek ve gerektiğinde bunları kaldırarak
  2. Makineler öldüğünde, yapı ortamının tamamını veya bir kısmını yeniden oluşturun
  3. Test kurulumuna ihtiyaç duyduğumuzda derleme ortamını çoğaltın

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

  1. ISO ile yeni VHDX oluşturur Dönüştürme-WindowsImage senaryo. Şu anda Windows 2012R2 kullanıyoruz, ancak mümkün olan en kısa sürede 2016'ya başlamak istiyoruz.
  2. İhtiyacımız olan tüm temel konfigürasyona sahip yeni VHDX'e bir katılımsızlık komut dosyası ekler
  3. VHDX'i kullanarak en son Windows yamalarını günceller. Uygula-WindowsUpdate senaryo
  4. VHDX'e dayalı yeni bir Hyper-V VM oluşturur ve başlatır
  5. VM'nin önyüklemesini bekler ve WinRM servisinin uzak bağlantıları kabul etmeye hazır olmasını bekler.
  6. Pencerelerin ilk yapılandırmayı ve yeni yamaların yapılandırmasını tamamlamasını bekler.
  7. Başka düzeltme ekleri uygular
  8. En yeni yamaların yapılandırmasını tamamlamak için yeniden başlatma
  9. Pencerelerin yamaları yapılandırmayı tamamlamasını bekler
  10. Bir sysprep komut dosyasını makineye iter ve bu komut dosyasını çağırır. Bu sysprep'i çalıştırır ve makineyi kapatır.
  11. VM'yi siler ama VHDX'i korur
  12. Sysprep'i ve katılımsız dosyaları 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

Karşılaştığımız problem, 6. ve 9. adımlarda gerçekleşiyor. İdeal olarak, makineyi yeniden başlatmadan / kapatmadan önce tüm konfigürasyonun tamamlanmasını bekleriz, ancak bu pencerelerin konfigürasyon aşamasını bitirdiğini algılamanın bir yolu yoktur.

Kullanıcı arayüzünden geçerken, her iki adımın ne zaman yapıldığı çok açıktır çünkü giriş hazır kullanıcı arayüzü, işlem hazır olana kadar gösterilmez. Bununla birlikte, makineye uzaktan bağlanmak için WinRM kullanıldığında, WinRM yapılandırmadan önce makineye erişim sağladığı için daha az netlik kazanır.

Bu yüzden soru, Windows'un güncellemeleri yapılandırmayı bitirdiği uzak bir bağlantı üzerinden tespit etmenin en aptalca bir yoludur. Böylece, daha sonra sorunlara neden olmadan makineyi yeniden kapatabilir / kapatabiliriz.

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

Sonunda, bizim komutumuzun da beklediği, Katherine'in cevabının değiştirilmiş bir versiyonunu kullanıyoruz. windeploy ve ngen Tamamlamak. Verilen ngen OS, çalışmayı başlatmayı tamamladıktan sonra tamamlanıncaya kadar tamamlanmaz ve son olarak VHDX, .NET framework ngen-ed'in tümüne sahip olur. Bu, yeni VM'leri oluşturduğumuzda bununla uğraşmamız gerekmediği anlamına gelir. şablon diski. Oluşturmak için kullandığımız her iki komut dosyası VHDX şablonu ve oluşturmak için komut dosyaları yerel test ortamı kimse ilgilenirse github üzerindedir.


10
2018-01-21 21:13


Menşei




Cevaplar:


Bu garip bir cevap gibi gelebilir, ama ...

Nagios için mevcut güncellemelerin olup olmadığını kontrol etmek için bir PowerShell betiği var.. Nagios olmadan, muhtemelen bu betiği veya amaçlarınız için bir varyantı kullanabilirsiniz.

Devam edip etmedikleri konusunda, Wuauclt ve TrustedInstaller'ın çalışıp çalışmadığını kontrol edin. Microsoft'un Sunucu Çekirdeği güncellemeleri hakkındaki tavsiyeleri burada yardımcı olabilir:

Yüklenen güncellemelere bağlı olarak, yeniden başlatmanız gerekebilir.   Bilgisayar, sistem sizi bu konuda bilgilendirmeyecek olsa da. için   Yükleme işleminin tamamlanıp tamamlanmadığını belirleme, Görev Yöneticisi'ni kullanma   Wuauclt veya Trusted Installer işlemlerinin doğru olmadığını doğrulamak için   aktif olarak çalışıyor. “Görüntüleme” yöntemini de kullanabilirsiniz.   yüklü güncellemeler listesini kontrol etmek için bölüm güncellemeleri ”bölümü.

Muhtemelen bu bilgiyi Get-Process -Computername YourImage TrustedInstaller.exe. Wuauclt ve TrustedInstaller işlemlerinin bittikten sonra yeniden başlatılması güvenli olmalıdır.


6
2018-01-21 21:18



Bu betik, güncelleme alma ve yeniden başlatma gerekip gerekmediğini tespit etme sorununu çözüyor, ki bu da çözmemiz gereken başka bir sorundur, ancak komut dosyası, makinenin çalışmaya hazır olduğu noktaya kadar bir yeniden başlatma için beklemeyle uğraşmaz . - Petrik
Düzenlerken yorum yaptınız. Sunucu Çekirdeğinde, bu durumu uzaktan yapmaya yakın olan bu durumu tespit etme hakkında bazı bilgiler ekledim. - Katherine Villyard
Ben de çok mutluyum. Wuauclt veya TrustedInstaller'ı aramaya bakacağım. - Petrik
Kendimi küçük bir "hit post" olmaktan mutlu oldum. :) - Katherine Villyard
Bu yaklaşım neredeyse benim için çalıştı, ancak TrustedInstaller ve Wuauclt başlatmadan önce sonlandırıldı. Windeploy ve ngen eklendikten sonra, betik makinenin tüm başlatma işlemlerini tamamlamasını bekler (muhtemelen, makine başlatıldıktan sonra, ngen tamamlanana kadar tamamlanmaz). - Petrik


Her bir Windows güncelleme yaması, Kurulum olay günlüğünde birkaç olay yazacaktır.

  • Olay Kimliği 1 - KB için paket değişiklikleri başlatılıyor ####
  • Olay KIMLIĞI 4 - KB #### paketinin yüklü duruma getirilebilmesi için yeniden başlatma gerekiyor
  • Olay Kimliği 2 - Paket KB #### başarıyla değiştirildi Yüklü devlet

Tüm yamaların uygulanmasının bir yolu, Olay Kimliği 4'ü kontrol etmek olacaktır. O olayın zamanını mevcut saate göre karşılaştırın. 5 veya 10 dakika boyunca hiçbir olay ID 4'leri yazılmamışsa, tüm pataches muhtemelen yapılır ve yeniden başlatmaya hazırdır.

Düzeltme işlemleri tamamlandığında (event4) ya da yapılandırmayı tamamladıktan sonra ikinci yeniden başlatma yapmak istediğinizde (olay 2), ilk yeniden başlatma işlemini yapmak istediğinizden emin değilim. Bu kod eskiyi yapar. Sadece adım 10'dan önce diğer yeniden başlatma için eventHashTable olay kimliği 2 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
    }
}


3
2018-01-21 22:32



Yüklemeye başlayan tüm paketlerin KB Kimliklerini yazmak ve yalnızca daha fazla güncelleme yapılmadığında uçuşun tamamlanması gerektiğini düşünmüyor muydu? - Simon Richter
Yamaların listesi her ay Salı günü değiştirilecek. Her ay yeni bir liste kullanmak için sürecin güncellenmesi devam eden bir bakım noktası olacaktı ... Önerdiğim şeyin daha basit olacağını düşündüm. - Clayton
Cevabınıza bir uzantı olarak kastediyorum: güncelleme kurulmaya başladığında (olay 1), listeye eklenir ve raporlar raporlandığında kaldırılır (olay 4). Bazı düzeltme (başarısız güncellemeler, yeniden başlatma sırasında liste sıfırlama) ile hala bir kurulumun devam edip etmediğini belirlemek mümkün olmalıdır. - Simon Richter
Yani yeni bir kurulum için maalesef eventlog'da giriş yok. Makine başlatıldıktan sonra yüklemeyi denemedim, ancak bu yaklaşımın bu durumda iyi çalışacağını varsayalım. - Petrik
Taze yükleme? Şaşkın. Burada 13 adımlık bir sürecin var. 6. ve 9. adımlarla ilgili yardım talebinde bulundunuz. Sorunuz, "yamaların dağıtılmaya başlanmasının bir yolu değil," pencerelerin yapılandırma aşamasını bitirdiğini algılamanın bir yolu "idi. - Clayton


Aşağıdaki yaklaşımla başarılı oldum: Windows yeniden başlatıldıktan sonra Windows Modül Yükleyici Hizmeti'nin (aka TrustedInstaller) başlangıç ​​türünü Manual (Demand Start - Başlangıç) olarak değiştirene kadar bekleyin. Bu noktada, güncellemeler yüklemeyi tamamladı.

Güvenilir Yükleyici işlemi bazen yamalar yüklendikten sonra çalışmaya devam eder? Ancak servis başlangıç ​​tipi hala Manuel olarak sıfırlanır.

Yukarıdaki gözlem kayıtlarının tutarlı / doğru olması durumunda, önceki olay günlüğü iletilerine bakarak ve Sistem ile Kurulum günlükleri arasındaki olayları ilişkilendirerek kendiniz için doğrulayabilirsiniz.

Windows Modül Yükleyicisi'nde başlangıç ​​değişikliği 7040 Sistem olayı olarak kaydedilir ve yeniden başlatıldıktan sonra Kur günlüğündeki son Olay 2 ile ilişkilidir.

Güncellemeler ilk kurulduğunda, yeniden başlatma gerektiğinde bu hizmetin 'Otomatik Başlat' 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üvenilen Installer başlangıcının Manuel'den Otomatik'e ve arkadan hızlı bir şekilde değiştiğini fark ettim ve bu her saatte bir gerçekleşebilir. Güncellemeleri düzenli olarak kontrol eden bir uygulama olduğundan şüpheleniyorum. Ancak, benim deneyimim, eğer başlangıç ​​manuel ise, o zaman hiçbir yama yapılmadığını varsaymak genellikle güvenli görünüyor.


0
2018-03-24 10:40