Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
El 30 de septiembre de 2025, se retiraron las direcciones IP públicas de SKU Basic. Para obtener más información, consulte el anuncio oficial. Si actualmente usa direcciones IP públicas de SKU básicas, asegúrese de actualizar a direcciones IP públicas de SKU estándar lo antes posible. Este artículo le guiará en el proceso de actualización.
Para obtener más información sobre la retirada de direcciones IP públicas de SKU básicas y las ventajas de las direcciones IP públicas de SKU estándar, consulte aquí
Información general sobre la actualización
Este script actualiza las direcciones IP públicas asociadas a la máquina virtual de la SKU básica a estándar. Para realizar la actualización, el método de asignación de dirección IP pública se establecerá en estático antes de desasociarse de la máquina virtual. Una vez desasociada, la SKU de IP pública se actualiza a Estándar y, a continuación, la dirección IP se vuelve a asociar a la máquina virtual.
Dado que la asignación de IP pública se establece en Estática antes de desasociar de la máquina virtual, la dirección IP no cambiará durante el proceso de actualización, incluso si se produce un error en el script. El módulo comprueba dos veces que el método de asignación de IP pública es Estático antes de desasociar la dirección IP pública de la máquina virtual.
El módulo registra toda la actividad de actualización en un archivo denominado PublicIPUpgrade.log, creado en la misma ubicación donde se ejecutó el módulo (de forma predeterminada).
Restricciones/escenarios no admitidos
Máquinas virtuales con NIC asociadas a un equilibrador de carga: dado que las SKU de IP pública y el equilibrador de carga asociados a una máquina virtual deben coincidir, no es posible actualizar las direcciones IP públicas de nivel de instancia asociadas a una máquina virtual cuando las NIC de la máquina virtual también estén asociadas a un equilibrador de carga, ya sea a través de la pertenencia al grupo de back-end o al grupo NAT. Use los scripts Actualizar un equilibrador de carga básico a la SKU estándar para actualizar las direcciones IP públicas y el equilibrador de carga al mismo tiempo.
Máquinas virtuales sin un grupo de seguridad de red: las máquinas virtuales con direcciones IP que se vayan a actualizar deberán tener un grupo de seguridad de red (NSG) asociado a la subred de cada configuración de IP con una dirección IP pública o directamente con la NIC. Esto se debe a que las direcciones IP públicas de SKU estándar son "seguras de forma predeterminada", lo que significa que cualquier tráfico a la dirección IP pública debe permitirse explícitamente en un NSG para llegar a la máquina virtual. Las direcciones IP públicas de SKU básica permiten cualquier tráfico de forma predeterminada. La actualización de las SKU de IP pública sin un grupo de seguridad de red daría lugar a que el tráfico entrante de Internet a la dirección IP pública que se permitía anteriormente con la SKU básica se bloquease después de la migración. Consulte: SKU de IP pública
Conjuntos de escalado de máquinas virtuales con configuraciones de IP pública: si tiene un conjunto de escalado de máquinas virtuales (modelo uniforme) con configuraciones de IP públicas por instancia, tenga en cuenta que estas configuraciones no son recursos de IP pública y, como tal, no se pueden actualizar. En su lugar, puede quitar la configuración de IP básica y usar la propiedad SKU para especificar que las configuraciones de IP estándar son necesarias para cada instancia de conjunto de escalado de máquinas virtuales, tal y como se muestra aquí.
Requisitos previos
- Instale la versión más reciente de PowerShell
- Asegúrese de tener instalado el módulo de Az PowerShell más reciente (e instale el módulo Az PowerShell más reciente en caso contrario)
Descarga del script
Nota:
Este proceso requiere la descarga y ejecución de un script de PowerShell. Debe asegurarse de que tiene los permisos adecuados dentro de su entorno para completar esta tarea. Dado que los módulos de PowerShell están instalados, compruebe con la función de seguridad de su organización para determinar si el uso del script infringe las prácticas de seguridad. Es responsable de garantizar que se permita el uso de este script dentro de su organización.
Descargue el script de migración de la Galería de PowerShell.
PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force
Uso del módulo
Use
Connect-AzAccountpara conectarse al inquilino de Microsoft Entra necesario y a la suscripción de AzurePS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>Busque la máquina virtual con las direcciones IP públicas básicas adjuntas que desee actualizar. Registre su nombre y el nombre del grupo de recursos.
Examine los parámetros del módulo:
- VMName [string] obligatorio: este parámetro es el nombre de la máquina virtual.
- ResourceGroupName [string] necesario: este parámetro es el grupo de recursos de la máquina virtual con las direcciones IP públicas básicas asociadas que desee actualizar.
Ejecute el comando Upgrade.
Usos de ejemplo del script
Para actualizar una sola máquina virtual, pase el nombre de la máquina virtual y el nombre del grupo de recursos como parámetros.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'
Para evaluar la actualización de una sola máquina virtual, sin realizar ningún cambio, agregue el parámetro -WhatIf.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
Para actualizar todas las máquinas virtuales de un grupo de recursos, omita las máquinas virtuales que no tengan grupos de seguridad de red.
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
Recuperación de una migración con errores
Si se produjera un error en una migración debido a un problema transitorio, como una interrupción de la red o un problema del sistema cliente, la migración se podrá volver a ejecutar para configurar la máquina virtual y las direcciones IP públicas en el estado objetivo. En la ejecución, el script genera un archivo de registro de recuperación, que se usa para asegurarse de que la máquina virtual se vuelva a configurar correctamente. Revise el archivo de registro PublicIPUpgrade.log creado en la ubicación donde se ejecutó el script.
Para recuperarse de una actualización con errores, pase la ruta del archivo de registro de recuperación al script con el parámetro -recoverFromFile e identifique la máquina virtual que se vaya a recuperar con los parámetros -VMName y -ResourceGroupName, o bien -VMResourceID, tal y como se muestra en este ejemplo.
Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName 'myVM' -ResourceGroupName 'rgName'
Preguntas frecuentes
¿Cuánto tiempo tardará la migración y cuánto tiempo será inaccesible mi máquina virtual en su dirección IP pública?
El tiempo necesario para actualizar las direcciones IP públicas de una máquina virtual depende del número de direcciones IP públicas e interfaces de red asociadas a la máquina virtual. En las pruebas, una máquina virtual con una sola NIC y una dirección IP pública tardará entre 1 y 2 minutos en actualizarse. Cada NIC de la máquina virtual agregará aproximadamente otro minuto, y cada IP pública agregará unos segundos cada una.
¿Puedo revertir a una IP pública de SKU básica?
No es posible cambiar a una versión anterior de una dirección IP pública Estándar a Básica.
¿Puedo probar una migración antes de ejecutarla?
No hay ninguna manera de evaluar la actualización de una dirección IP pública sin completar la acción. Sin embargo, este script incluye un -whatif parámetro, que comprueba que la máquina virtual admite la actualización y recorre los pasos sin realizar ninguna acción.
¿El script admite IP públicas de SKU básica zonal?
Sí, el proceso de actualización de una IP pública de SKU básica zonal a una IP pública de SKU estándar zonal es idéntica y funciona en el script.
Si se especifica una NIC asociada a una dirección IP pública destinada a la migración en el grupo de back-end de Application Gateway, ¿este script lo quitará del grupo?
Sí, se quita. Después de ejecutar el script, deberá reasignar manualmente la NIC al grupo de back-end de Application Gateway. Como alternativa, puede evitar este problema especificando explícitamente la dirección IP privada en la configuración del grupo de back-end antes de la migración.
Uso de Resource Graph para enumerar las máquinas virtuales con direcciones IP públicas que requieren la actualización
Consulta para mostrar las máquinas virtuales con direcciones IP públicas de SKU básico
Esta consulta devuelve una lista de identificadores de máquina virtual con direcciones IP públicas de SKU básico asociadas.
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"