Steuern von Updates mit Wartungskonfigurationen und Azure PowerShell

Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen ✔️ Einheitliche Skalierungsgruppen

Sie können das Feature für Wartungskonfigurationen verwenden, um zu steuern, wann Plattformupdates auf verschiedene Azure-Ressourcen angewendet werden. In diesem Artikel werden die Azure PowerShell-Optionen für Dedicated Hosts und isolierte VMs behandelt. Weitere Informationen zu den Vorteilen der Verwendung des Features „Wartungskonfigurationen“, zu ihren Einschränkungen und zu anderen Verwaltungsoptionen finden Sie unter Verwalten von Plattformupdates mit Wartungskonfigurationen.

Informationen zur Verwendung von Wartungskonfigurationen für Skalierungsgruppen finden Sie unter Wartungssteuerung für Azure VM-Skalierungsgruppen.

Wichtig

Bestimmte Bereiche unterstützen bestimmte Computertypen und -zeitpläne. Achten Sie darauf, den richtigen Bereich für Ihren virtuellen Computer auszuwählen.

Das Azure PowerShell-Modul aktivieren

Stellen Sie sicher, dass PowerShellGet auf dem neuesten Stand ist:

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Installieren Sie das Az.Maintenance-Modul von Azure PowerShell.

Install-Module -Name Az.Maintenance

Stellen Sie sicher, dass die neueste Version von Az.Maintenance (Version 1.2.0) ausgeführt wird.

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, müssen Sie die Azure 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 J 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.

Sie können die Wiederholung der Wartung täglich, wöchentlich oder monatlich ausdrücken. Im Folgenden finden Sie einige Beispiele:

  • Täglich: ein RecurEvery-Wert von "Day" oder "3Days".
  • Wöchentlich: ein RecurEvery-Wert von "3Weeks" oder "Week Saturday,Sunday".
  • Monatlich: ein RecurEvery-Wert von "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. Der duration-Wert des Zeitplans für diesen Bereich sollte mindestens zwei Stunden betragen. Definieren Sie zu Beginn die Parameter für New-AzMaintenanceConfiguration:

$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 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. Achten Sie darauf, eine Konfiguration für den spezifischen Bereich der Zielcomputer zu erstellen. Erfahren Sie mehr über Bereiche.

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. Der duration-Wert des Zeitplans für diesen Bereich sollte mindestens 5 Stunden betragen. Dieser Bereich ermöglicht maximal 7 Tage für die Zeitplanserie.

$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 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 Wartungskonfigurationsfeatures ist der Bereich InGuestPatch. In diesem Beispiel wird gezeigt, wie Sie mithilfe von Azure PowerShell eine Wartungskonfiguration für einen 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 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 demselben 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 Azure PowerShell Computer zuweisen. Sie können das Cmdlet New-AzConfigurationAssignment verwenden.

Isolierte VM

Weisen Sie einem virtuellen Computer die Konfiguration anhand der ID zu. Geben Sie -ResourceType VirtualMachines an. Geben Sie den Namen der VM für -ResourceName an, und geben Sie 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 -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"

VM-Skalierungsgruppen

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 zur Überprüfung auf ausstehende Updates Get-AzMaintenanceUpdate. 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 dieser 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

VM-Skalierungsgruppen

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 Host- und Betriebssystemimagebereiche. 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 Get-AzApplyUpdate-Befehl verwenden, um den Aktualisierungsstatus zu überprüfen, wie weiter unten in diesem Artikel beschrieben.

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

VM-Skalierungsgruppen

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 folgenden 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 Host- und Betriebssystemimagebereiche. 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 der Zeitpunkt, zu dem das Update abgeschlossen ist, unabhängig davon, ob Sie das Update oder die Plattform initiiert haben, da Sie das Selbstwartungsfenster nicht verwendet haben. Wenn noch nie über Wartungskonfigurationen ein Update anwendet wurde, zeigt LastUpdateTime den Standardwert an.

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"

VM-Skalierungsgruppen

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 für virtuelle Computer in Azure.