Kami berencana untuk mengotomatisasi pembuatan VM untuk infrastruktur pembangunan kami sehingga kami dapat:
- Skala sumber daya bangunan berdasarkan permintaan, misalnya dengan menambahkan lebih banyak agen pembangunan saat diperlukan dan menghapusnya saat tidak diperlukan
- Buat kembali semua atau sebagian lingkungan bangunan jika / saat mesin mati
- Gandakan lingkungan build saat kami membutuhkan tes
Salah satu langkah dalam proses ini adalah mengotomatiskan pembuatan gambar dasar VM (dalam kasus kami menggunakan Hyper-V). Untuk itu kami memiliki skrip yang:
- Membuat VHDX baru dari ISO dengan skrip Convert-WindowsImage . Kami saat ini menggunakan Windows 2012R2 tetapi akan segera memulai 2016 segera setelah tersedia.
- Menambahkan skrip tanpa pengawasan ke VHDX baru dengan semua konfigurasi dasar yang kita butuhkan
- Memperbarui VHDX dengan tambalan windows terbaru menggunakan skrip Apply-WindowsUpdate
- Menciptakan VM Hyper-V baru berdasarkan VHDX dan memulainya
- Tunggu VM untuk boot dan menunggu layanan WinRM siap menerima koneksi jarak jauh
- Tunggu windows untuk menyelesaikan konfigurasi awal dan konfigurasi patch baru
- Menerapkan tambalan lebih lanjut
- Reboot untuk menyelesaikan konfigurasi tambalan terbaru
- Menunggu windows untuk menyelesaikan konfigurasi tambalan
- Dorong skrip sysprep ke mesin dan aktifkan skrip itu. Ini menjalankan sysprep dan kemudian mematikan mesin
- Menghapus VM tetapi tetap menggunakan VHDX
- Menghapus sysprep dan unattend file dari VHDX dan kemudian memadatkan VHDX
- Memindahkan VHDX ke templat lokasi dan tandai sebagai hanya-baca
Masalah yang kita alami adalah pada langkah 6 dan 9. Idealnya kita menunggu semua konfigurasi selesai sebelum kita me-reboot / mematikan mesin, tetapi sepertinya tidak ada cara untuk mendeteksi bahwa windows telah menyelesaikan tahap konfigurasi.
Ketika melewati UI, sangat jelas kapan salah satu langkah dilakukan karena UI login tidak muncul sampai proses siap. Namun ketika menggunakan WinRM untuk terhubung dari jarak jauh ke mesin, ini kurang jelas karena WinRM menyediakan akses ke mesin sebelum dilakukan dengan pekerjaan konfigurasi.
Jadi pertanyaannya adalah apa cara bukti paling bodoh untuk mendeteksi melalui koneksi jarak jauh bahwa Windows telah selesai mengkonfigurasi pembaruan dll. Sehingga kita dapat reboot / mematikan mesin tanpa menyebabkan masalah di kemudian hari.
------ EDIT -----
Pada akhirnya kami menggunakan versi modifikasi dari jawaban Katherine di mana skrip kami juga menunggu windeploy
dan ngen
menyelesaikan. Mengingat itu ngen
tidak selesai sampai setelah OS selesai menginisialisasi yang berfungsi, dan sebagai bonus VHDX akhir akan memiliki semua .NET framework ngen-ed yang berarti kita tidak harus berurusan dengan itu ketika kita membuat yang baru VMS disk templat. Kedua skrip yang kami gunakan untuk membuat template VHDX dan skrip untuk membuat lingkungan pengujian lokal ada di github jika ada yang tertarik.
sumber
Setiap tambalan pemutakhiran Windows akan menulis beberapa peristiwa dalam log peristiwa pengaturan.
Salah satu cara untuk menentukan semua tambalan telah diterapkan adalah dengan mengulang pemeriksaan pada ID Peristiwa 4. Bandingkan waktu acara itu dengan waktu saat ini. Jika tidak ada event ID 4 yang ditulis selama 5 atau 10 menit, maka semua pataches mungkin dilakukan, dan siap untuk reboot.
Saya tidak jelas apakah Anda ingin melakukan reboot pertama ketika patch selesai menginstal (event4), atau reboot kedua setelah selesai mengkonfigurasi (event 2). Kode ini melakukan yang pertama. Cukup ganti filterHashTable ke id acara 2 untuk reboot lain sebelum langkah 10 Anda.
sumber
Saya telah berhasil dengan pendekatan berikut: Tunggu hingga Windows mengubah jenis startup Layanan Pemasang Modul Windows (alias TrustedInstaller) menjadi Manual (Meminta Mulai) - setelah reboot. Pada saat itu, pembaruan telah selesai diinstal.
Proses Pemasang Tepercaya terkadang terus berjalan setelah tambalan diinstal? Namun jenis layanan mulai masih diatur ulang ke Manual.
Anda dapat memverifikasi sendiri, jika pengamatan di atas konsisten / benar, dengan melihat pesan log peristiwa sebelumnya dan menghubungkan peristiwa antara Sistem dan Pengaturan log.
Perubahan awal untuk Penginstal Modul Windows dicatat sebagai peristiwa Sistem 7040, dan berkorelasi dengan Peristiwa 2 terakhir di log Pengaturan, setelah reboot.
Saya pikir, ketika pembaruan pertama kali diinstal, layanan ini diatur ke 'Auto Start' jika diperlukan reboot. Ini diatur kembali ke 'Manual' ketika tambalan terakhir diinstal (terlepas dari apakah reboot diperlukan).
Pada beberapa server, saya perhatikan bahwa startup Pemasang tepercaya dengan cepat beralih dari Manual ke Otomatis dan kembali, dan ini mungkin terjadi setiap jam atau lebih. Saya menduga itu adalah beberapa aplikasi yang secara teratur memeriksa pembaruan. Tetapi, yang saya alami adalah bahwa secara umum tampaknya aman untuk diasumsikan, jika start-up adalah Manual, maka tidak ada patching yang terjadi.
sumber