Freigeben über


Aktualisieren öffentlicher IP-Adressen, die an eine VM angefügt sind, von Basic zu Standard

Wichtig

Am 30. September 2025 wurden öffentliche Standard-SKU-IPs eingestellt. Weitere Informationen finden Sie in der offiziellen Ankündigung. Wenn Sie derzeit öffentliche Standard-SKU-IPs verwenden, stellen Sie sicher, dass Sie so bald wie möglich ein Upgrade auf öffentliche Standard-SKU-IPs durchführen. In diesem Artikel wird der Upgradeprozess erläutert.

Weitere Informationen zur Einstellung öffentlicher Basic-SKU-IP-Adressen und zu den Vorteilen öffentlicher IP-Adressen der Standard-SKU finden Sie hier.

Upgradeübersicht

Dieses Skript aktualisiert alle öffentlichen IP-Adressen, die an eine VM angefügt sind, von Basic- auf Standard-SKU. Um das Upgrade durchzuführen, wird die Methode für die Zuordnung von öffentlichen IP-Adressen auf statisch festgelegt, bevor die Zuordnung zur VM aufgehoben wird. Nachdem die Zuordnung aufgehoben wurde, wird die öffentliche IP-SKU auf Standard aktualisiert, und die IP-Adresse wird erneut dem virtuellen Computer zugeordnet.

Da die öffentliche IP-Zuweisung vor dem Trennen von der VM auf "Statisch " festgelegt ist, ändert sich die IP-Adresse während des Upgradevorgangs nicht, auch wenn das Skript fehlschlägt. Das Modul überprüft, ob die Methode für die öffentliche IP-Zuordnung statisch ist, bevor die öffentliche IP von der VM getrennt wird.

Das Modul protokolliert alle Upgradeaktivitäten in einer Datei mit dem Namen PublicIPUpgrade.log, die am gleichen Speicherort erstellt wird, an dem das Modul (standardmäßig) ausgeführt wurde.

Einschränkungen/nicht unterstützte Szenarien

  • VMs mit NICs, die einem Load Balancer zugeordnet sind: Da die Load Balancer- und öffentlichen IP-SKUs, die einem virtuellen Computer zugeordnet sind, übereinstimmen müssen, ist es nicht möglich, die einem virtuellen Computer zugeordneten öffentlichen IP-Adressen auf Instanzebene zu aktualisieren, wenn die NICs des virtuellen Computers auch einem Load Balancer zugeordnet sind, entweder über back-End-Pool- oder NAT-Poolmitgliedschaft. Verwenden Sie die Skripts Upgraden eines Load Balancer Basic auf Standard SKU, um sowohl den Lastenausgleich als auch die öffentlichen IPs gleichzeitig zu aktualisieren.

  • VMs ohne Netzwerksicherheitsgruppe: VMs mit zu aktualisierenden IP-Adressen müssen eine Netzwerksicherheitsgruppe (Network Security Group, NSG) aufweisen, die entweder dem Subnetz jeder IP-Konfiguration mit einer öffentlichen IP-Adresse oder direkt der NIC zugeordnet ist. Dies liegt daran, dass öffentliche Standard-IPs der SKU standardmäßig "sicher" sind, was bedeutet, dass jeder Datenverkehr an die öffentliche IP-Adresse explizit an einer NSG zugelassen werden muss, um den virtuellen Computer zu erreichen. Öffentliche IP-Adressen der Basic-SKU lassen standardmäßig jeglichen Datenverkehr zu. Ein Upgrade öffentlicher IP-SKUs ohne NSG würde dazu führen, dass eingehender Internetdatenverkehr an die öffentliche IP-Adresse, der zuvor mit der Basic-SKU zulässig war, nach der Migration blockiert wird. Siehe: SKUs für öffentliche IP-Adressen

  • Vm Scale Sets with Public IP configurations: If you have a virtual machine scale set (uniform model) with public IP configurations per instance, note these configurations aren't Public IP resources and as such can't be upgrade. Stattdessen können Sie die Basic-IP-Konfiguration entfernen und die SKU-Eigenschaft verwenden, um festzulegen, dass Standard-IP-Konfigurationen für jede Instanz der VM-Skalierungsgruppe erforderlich sind, wie hier gezeigt.

Voraussetzungen

  • Installieren Sie die neuesten Version von PowerShell.
  • Stellen Sie sicher, dass Sie das neueste Az PowerShell-Modul installiert haben (und installieren Sie ggf. das neueste Az PowerShell-Modul).

Herunterladen des Skripts

Hinweis

Dieser Vorgang erfordert den Download und die Ausführung eines PowerShell-Skripts. Sie müssen sicherstellen, dass Sie über die richtigen Berechtigungen in Ihrer Umgebung verfügen, um diese Aufgabe abzuschließen. Da PowerShell-Module installiert sind, überprüfen Sie mit der Sicherheitsfunktion Ihrer Organisation, ob die Verwendung des Skripts gegen Ihre Sicherheitspraktiken verstößt. Sie sind dafür verantwortlich, sicherzustellen, dass die Verwendung dieses Skripts innerhalb Ihrer Organisation zulässig ist.

Laden Sie das Migrationsskript aus dem PowerShell-Katalog herunter.

PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force

Verwenden des Moduls

  1. Verwenden Sie Connect-AzAccount, um eine Verbindung mit dem erforderlichen Microsoft Entra-Mandanten und dem Azure-Abonnement herzustellen

    PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
    
  2. Suchen Sie den virtuellen Computer mit den angefügten öffentlichen Basic-IP-Adressen, die Sie aktualisieren möchten. Notieren Sie sich den Namen und den Namen der Ressourcengruppe.

  3. Untersuchen Sie die Modulparameter:

    • VMName [Zeichenfolge] Erforderlich: Dieser Parameter ist der Name Ihres virtuellen Computers.
    • ResourceGroupName [string] Erforderlich: Dieser Parameter ist die Ressourcengruppe für Ihren virtuellen Computer mit den öffentlichen Basic-IP-Adressen, die Sie aktualisieren möchten.
  4. Führen Sie den Upgrade-Befehl aus.

Beispielverwendungen des Skripts

Um ein Upgrade für einen einzelnen virtuellen Computer durchzuführen, übergeben Sie den VM-Namen und den Ressourcengruppennamen als Parameter.

    Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'

Um das Upgrade eines einzelnen virtuellen Computers auszuwerten, ohne Änderungen vorzunehmen, fügen Sie den -WhatIf-Parameter hinzu.

    Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf

Um alle virtuellen Computer in einer Ressourcengruppe zu aktualisieren, überspringen Sie VMs, die keine Netzwerksicherheitsgruppen besitzen.

    Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG

Wiederherstellung nach fehlgeschlagener Migration

Wenn eine Migration aufgrund eines vorübergehenden Problems fehlschlägt, z. B. ein Netzwerkausfall oder ein Clientsystemproblem, kann die Migration erneut ausgeführt werden, um die VM und öffentliche IP-Adressen im Zielzustand zu konfigurieren. Bei der Ausführung gibt das Skript eine Wiederherstellungsprotokolldatei aus, die verwendet wird, um sicherzustellen, dass der virtuelle Computer ordnungsgemäß neu konfiguriert ist. Überprüfen Sie die Protokolldatei PublicIPUpgrade.log, die an dem Speicherort erstellt wurde, an dem das Skript ausgeführt wurde.

Um nach einem fehlgeschlagenen Upgrade wiederherzustellen, übergeben Sie den Pfad der Wiederherstellungsprotokolldatei mit dem Parameter -recoverFromFile an das Skript, und identifizieren Sie den virtuellen Computer, der wiederhergestellt werden soll, mit den Parametern -VMName und -ResourceGroupName oder -VMResourceID, wie in diesem Beispiel gezeigt.

    Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName 'myVM' -ResourceGroupName 'rgName'

Häufig gestellte Fragen

Wie lange dauert die Migration und wie lange kann mein virtueller Computer bei seiner öffentlichen IP nicht darauf zugreifen?

Die Zeit, die zum Upgrade der öffentlichen IP-Adressen einer VM benötigt wird, hängt von der Anzahl der öffentlichen IP-Adressen und Netzwerkschnittstellen ab, die dem virtuellen Computer zugeordnet sind. Beim Testen dauert das Upgrade eines virtuellen Computers mit einer einzelnen NIC und einer öffentlichen IP-Adresse zwischen 1 und 2 Minuten. Jede NIC auf dem virtuellen Computer fügt etwa eine Minute hinzu, und jede öffentliche IP-Adresse fügt jeweils einige Sekunden hinzu.

Kann ich ein Rollback zu einer öffentlichen IP-Adresse der Basic-SKU durchführen?

Es ist nicht möglich, eine öffentliche IP-Adresse von Standard auf Basic herabzustufen.

Kann ich eine Migration vor der Ausführung testen?

Es gibt keine Möglichkeit, ein Upgrade einer öffentlichen IP auszuwerten, ohne die Aktion abzuschließen. Dieses Skript enthält jedoch einen -whatif Parameter, der überprüft, ob Ihre VM das Upgrade unterstützt, und führt Sie durch die Schritte, ohne maßnahmen zu ergreifen.

Unterstützt das Skript öffentliche IP-Adressen der Zonal Basic-SKU?

Ja, das Upgrade einer öffentlichen IP-Adresse einer Zonal Basic-SKU auf eine öffentliche IP-Adresse der Zonal Standard-SKU ist identisch und funktioniert im Skript.

Wenn ich eine NIC angibt, die mit einer öffentlichen IP verknüpft ist, die für die Migration im Back-End-Pool des Anwendungsgateways bestimmt ist, wird dieses Skript aus dem Pool entfernt?

Ja, es wird entfernt. Nach dem Ausführen des Skripts müssen Sie die NIC manuell dem Back-End-Pool des Anwendungsgateways zuweisen. Alternativ können Sie dieses Problem vermeiden, indem Sie die private IP-Adresse in der Back-End-Poolkonfiguration vor der Migration explizit angeben.

Verwenden von Resource Graph zum Auflisten von VMs mit öffentlichen IP-Adressen, die ein Upgrade erfordern

Abfragen, um virtueller Computer (VMs) mit öffentlichen IP-Adressen der Basic-SKU aufzulisten

Diese Abfrage gibt eine Liste der VM-IDs zurück, an die die öffentlichen IP-Adressen der Basic-SKU angefügt sind.

Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces
| join (
  Resources |
  where type =~ 'microsoft.network/networkinterfaces' |
  project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations)
  on $left.vmId == $right.nicVMId
| join (
  Resources
  | where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id)
  | where sku.name == 'Basic' // exclude to find all VMs with Public IPs
  | project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0])))
  on $left.allVMNicID == $right.pipAssociatedNicId
| project vmId, pipId, pipSku
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces | join (Resources | where type =~ 'microsoft.network/networkinterfaces' | project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations) on \$left.vmId == \$right.nicVMId | join ( Resources | where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id) | where sku.name == 'Basic' | project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0]))) on \$left.allVMNicID == \$right.pipAssociatedNicId | project vmId, pipId, pipSku"

Nächste Schritte