PowerCLI one-liners: Listar identificador naa de un datastore

Cuando nos encontramos en la situación de tener que realizar algún tipo de troubleshooting en el storage de una solución VMware vSphere lo más típico es que tanto en la salida de comandos de PowerCLI o esxcli como en los logs del propio sistema se haga referencia a nuestros datastores por su identificador naa.*. En la entrada de hoy veremos un par one-liners con los que obtener el identificador naa de un datastore con PowerCLI.

One-liner 1: Buscando un datastore con su identificador naa

Uno de los casos típicos en los que podemos necesitar este one-liner es cuando un log hace referencia a un cambio de estado en un datastore y nos devuelve su identificador naa. Para encontrarlo rápido:

Get-Datastore | Where-Object {$_.ExtensionData.Info.Vmfs.Extent.DiskName -like “*ID_A_BUSCAR*”}

Vamos a repasar el one-liner:

  • Get-Datastore: Evidentemente, listamos todos los datastores del datacenter.
  • Where-Object {$_.ExtensionData.Info.Vmfs.Extent.DiskName: Filtramos por la propiedad DiskName (bien escondida debajo de ExtensionData) que nos devuelve el identificador naa del datastore.
  • -like “*ID_A_BUSCAR*”}: Buscamos el datastore que tenga como ID parte o toda la cadena que le facilitemos.

Un ejemplo en productivo:

Identificador naa de un datastore

One-liner 2: Obteniendo el identificador naa de todos los datastores

Si necesitamos hacer más de una consulta de la relación ID naa.* con su nombre de datastore, es posible que nos salga a cuenta sacarlos todos y guardarlos en vez de estar haciendo la consulta constantemente. Como ya sabemos cómo sacar el ID naa.* de un datastore con su propiedad de ExtensionData esto va a estar chupado:

Get-Datastore | Select-Object -Property Name,@{Name = 'Naa'; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}}

Veamos qué hace el one-liner:

  • Get-Datastore: Evidentemente, volvemos a listar todos los datastores del datacenter.
  • Select-Object -Property Name: Seleccionamos la propiedad Name para formar el objeto de salida de nuestra línea.
  • @{Name = ‘Naa’; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}: Seleccionamos para nuestro objeto de salida su segunda propiedad mediante una expresión.
    • En la propiedad Name indicamos el nombre de dicha propiedad. En este caso, en un alarde de originalidad, ‘Naa’.
    • En la propiedad Expression hacemos la misma query que en el anterior one-liner para sacar el identificador naa de los datastores mediante el objeto que nos viene del pipe.

Y por último vamos a ver cómo quedaría la salida del one-liner:

PS C:\Get-Datastore | Select-Object -Property Name,@{Name = 'Naa'; Expression = {$_.ExtensionData.Info.Vmfs.Extent.DiskName}}

Name             Naa
----             ---
datastore103     naa.123456789123c9d12366666dd7af1dc6d
datastore104     naa.123456789123123456fd66666b41e924
datastore105     naa.123456789123809ffa44b7766666a91a
datastore106     naa.12345678912397340a666668898e3133
datastore107     naa.123456789123b9c46d85196666632bd5
datastore108     naa.12345678912345bab066666d92b70b8f
datastore109     naa.123456789123c3945fef8666663772e6
datastore110     naa.12345678912304e5666663a38cedbd46

¡Espero que os sirvan estos one-liners de hoy!

Deja un comentario