Steuern von Updates mit Wartungskonfigurationen und Azure PowerShell
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen
Durch das Erstellen von Wartungskonfigurationen können Sie entscheiden, wann Plattformupdates auf verschiedene Azure-Ressourcen angewendet werden. In diesem Thema werden die Azure PowerShell-Optionen für Dedicated Host-Instanzen und isolierte VMs behandelt. Weitere Informationen zu den Vorteilen der Verwendung von Wartungskonfigurationen, ihren Einschränkungen und anderen Verwaltungsoptionen finden Sie unter Verwalten von Plattformupdates mit Wartungskonfigurationen.
Informationen zu Wartungskonfigurationen für Skalierungsgruppen finden Sie unter Wartungssteuerung für VM-Skalierungsgruppen.
Wichtig
Es gibt verschiedene Bereiche, die bestimmte Computertypen und Zeitpläne unterstützen. Stellen Sie daher sicher, dass Sie den richtigen Bereich für Ihren virtuellen Computer auswählen.
Aktivieren des PowerShell-Moduls
Stellen Sie sicher, dass PowerShellGet
auf dem neuesten Stand ist.
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Installieren Sie das Az.Maintenance
-PowerShell-Modul.
Install-Module -Name Az.Maintenance
Überprüfen Sie, ob Sie die neueste Version des PowerShell-Moduls Az.Maintenance
(Version 1.2.0) ausführen.
Get-Module -ListAvailable -Name Az.Maintenance
Stellen Sie sicher, dass Sie die richtige Version von Az.Maintenance
ausführen.
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Wenn Sie lokal installieren, stellen Sie sicher, dass Sie die PowerShell-Eingabeaufforderung als Administrator öffnen.
Möglicherweise werden Sie auch aufgefordert zu bestätigen, dass Sie aus einem nicht vertrauenswürdigen Repository installieren möchten. Geben Sie Y
ein, oder wählen Sie Ja, alle aus, um das Modul zu installieren.
Erstellen einer Wartungskonfiguration
Der erste Schritt zur Erstellung einer Wartungskonfiguration ist das Erstellen einer Ressourcengruppe als Container für Ihre Konfiguration. In diesem Beispiel wird eine Ressourcengruppe mit dem Namen myMaintenanceRG in eastus erstellt. Wenn Sie bereits über eine Ressourcengruppe verfügen, die Sie verwenden möchten, können Sie diesen Teil überspringen und den Ressourcengruppennamen in den restlichen Beispielen durch Ihren eigenen ersetzen.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
Sie können ein geplantes Fenster deklarieren, in dem Azure die Updates regelmäßig auf Ihre Ressourcen anwendet. Nachdem Sie ein geplantes Fenster erstellt haben, müssen Sie die Updates nicht mehr manuell anwenden. Die Wiederholung der Wartung kann täglich, wöchentlich oder monatlich ausgedrückt werden. Beispiele:
- täglich: RecurEvery „Day“ oder „3Days“
- wöchentlich: RecurEvery „3Weeks“ oder „Week Saturday,Sunday“
- monatlich: RecurEvery „Month day23,day24“ oder „Month Last Sunday“ oder „Month Fourth Monday“
Host
In diesem Beispiel wird eine Wartungskonfiguration mit dem Namen „myConfig“ mit dem Bereich Host mit einem geplanten Fenster von 5 Stunden am vierten Montag jedes Monats erstellt. Es ist wichtig zu beachten, dass die Dauer des Zeitplans für diesen Bereich mindestens zwei Stunden lang sein sollte. Zu Beginn müssen Sie alle Parameter definieren, die für New-AzMaintenanceConfiguration
erforderlich sind.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
Nachdem Sie die Parameter definiert haben, können Sie nun das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen.
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Durch die Verwendung von $scope = "Host"
wird sichergestellt, dass die Wartungskonfiguration zum Steuern von Updates auf Hostcomputern verwendet wird. Sie müssen sicherstellen, dass Sie eine Konfiguration für den spezifischen Bereich der Computer erstellen, die das Ziel darstellen. Weitere Informationen zu Bereichen finden Sie unter Wartungskonfigurationsbereiche.
Betriebssystemabbild
In diesem Beispiel erstellen Sie eine Wartungskonfiguration mit dem Namen „myConfig“ im Bereich osimage mit einem geplanten Fenster von 8 Stunden alle 5 Tage. Es ist wichtig zu beachten, dass die Dauer des Zeitplans für diesen Bereich mindestens 5 Stunden lang sein sollte. Ein weiterer wichtiger Unterschied besteht darin, dass dieser Bereich maximal 7 Tage für die Wiederholung des Zeitplans zulässt.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
Nachdem Sie die Parameter definiert haben, können Sie nun das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen.
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Gast
Die neueste Ergänzung des Wartungskonfigurationsangebots ist der Bereich InGuestPatch. In diesem Beispiel wird gezeigt, wie Sie mithilfe von PowerShell eine Wartungskonfiguration für den Gastbereich erstellen. Weitere Informationen zu diesem Bereich finden Sie unter Gast.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
Nachdem Sie die Parameter definiert haben, können Sie nun das Cmdlet New-AzMaintenanceConfiguration
verwenden, um Ihre Konfiguration zu erstellen.
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
Wenn Sie versuchen, eine Konfiguration mit dem gleichen Namen, aber an einem anderen Speicherort zu erstellen, erhalten Sie eine Fehlermeldung. Konfigurationsnamen müssen für Ihre Ressourcengruppe eindeutig sein.
Sie können mithilfe von Get-AzMaintenanceConfiguration überprüfen, ob Sie die Wartungskonfigurationen erfolgreich erstellt haben.
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Zuweisen der Konfiguration
Nachdem Sie Ihre Konfiguration erstellt haben, können Sie ihr auch mithilfe von PowerShell Computer zuweisen. Um dies zu erreichen, verwenden Sie New-AzConfigurationAssignment.
Isolierte VM
Weisen Sie einem virtuellen Computer die Konfiguration anhand ihrer ID zu. Geben Sie -ResourceType VirtualMachines
an, und geben Sie den Namen der VM für -ResourceName
sowie die Ressourcengruppe der VM für -ResourceGroupName
an.
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Dedicated Host
Wenn Sie eine Konfiguration auf einen dedizierten Host anwenden möchten, müssen Sie auch -ResourceType hosts
, -ResourceParentName
mit dem Namen der Hostgruppe und -ResourceParentType hostGroups
einschließen.
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Virtual Machine Scale Sets
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Gast
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Prüfen auf ausstehende Updates
Verwenden Sie Get-AzMaintenanceUpdate, um zu überprüfen, ob noch Updates ausstehen. Verwenden Sie -subscription
, um das Azure-Abonnement der VM anzugeben, wenn diese nicht der Computer ist, bei dem Sie sich angemeldet haben.
Wenn keine Updates zum Anzeigen vorhanden sind, gibt der Befehl keinen Wert zurück. Andernfalls wird ein PSApplyUpdate-Objekt zurückgegeben:
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
Isolierte VM
Überprüfen Sie, ob für eine isolierte VM ausstehende Updates angezeigt werden. In diesem Beispiel ist die Ausgabe zur besseren Lesbarkeit als Tabelle formatiert.
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Dedicated Host
Überprüfen Sie, ob für einen dedizierten Host Updates ausstehen. In diesem Beispiel ist die Ausgabe zur besseren Lesbarkeit als Tabelle formatiert.
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
Virtual Machine Scale Sets
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
Anwenden von Updates
Verwenden Sie New-AzApplyUpdate, um ausstehende Updates anzuwenden. Das Anwenden von Updateaufrufen kann bis zu 2 Stunden dauern. Dieses Cmdlet funktioniert nur für die Bereiche Host und OSImage. Es funktioniert NICHT für den Gastbereich.
Isolierte VM
Erstellen Sie eine Anforderung, um Updates auf eine isolierte VM anzuwenden.
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
Bei einer erfolgreichen Ausführung gibt dieser Befehl ein PSApplyUpdate
-Objekt zurück. Sie können das Name-Attribut im Befehl Get-AzApplyUpdate
verwenden, um den Aktualisierungsstatus zu überprüfen. Weitere Informationen finden Sie unter Überprüfen des Updatestatus.
Dedicated Host
Wenden Sie Updates auf einen dedizierten Host an.
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
Virtual Machine Scale Sets
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Überprüfen des Updatestatus
Verwenden Sie Get-AzApplyUpdate, um den Status eines Updates zu überprüfen. Die unten gezeigten Befehle zeigen den Status des neuesten Updates mithilfe von default
für den Parameter -ApplyUpdateName
an. Sie können den Namen des Updates ersetzen (vom Befehl New-AzApplyUpdate zurückgegeben), um den Status eines bestimmten Updates zu erhalten. Dieses Cmdlet funktioniert nur für die Bereiche Host und OSImage. Es funktioniert NICHT für den Gastbereich.
Status : Completed
ResourceId : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name : default
Type : Microsoft.Maintenance/applyUpdates
LastUpdateTime ist die Uhrzeit, zu der das Update vollständig durchgeführt wurde. Dies kann durch Sie initiiert werden oder durch die Plattform, falls das Selbstwartungsfenster nicht genutzt wurde. Wenn noch nie über Wartungskonfigurationen ein Update anwendet wurde, wird der Standardwert angezeigt.
Isolierte VM
Suchen Sie nach Updates für einen bestimmten virtuellen Computer.
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Dedicated Host
Suchen Sie nach Updates für einen dedizierten Host.
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Virtual Machine Scale Sets
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Löschen einer Wartungskonfiguration
Verwenden Sie Remove-AzMaintenanceConfiguration, um eine Wartungskonfiguration zu löschen.
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
Nächste Schritte
Weitere Informationen finden Sie unter Wartung und Updates.