Crear y asignar un atributo personalizado para máquinas virtuales en vCenter usando PowerShell

Introducción:

Administrar un gran número de máquinas virtuales en vCenter puede ser un desafío, especialmente cuando se necesita realizar un seguimiento de información específica para cada VM. Los atributos personalizados pueden ser útiles en estos casos, ya que permiten almacenar metadatos sobre sus VMs. En esta entrada de blog, vamos a explicar un script de PowerShell para crear y asignar un atributo personalizado llamado «TechnologyID» a todas las máquinas virtuales en vCenter, excluyendo aquellas con nombres que comienzan con «vlcm».

Requisitos previos:

  1. VMware PowerCLI instalado en el sistema donde se ejecutará el script.
  2. Credenciales del servidor vCenter con privilegios suficientes para crear y configurar atributos personalizados.

Explicación del script de PowerShell:

  1. Importar el módulo VMware PowerCLI:
powershellCopy codeImport-Module VMware.PowerCLI

Este comando importa el módulo VMware PowerCLI para utilizar sus cmdlets en el script.

  1. Conectarse al servidor vCenter:
powershellCopy code$vCenterServer = "your_vcenter_server"
$Username = "your_username"
$Password = "your_password"
Connect-VIServer -Server $vCenterServer -User $Username -Password $Password

Reemplace your_vcenter_server, your_username y your_password con la dirección de su servidor vCenter, nombre de usuario y contraseña, respectivamente. El cmdlet Connect-VIServer establece una conexión con el servidor vCenter.

  1. Definir el nombre del atributo personalizado y verificar si existe:
powershellCopy code$CustomAttributeName = "TechnologyID"
$customFieldsManager = Get-View (Get-View ServiceInstance).Content.CustomFieldsManager
$CustomAttribute = $customFieldsManager.Field | Where-Object { $_.Name -eq $CustomAttributeName }

Definimos el nombre del atributo personalizado como «TechnologyID» y usamos el cmdlet Get-View para acceder directamente a la API de vCenter y recuperar el administrador de campos personalizados. Luego verificamos si el atributo personalizado ya existe.

  1. Crear el atributo personalizado si no existe:
powershellCopy codeif (-not $CustomAttribute) {
    $customFieldsManager.AddCustomFieldDef($CustomAttributeName, "VirtualMachine", $null, $null)
    $CustomAttribute = $customFieldsManager.Field | Where-Object { $_.Name -eq $CustomAttributeName }
}
$CustomAttribute = $CustomAttribute[0]

Si el atributo personalizado no existe, lo creamos usando el método AddCustomFieldDef. Luego recuperamos el atributo personalizado recién creado y almacenamos el primer elemento en la variable $CustomAttribute.

  1. Iterar a través de los clústeres y establecer el valor del atributo personalizado para las máquinas virtuales:
powershellCopy code$Clusters = Get-Cluster
foreach ($Cluster in $Clusters) {
    Write-Host "Procesando clúster: $($Cluster.Name)"
    $VMs = Get-VM -Location $Cluster
    foreach ($VM in $VMs) {
        if ($VM.Name -notlike "vlcm*") {
            Write-Host "Estableciendo TechnologyID para VM: $($VM.Name)"
            $vmView = Get-View $VM
            $customFieldsManager.SetField($vmView.MoRef, $CustomAttribute.Key, "")
        } else {
            Write-Host "Omitiendo VM: $($VM.Name)"
        }
    }
}

Recuperamos todos los clústeres y los iteramos. Para cada clúster, recuperamos sus máquinas virtuales y las iteramos. Utilizamos una declaración condicional para verificar si el nombre de la VM no comienza con «vlcm». Si no lo hace, establecemos el valor del atributo personalizado para la VM como una cadena vacía. De lo contrario, omitimos la VM.

  1. Desconectarse del servidor vCenter:
powershellCopy codeDisconnect-VIServer -Server $vCenterServer -Confirm:$false

Finalmente, nos desconectamos del servidor vCenter usando el cmdlet Disconnect-VIServer, asegurándonos de no solicitar confirmación al establecer el parámetro -Confirm en $false.

Conclusión:

En esta entrada de blog, hemos demostrado cómo crear y asignar un atributo personalizado llamado «TechnologyID» para máquinas virtuales en vCenter usando un script de PowerShell. Este script ayuda a administrar y organizar las VMs al establecer metadatos personalizados mientras excluye VMs específicas según su patrón de nombre. El script se puede modificar fácilmente para adaptarse a sus requisitos específicos, como usar un nombre de atributo diferente o cambiar los criterios de filtrado de las VMs que se procesarán.

🔥Suscribirse al canal: https://bit.ly/3vY16CT🔥


🚨Leer mi blog: https://angrysysops.com/


👊Twitter: https://twitter.com/AngrySysOps
👊Facebook: https://www.facebook.com/AngrySysOps
👊Mi Podcast: https://bit.ly/39fFnxm
👊Mastodon: https://techhub.social/@AngryAdmin


🔥Información sobre vExpert: https://bit.ly/3vXGPOa


🛒 Tienda VMware EMEA: https://imp.i263671.net/c/3505578/814646/11461


🛒 Tienda VMware US: https://imp.i263671.net/c/3505578/814642/11461


🛒 Tienda VMware APAC: https://imp.i263671.net/c/3505578/814645/11461

Please leave the comment