Uppgradera offentliga IP-adresser som är kopplade till den virtuella datorn från Basic till Standard
Viktigt!
Den 30 september 2025 kommer offentliga IP-adresser för Basic SKU att dras tillbaka. Mer information finns i det officiella meddelandet. Om du för närvarande använder offentliga IP-adresser för Basic SKU måste du uppgradera till offentliga IP-adresser för Standard SKU före slutdatumet. Den här artikeln hjälper dig genom uppgraderingsprocessen.
Mer information om tillbakadragande av offentliga IP-adresser för grundläggande SKU och fördelarna med offentliga IP-adresser för Standard SKU finns här
Översikt över uppgradering
Det här skriptet uppgraderar alla offentliga IP-adresser som är kopplade till den virtuella datorn från Basic till Standard SKU. För att kunna utföra uppgraderingen är allokeringsmetoden för offentlig IP-adress inställd på statisk innan den kopplas bort från den virtuella datorn. När den offentliga IP-SKU:n har tagits bort uppgraderas den till Standard och sedan associeras IP-adressen igen med den virtuella datorn.
Eftersom den offentliga IP-allokeringen är inställd på "Static" innan den kopplas från den virtuella datorn ändras inte IP-adressen under uppgraderingsprocessen, inte ens i händelse av ett skriptfel. Modulen dubbelkontrollerar att den offentliga IP-allokeringsmetoden är "Statisk" innan den offentliga IP-adressen kopplas från den virtuella datorn.
Modulen loggar all uppgraderingsaktivitet till en fil med namnet PublicIPUpgrade.log
, som skapades på samma plats där modulen kördes (som standard).
Villkor/Scenarier som inte stöds
Virtuella datorer med nätverkskort som är associerade med en lastbalanserare: Eftersom lastbalanseraren och offentliga IP-SKU:er som är associerade med en virtuell dator måste matcha, går det inte att uppgradera de offentliga IP-adresserna på instansnivå som är associerade med en virtuell dator när den virtuella datorns nätverkskort också är associerade med en lastbalanserare, antingen via serverdelspoolen eller NAT-poolmedlemskap. Använd skripten Uppgradera en grundläggande lastbalanserare till Standard SKU för att uppgradera både lastbalanseraren och offentliga IP-adresser på samma gång.
Virtuella datorer utan nätverkssäkerhetsgrupp: Virtuella datorer med IP-adresser som ska uppgraderas måste ha en nätverkssäkerhetsgrupp (NSG) associerad med antingen undernätet för varje IP-konfiguration med en offentlig IP-adress eller med nätverkskortet direkt. Det beror på att offentliga IP-adresser för Standard SKU är "säkra som standard", vilket innebär att all trafik till den offentliga IP-adressen uttryckligen måste tillåtas vid en NSG för att nå den virtuella datorn. Grundläggande offentliga SKU-IP-adresser tillåter all trafik som standard. Uppgradering av offentliga IP-SKU:er utan en NSG skulle resultera i inkommande Internettrafik till den offentliga IP-adressen som tidigare tilläts, och basic-SKU:n blockerades efter migreringen. Se: Offentliga IP-SKU:er
Vm-skalningsuppsättningar med offentliga IP-konfigurationer: Om du har en vm-skalningsuppsättning (enhetlig modell) med offentliga IP-konfigurationer per instans bör du tänka på att dessa konfigurationer inte är offentliga IP-resurser och därför inte kan uppgraderas. I stället kan du ta bort grundläggande IP-konfiguration och använda SKU-egenskapen för att ange att Standard IP-konfigurationer krävs för varje vm-skalningsuppsättningsinstans som visas här.
Förutsättningar
- Installera den senaste versionen av PowerShell
- Kontrollera om du har den senaste Az PowerShell-modulen installerad (och installera den senaste Az PowerShell-modulen om inte)
Ladda ned skriptet
Ladda ned migreringsskriptet från PowerShell-galleriet.
PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force
Använda modulen
Använd
Connect-AzAccount
för att ansluta till den nödvändiga Microsoft Entra-klientorganisationen och Azure-prenumerationenPS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
Leta upp den virtuella datorn med de anslutna offentliga IP-adresser som du vill uppgradera. Registrera dess namn och resursgruppsnamn.
Granska modulparametrarna:
- VMName [sträng] Krävs – Den här parametern är namnet på den virtuella datorn.
- ResourceGroupName [sträng] Krävs – Den här parametern är resursgruppen för den virtuella datorn med de grundläggande offentliga IP-adresser som du vill uppgradera.
Kör kommandot Uppgradera.
Exempel på användning av skriptet
Om du vill uppgradera en enskild virtuell dator skickar du namnet på den virtuella datorn och resursgruppens namn som parametrar.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'
Om du vill utvärdera uppgraderingen av en enskild virtuell dator, utan att göra några ändringar, lägger du till parametern -WhatIf.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
Om du vill uppgradera alla virtuella datorer i en resursgrupp hoppar du över virtuella datorer som inte har nätverkssäkerhetsgrupper.
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
Återställning från en misslyckad migrering
Om en migrering misslyckas på grund av ett tillfälligt problem, till exempel ett nätverksavbrott eller ett klientsystemproblem, kan migreringen köras igen för att konfigurera den virtuella datorn och offentliga IP-adresser i måltillståndet. Vid körningen matar skriptet ut en återställningsloggfil som används för att säkerställa att den virtuella datorn är korrekt omkonfigurerad. Granska loggfilen PublicIPUpgrade.log
som skapades på den plats där skriptet kördes.
Om du vill återställa från en misslyckad uppgradering skickar du sökvägen till återställningsloggfilen till skriptet med parametern -recoverFromFile
och identifierar den virtuella datorn som ska återställas med parametrarna -VMName
och -VMResourceGroup
eller -VMResourceID
som visas i det här exemplet.
Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName myVM -VMResourceGroup -rg-myrg
Vanliga frågor
Hur lång tid tar migreringen och hur lång tid kommer min virtuella dator att vara otillgänglig vid sin offentliga IP-adress?
Hur mycket tid det tar att uppgradera en virtuell dators offentliga IP-adresser beror på antalet offentliga IP-adresser och nätverksgränssnitt som är associerade med den virtuella datorn. Vid testning tar det mellan 1 och 2 minuter att uppgradera en virtuell dator med ett enda nätverkskort och en offentlig IP-adress. Varje nätverkskort på den virtuella datorn lägger till ungefär en minut och varje offentlig IP-adress lägger till några sekunder vardera.
Kan jag återställa till en offentlig IP-adress för grundläggande SKU?
Det går inte att nedgradera en offentlig IP-adress från Standard till Basic.
Kan jag testa en migrering innan jag kör?
Det går inte att utvärdera uppgraderingen av en offentlig IP-adress utan att slutföra åtgärden. Det här skriptet innehåller dock en -whatif
parameter som kontrollerar att den virtuella datorn stöder uppgraderingen och går igenom stegen utan att vidta åtgärder.
Stöder skriptet offentliga IP-adresser för Zonal Basic SKU?
Ja, processen för att uppgradera en offentlig IP-adress för Zonal Basic SKU till en offentlig IP-adress för zonindelad standard-SKU är identisk och fungerar i skriptet.
Använd Resource Graph för att lista virtuella datorer med offentliga IP-adresser som kräver uppgradering
Fråga för att lista virtuella datorer med offentliga IP-adresser för Basic SKU
Den här frågan returnerar en lista över virtuella dator-ID:n med grundläggande offentliga IP-adresser kopplade till SKU.
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"