Dieses Projekt ist ein leichtes Patch -Patch -Management -Tool für Windows -basierte Betriebssysteme. Es hilft, das Patch -Management von Betriebssystem zu überwachen und zu steuern. Ursprünglich geschrieben, um bei der Patch -Management für Windows Virtual Desktop (WVD) -basierte Lösungen zu helfen, funktioniert jedoch auch sehr gut für andere - nicht WVD -basierte Lösungen oder Setups. (EG Patch Management für Familiencomputer)
Für die Patch -Verwaltung für Windows -basierte Workloads verfügen Sie über viele Optionen auf Unternehmensebene. Zum Beispiel System Center Configuration Manager, Windows Update für Business, Windows Update, im Falle einer WVD -Patch -Verwaltung auch in die Basis -WVD -Image.
Aber manchmal haben Sie vielleicht kein Setup, mit dem Sie oben hervorgehobene Tools verwenden können. Vielleicht haben Sie viele Werbedomänen und Wälder, vielleicht fehlen Sie einige Funktionen wie Berichterstattung, Dashboards und Telemetrie, um nur wenige zu nennen.
Dies ist der Zeitpunkt, an dem Sie von diesem Projekt profitieren könnten, das versucht, solche Anforderungen zu befriedigen.
Im Allgemeinen ist unsere Empfehlung immer zuerst nach oben beschriebenen professionellen Lösungen und nur dann, wenn Sie einige Lücken mit den professionellen Lösungen sehen, die Sie möglicherweise dieses Open -Source -Projekt überprüfen möchten.


Telemetriedaten unterstützt jetzt Informationen von der Azure -Plattform (wenn die VM auf der Azure -Plattform ausgeführt wird). Informationen zu VM -Metadaten wie Azure VM -Namen (VMResourcename), Ressourcengruppenname (Ressourcengroupname) und Abonnement -ID (AbonnementID). Grundsätzlich sind Informationen, bei denen Ihre Azure VM definiert ist.
Dies ermöglicht es, umfangreichere Filterfunktionen zu unterstützen und Azure -VMs zu identifizieren und dort, wo solche VMs definiert sind. In Fällen, in denen diese Hosting -Umgebung nicht innerhalb der Azure -Plattform ausgeführt wird, sind solche Informationen im Telemetrie -Header nicht verfügbar.
Application Insights die Serviceanwendung zu suchen und zu erstellen und Log Analytics Workspace . Sie können bei Bedarf auch ein kostenloses Azure-Konto erstellen: https://azure.microsoft.com/en-us/free WVDCUS.zip - Enthält Binärdateien, die an überwachten Hosts bereitgestellt werden müssenSource code.zip - Quellcode dieses ProjektsSource code.tar.gz - Quellcode dieses Projekts im verschiedenen TAR/ZIP -FormatWVDCUS.zip herunter. Klicken Sie im Download -Verzeichnis mit der rechten Maustaste auf Properties in der Datei und markieren Sie das Kontrollkästchen Unblock . Klicken Sie auf OK .WVDCUS.zip in allen überwachten Hosts in das WVDCUS -Verzeichnis. Zum Beispiel in das Verzeichnis: C:Program FilesWVDCUS Log Analytics Workspace in der bevorzugten Region mit eindeutigem Namen und Pay-as-you-go Plan: https://docs.microsoft.com/en-us/azure-monitor/learn/quick-create-workspace#create-a-workspaceApplication Insights in dieselbe Region wie vorherige Ressource, mit eindeutigem Namen, mit Arbeitsspace-basierter Option und wählen Sie den zuvor erstellten Arbeitsbereich aus. https://docs.microsoft.com/en-us/azure/azure-monitor/app/create-workspace-resource#create-workspace-basierte ResourceApplication Insights Overview und kopieren Sie Instrumentation Key Alias Telemetry Key , der später während der Konfiguration verwendet wird. C:Program FilesWVDCUSWVDCUS.Service.exe.config im Notepad (oder einem anderen Texteditor)TelemetryKey und ersetzen Sie den Inhalt 00000000-0000-0000-0000-000000000000 durch den Wert, den Sie aus der Ressource Application Insights aus Instrumentation Key erhalten haben.CheckForUpdatesIntervalHours auf geeigneterer Wert. Dieser Wert gibt an, wie häufig die Überprüfung neuer Updates durchgeführt werden sollte. Die Standardeinstellung beträgt 4 Stunden und der gültige Wert kann zwischen 1 und 590 Stunden liegen.UpdatesSearchQuery auf geeignete Wert. Dieser Wert gibt an, welche Art und Kategorien von Patches automatisch installiert werden sollen. Beschreibung der Abfrage und Parameter finden Sie hier: https://docs.microsoft.com/en-us/previous-version/windows/desktop/ff357803(v=vs.85) und hier: https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nf-wuapi-iupdatessearcher-searchWVDCUS.Console.exe.config
WVDCUS.Console.exe jetzt ausführen, um festzustellen, ob die Anwendung korrekt konfiguriert ist. Achten Sie auf Fehler in der Anwendungsausgabe. Wenn Sie einige Fehler sehen, überprüfen Sie, ob Sie über genügend Berechtigungen verfügen. Die Anwendung kann Patches überprüfen, herunterladen und installieren, wenn sie verfügbar sind.
Nachdem Sie eine Konfiguration mit der Konsolenanwendung überprüft haben, können Sie die Konfiguration mit der Registrierung der Anwendung als Windows -Dienst abschließen. Um die Anwendung so zu registrieren, dass sie als Windows -Dienst ausgeführt werden, müssen Sie über Administratoranmeldeinformationen auf dem Computer verfügen, auf dem sie installiert sind. Sie müssen das installutil.exe -Tool verwenden, das Teil der .NET -Laufzeit ist. Dieses Tool wird mit dem .NET -Framework in den Ordner %windir%Microsoft.NETFramework[64]<framework version> installiert. Der Standardpfad für die 64-Bit-Version ist beispielsweise %windir%Microsoft.NETFramework64v4.0.30319InstallUtil.exe .
Run as Administratorcd C:Program FilesWVDCUSC:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe WVDCUS.Service.exeinstallutil.exe fehlschlägt, überprüfen Sie das Installationsprotokoll, um herauszufinden, warum. Standardmäßig befindet sich das Protokoll im selben Ordner wie der ausführbare Dienst.WVDCUS.Console.exe ausführen - fehlschlägt die installutil.exe . Der Fehler ist, dass das Ereignisprotokoll bereits von der Konsolenanwendung registriert ist. Wenn ausfällt, können Sie den Windows -Dienst einfach mit dem Befehl bellow (entfernt Ereignisprotokoll) und installieren Sie den Windows -Dienst erneut.C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /u WVDCUS.Service.exeC:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe WVDCUS.Service.exe 
services.msc , wo Sie gerade einen registrierten Windows -Service unter dem WVDCUS Service Anzeigename finden. Der Name des Dienstes selbst ist WVDCUS .WVDCUS Service . Auf der Registerkarte "Wiederherstellung" Geben Sie für den ersten und zweiten Fehler Restart the Service .ApplyStart
In einem Ereignisprotokoll finden Sie detaillierte Informationen über die Gesundheit des Dienstes, Fehler und Informationsnachrichten.
eventvwr.msc , wo Sie detaillierte Informationen in Protokolldateien finden können.WVDCUSLog -Protokoll.
Sobald der Windows -Service abgelaufen ist und im laufenden Status telemetry -Daten generiert und in bereitgestellte Ressourcen Application Insights über TelemetryKey -Kennung gespeichert wird. Da die Ressource Application Insights während des Bereitstellungsprozesses mit Log Analytics Workspace in Verbindung gebracht wurde, können Sie von allen Funktionen profitieren, die in Log Analytics Workspace -Ressource verfügbar sind. Weitere Informationen finden Sie unter: https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/log-query-overview
Telemetriedaten werden als benutzerdefinierte Ereignisse gespeichert und Sie finden sie möglicherweise in der Tabelle customEvents . Auf diese Weise können Sie Daten von allen Hosts anzeigen und analysieren und den aktuellen Zustand, die Gesundheits- und Informationsnachrichten über das Patch -Management aus vielen Perspektiven und dem festgelegten Zeitbereich sehen. Weitere Informationen finden Sie unter: https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/get-started- queries

Die Analyse von Daten durch Abfragen und mehrere Perspektiven ist eine sehr leistungsstarke Funktion. Für die tägliche Überwachung müssen Sie jedoch in der Regel schnell den Gesamtzustand Ihrer Hosts durch einige Berichte erkennen. Glücklicherweise verfügt Log Analytics Workspace Resource auch für eine solche Fähigkeit.
Sie können eine benutzerdefinierte Arbeitsmappe mit benutzerdefinierten Abfragen über Telemetriedaten erstellen und Ergebnisse durch relevante visuelle Darstellung erzielen.
Weitere Informationen finden Sie unter: https://docs.microsoft.com/en-us/azure/azure-monitor/platform/workbooks-overview
Application Insights , Abschnitt WorkbooksCheckForUpdatesIntervalHours -Einstellungen ausgerichtet sein. Wenn der Zeitbereich niedriger ist, sehen Sie möglicherweise keine Daten.Run Query , um die Tabelle aus den neuesten Daten zu rendernDone Editing klickenSave und speichern Sie die Arbeitsmappe unter einem bevorzugten Namen. Das nächste Mal können Sie direkt in die Abschnitte Workbooks einsteigen und auf die Arbeitsmappe klicken, um den Bericht mit den neuesten Daten anzuzeigen.
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;
Möglicherweise möchten Sie auch den Bericht des aktuellen Status jedes Hosts sehen. Sie können die gerade erstellte Arbeitsmappe mit neuem Bericht erweitern.
EditAdd . Klicken Sie darauf und wählen Sie Add Query .CheckForUpdatesIntervalHours -Einstellungen ausgerichtet sein. Wenn der Zeitbereich niedriger ist, sehen Sie möglicherweise keine Daten.Run Query um die Ergebnisse aus den neuesten Daten anzuzeigenDone Editing klickenSave 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
Sie können kombinierter Beispielbericht sehen, das zwei Teile auf dem Bild unten enthält.

Schließlich haben Sie möglicherweise kein Interesse daran, Berichte täglich zu überprüfen. Vielleicht möchten Sie es nur tun, wenn dies wirklich benötigt wird. In diesem Fall können Sie von der Warnmechanismus profitieren, die Sie darüber informiert, dass ein Host Ihre Aufmerksamkeit benötigt.
Auch hier verfügt Log Analytics Workspace über eine solche integrierte Funktion. Weitere Informationen finden Sie unter: https://docs.microsoft.com/en-us/azure/azure-monitor/learn/tutorial-response
Hier erfahren Sie, wie Sie auf der Grundlage der Bedingungen einen Alarm erstellen können.
Application Insights , Logs , das Fenster mit Beispielabfragen schließencustomEvents Little Eye -Symbol.See in query editorNew alert ruleScope so, wie es ist - sollte auf die korrekte Instanz Application Insights hinweisen.Condition , geben Sie den Zeitbereich an - dieser Wert muss mit den Einstellungen CheckForUpdatesIntervalHours ausgerichtet werden. Wenn der Zeitbereich niedriger ist, sehen Sie möglicherweise keine Daten.Search query kopieren/einfügenNumber of results , Greater than und Schwellenwert 0 - Grundsätzlich wird der Alarm ausgelöst, wenn ein neuer Datensatz, der im Zustand ist, Failed , Reboot Required , Error wurde durch Abfrage zurückgegeben.Action Group erstellen oder auswählen. Klicken Sie auf die Schaltfläche Select action group . Klicken Sie bei Bedarf, um Create action group . Siehe https://docs.microsoft.com/en-us/azure/azure-monitor/platform/action-groups?wt.mc_id=portal-microsoft_azure_monitoring.Create alert rule klicken 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
Dies sollte Aktion und Aufmerksamkeit auslösen, wenn ein Host in einen der Staaten fällt, Failed , Reboot Required und Error .
Alert -E -Mail, die Sie erhalten können, um Ihre Aufmerksamkeit zu erregen.
