Proyek ini adalah alat manajemen tambalan ringan untuk OS berbasis Windows. Ini membantu untuk memantau dan mengontrol manajemen tambalan OS. Awalnya ditulis untuk membantu dengan manajemen tambalan untuk solusi berbasis Windows Virtual Desktop (WVD) tetapi berfungsi juga dengan sangat baik untuk solusi atau pengaturan berbasis Non WVD lainnya. (Misalnya manajemen patch untuk komputer keluarga)
Untuk manajemen tambalan untuk beban kerja berbasis windows, Anda biasanya memiliki banyak opsi tingkat perusahaan. Misalnya System Center Configuration Manager, Pembaruan Windows untuk Bisnis, Pembaruan Windows, dalam kasus WVD Patch Management juga injeksi ke gambar WVD dasar.
Tetapi kadang -kadang, mungkin Anda tidak memiliki pengaturan yang memungkinkan Anda menggunakan alat yang disorot di atas. Mungkin Anda memiliki banyak domain dan hutan iklan, mungkin Anda mungkin kehilangan beberapa kemampuan seperti pelaporan, dasbor, telemetri untuk beberapa nama.
Inilah saatnya Anda mungkin mendapat manfaat dari proyek ini yang mencoba memenuhi kebutuhan tersebut.
Secara umum, rekomendasi kami adalah selalu terlihat pertama pada solusi profesional yang dijelaskan di atas dan hanya jika Anda melihat beberapa celah dengan solusi profesional yang mungkin ingin Anda periksa proyek open source ini.


Data telemetri sekarang mendukung informasi yang berasal dari platform Azure (jika VM berjalan di dalam platform Azure). Informasi tentang VM Metadata Like Azure VM Name (VMResourCename), Nama Grup Sumber Daya (ResourceGroupName) dan ID Langganan (SPERCRIPTID). Pada dasarnya informasi di mana VM Azure Anda didefinisikan.
Hal ini memungkinkan untuk mendukung kemampuan penyaringan yang lebih kaya dan mengidentifikasi VM Azure dan di mana VM tersebut didefinisikan. Dalam kasus ketika lingkungan hosting ini tidak berjalan di dalam platform Azure, informasi tersebut tidak tersedia di header telemetri.
Application Insights layanan dan Log Analytics Workspace . Anda juga dapat membuat akun Azure gratis jika diperlukan: https://azure.microsoft.com/en-us/free WVDCUS.zip - berisi file biner yang perlu digunakan untuk host yang dipantauSource code.zip - Sumber Kode Proyek iniSource code.tar.gz - Kode Sumber Proyek ini dalam format TAR/ZIP yang berbedaWVDCUS.zip . Di Direktori Unduhan Klik kanan Properties pada file dan tandai kotak centang Unblock . Klik OK .WVDCUS.zip pada semua host yang dipantau ke dalam direktori WVDCUS . Misalnya ke direktori: C:Program FilesWVDCUS Log Analytics Workspace Sumber Daya di Wilayah Preferred, dengan nama unik dan Rencana Pay-AS-ou-go: https://docs.microsoft.com/en-us/azure-workspaceApplication Insights Sumber Daya Berbasis Workspace ke wilayah yang sama dengan sumber daya sebelumnya, dengan nama unik, dengan opsi berbasis workspace dan pilih ruang kerja yang Anda buat sebelumnya. https://docs.microsoft.com/en-us/azure/azure-monitor/app/create-workspace-resource#create-workspace-resourceApplication Insights Sumber Daya yang baru saja dibuat, Klik Overview Kunci Telemetry Key Alias Instrumentation Key Salin yang akan digunakan nanti selama konfigurasi. C:Program FilesWVDCUSWVDCUS.Service.exe.config di notepad (atau editor teks lainnya)TelemetryKey dan ganti konten 00000000-0000-0000-0000-000000000000 dengan nilai yang Anda peroleh dari sumber daya Application Insights dari item Instrumentation Key .CheckForUpdatesIntervalHours ke nilai yang lebih sesuai. Nilai ini menentukan seberapa sering memeriksa pembaruan baru harus dilakukan. Default adalah 4 jam dan nilai yang valid dapat antara 1 - 590 jam.UpdatesSearchQuery ke nilai yang lebih sesuai. Nilai ini menentukan jenis dan kategori tambalan yang harus diinstal secara otomatis. Deskripsi kueri dan parameter ada di sini: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85) dan di sini: https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nf-wuapi-iupdatesearcher-searchWVDCUS.Console.exe.config
WVDCUS.Console.exe sekarang untuk melihat apakah aplikasi dikonfigurasi dengan benar. Perhatikan kesalahan apa pun dalam output aplikasi. Jika Anda melihat beberapa kesalahan memverifikasi bahwa Anda memiliki izin yang cukup. Aplikasi mungkin untuk memeriksa, mengunduh dan menginstal tambalan jika tersedia.
Setelah Anda memverifikasi konfigurasi dengan aplikasi konsol, Anda dapat menyelesaikan konfigurasi dengan pendaftaran aplikasi untuk dijalankan sebagai layanan Windows. Untuk mendaftarkan aplikasi untuk dijalankan sebagai Windows Service, Anda harus memiliki kredensial administrator di komputer tempat ia diinstal. Anda perlu menggunakan alat installutil.exe , yang merupakan bagian dari runtime .net. Alat ini diinstal dengan .NET Framework ke folder %windir%Microsoft.NETFramework[64]<framework version> . Misalnya, jalur default untuk versi 64-bit adalah %windir%Microsoft.NETFramework64v4.0.30319InstallUtil.exe .
Run as Administratorcd C:Program FilesWVDCUSC:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe WVDCUS.Service.exeinstallutil.exe gagal, periksa log install untuk mencari tahu mengapa. Secara default, log berada di folder yang sama dengan layanan yang dapat dieksekusi.WVDCUS.Console.exe sebelumnya - maka installutil.exe akan gagal. Kesalahannya adalah bahwa log peristiwa sudah terdaftar dengan aplikasi konsol. Jika gagal, cukup hapus instalasi layanan Windows dengan perintah di bawah (menghapus log acara) dan instal Layanan Windows lagi.C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /u WVDCUS.Service.exeC:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe WVDCUS.Service.exe 
services.msc di mana Anda dapat menemukan layanan windows yang terdaftar di bawah WVDCUS Service . Nama layanan itu sendiri adalah WVDCUS .WVDCUS Service . Pada tab Pemulihan Tentukan untuk kegagalan pertama dan kedua Restart the Service .ApplyStart
Anda dapat melihat informasi terperinci tentang kesehatan layanan, kegagalan, pesan informasi dalam log acara.
eventvwr.msc di mana Anda dapat menemukan informasi terperinci dalam file log.WVDCUSLog .
Setelah layanan Windows naik dan dalam keadaan berjalan, ia akan mulai menghasilkan data telemetri dan menyimpannya ke sumber daya Application Insights yang disediakan melalui TelemetryKey Identifier. Karena sumber daya Application Insights terhubung dengan Log Analytics Workspace selama proses penyediaan, Anda mungkin mendapat manfaat dari semua fitur yang tersedia di Log Analytics Workspace Resource. Untuk detail lebih lanjut, lihat: https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/log-query-overview
Data telemetri disimpan sebagai acara khusus dan Anda mungkin menemukannya di tabel customEvents . Ini memungkinkan Anda untuk melihat dan menganalisis data dari semua host dan melihat keadaan saat ini, kesehatan dan pesan informasi tentang manajemen tambalan dari banyak perspektif dan jangkauan waktu tertentu. Untuk detail lebih lanjut, lihat: https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/get-started-queries

Menganalisis data melalui kueri dan banyak perspektif adalah fitur yang sangat kuat. Namun, untuk pemantauan harian Anda biasanya perlu dengan cepat melihat keadaan host Anda secara keseluruhan melalui beberapa jenis laporan. Untungnya, sumber Log Analytics Workspace memiliki kemampuan seperti itu juga.
Anda dapat membuat buku kerja khusus dengan kueri khusus atas data telemetri dan memberikan hasil melalui representasi visual yang relevan.
Untuk detail lebih lanjut, lihat: https://docs.microsoft.com/en-us/azure/azure-monitor/platform/workbooks-overview
Application Insights , Workbooks BagianCheckForUpdatesIntervalHours . Ketika rentang waktu lebih rendah, Anda mungkin tidak melihat data apa pun.Run Query untuk membuat grafik dari data terbaruDone EditingSave dan simpan buku kerja dengan beberapa nama yang disukai. Lain kali Anda dapat langsung masuk ke bagian Workbooks dan klik buku kerja yang baru saja dibuat untuk melihat laporan dengan data terbaru.
let WVDCUS = customEvents
| where itemType == 'customEvent' and operation_Name == 'WVDCUS.Event';
let WVDCUS_TelemetryStart = WVDCUS
| where name == 'TelemetryStart'
| project MachineName = tostring(customDimensions.MachineName), operation_Id, timestamp, VMResourceName = tostring(customDimensions.VMResourceName), ResourceGroupName = tostring(customDimensions.ResourceGroupName), SubscriptionId = tostring(customDimensions.SubscriptionId)
| summarize arg_max(timestamp, *) by MachineName;
let WVDCUS_Result = WVDCUS_TelemetryStart
| join kind = innerunique customEvents on operation_Id
| where name in ('NoUpdatesAvailable', 'UpdatesInstalledNoUpdates', 'UpdatesNotInstalledFailed', 'UpdatesInstalledRebootRequired', 'UpdatesInstalledAllOK', 'Error')
| extend State=replace(@'NoUpdatesAvailable', @'Up to date', name)
| extend State=replace(@'UpdatesInstalledNoUpdates', @'Up to date', State)
| extend State=replace(@'UpdatesNotInstalledFailed', @'Failed', State)
| extend State=replace(@'UpdatesInstalledRebootRequired', @'Reboot Required', State)
| extend State=replace(@'UpdatesInstalledAllOK', @'Up to date', State)
| extend State=replace(@'Error', @'Error', State)
| project MachineName, Timestamp = timestamp1, State, VMResourceName, ResourceGroupName, SubscriptionId;
WVDCUS_Result
| project MachineName, State, VMResourceName, ResourceGroupName, SubscriptionId
| summarize Count=count() by State
| render piechart;
Anda mungkin ingin juga melihat laporan yang menunjukkan keadaan saat ini dari setiap host. Anda dapat memperpanjang hanya buku kerja dengan bagian laporan baru.
EditAdd . Klik dan pilih Add Query .CheckForUpdatesIntervalHours . Ketika rentang waktu lebih rendah, Anda mungkin tidak melihat data apa pun.Run Query untuk melihat hasil dari data terbaruDone EditingSave let WVDCUS = customEvents
| where itemType == 'customEvent' and operation_Name == 'WVDCUS.Event';
let WVDCUS_TelemetryStart = WVDCUS
| where name == 'TelemetryStart'
| project MachineName = tostring(customDimensions.MachineName), operation_Id, timestamp, VMResourceName = tostring(customDimensions.VMResourceName), ResourceGroupName = tostring(customDimensions.ResourceGroupName), SubscriptionId = tostring(customDimensions.SubscriptionId)
| summarize arg_max(timestamp, *) by MachineName;
let WVDCUS_Result = WVDCUS_TelemetryStart
| join kind = innerunique customEvents on operation_Id
| where name in ('NoUpdatesAvailable', 'UpdatesInstalledNoUpdates', 'UpdatesNotInstalledFailed', 'UpdatesInstalledRebootRequired', 'UpdatesInstalledAllOK', 'Error')
| extend State=replace(@'NoUpdatesAvailable', @'Up to date', name)
| extend State=replace(@'UpdatesInstalledNoUpdates', @'Up to date', State)
| extend State=replace(@'UpdatesNotInstalledFailed', @'Failed', State)
| extend State=replace(@'UpdatesInstalledRebootRequired', @'Reboot Required', State)
| extend State=replace(@'UpdatesInstalledAllOK', @'Up to date', State)
| extend State=replace(@'Error', @'Error', State)
| project MachineName, Timestamp = timestamp1, State, VMResourceName, ResourceGroupName, SubscriptionId;
WVDCUS_Result
| project MachineName, Timestamp, State, VMResourceName, ResourceGroupName, SubscriptionId
Anda dapat melihat laporan contoh gabungan - berisi dua bagian pada gambar di bawah ini.

Akhirnya, Anda mungkin tidak tertarik untuk memeriksa laporan setiap hari. Mungkin Anda ingin melakukannya hanya jika ini benar -benar dibutuhkan. Dalam hal ini Anda mungkin mendapat manfaat dari mekanisme peringatan yang akan memberi tahu Anda bahwa beberapa host membutuhkan perhatian Anda.
Sekali lagi, Log Analytics Workspace memiliki kemampuan bawaan. Untuk detail lebih lanjut, lihat: https://docs.microsoft.com/en-us/azure/azure-monitor/learn/tutorial-response
Berikut adalah bagaimana Anda dapat membuat peringatan berdasarkan serangkaian kondisi.
Application Insights , Logs bagian, tutup jendela dengan contoh kuericustomEvents .See in query editorNew alert rule di bilah alatScope seperti itu - harus menunjuk untuk memperbaiki instance Application Insights .Condition , tentukan nilai rentang waktu - Nilai ini perlu diselaraskan dengan Pengaturan CheckForUpdatesIntervalHours . Ketika rentang waktu lebih rendah, Anda mungkin tidak melihat data apa pun.Search queryNumber of results , Greater than dan nilai ambang 0 - pada dasarnya peringatan akan dipicu jika beberapa catatan baru yang dalam keadaan Failed , Reboot Required , Error dikembalikan oleh kueri.Action Group yang ada. Klik tombol Select action group . Jika diperlukan, klik untuk Create action group . Lihat https://docs.microsoft.com/en-us/azure/azure-monitor/platform/action-groups?wt.mc_id=portal-microsoft_azure_monitoring.Create alert rule let WVDCUS = customEvents
| where itemType == 'customEvent' and operation_Name == 'WVDCUS.Event';
let WVDCUS_TelemetryStart = WVDCUS
| where name == 'TelemetryStart'
| project MachineName = tostring(customDimensions.MachineName), operation_Id, timestamp, VMResourceName = tostring(customDimensions.VMResourceName), ResourceGroupName = tostring(customDimensions.ResourceGroupName), SubscriptionId = tostring(customDimensions.SubscriptionId)
| summarize arg_max(timestamp, *) by MachineName;
let WVDCUS_Result = WVDCUS_TelemetryStart
| join kind = innerunique customEvents on operation_Id
| where name in ('NoUpdatesAvailable', 'UpdatesInstalledNoUpdates', 'UpdatesNotInstalledFailed', 'UpdatesInstalledRebootRequired', 'UpdatesInstalledAllOK', 'Error')
| extend State=replace(@'NoUpdatesAvailable', @'Up to date', name)
| extend State=replace(@'UpdatesInstalledNoUpdates', @'Up to date', State)
| extend State=replace(@'UpdatesNotInstalledFailed', @'Failed', State)
| extend State=replace(@'UpdatesInstalledRebootRequired', @'Reboot Required', State)
| extend State=replace(@'UpdatesInstalledAllOK', @'Up to date', State)
| extend State=replace(@'Error', @'Error', State)
| project MachineName, Timestamp = timestamp1, State, VMResourceName, ResourceGroupName, SubscriptionId;
WVDCUS_Result
| where State in ('Failed','Reboot Required', 'Error')
| project MachineName, Timestamp, State, VMResourceName, ResourceGroupName, SubscriptionId
Ini harus memicu tindakan dan perhatian ketika beberapa host akan jatuh ke salah satu negara Failed , Reboot Required , Error .
Peringatan email yang dapat Anda terima untuk menarik perhatian Anda.
