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.