Aprendiendo powershell, intentando descubrir cómo analizar el primer valor de este conjunto de resultados:
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
Normalmente, simplemente lo buscaría, sin embargo, no sé si {x, x} es un tipo de datos estándar en Powershell
el mundo.
¿Tengo que realizar un análisis aproximado de cadenas o existe algún comando estándar para extraer la primera, como por ejemplo:
... | Select-Object IPAddresses | Select-String [0]
(Acabo de hacer que la cadena de selección se separe. Estoy perdido).
Respuesta1
Esto es lo que tengo hasta ahora:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
Devuelve el primero.
Respuesta2
Pruébalo así:
$myResultSet | foreach { $_.IPAddresses[0] }
Respuesta3
Intentar
$myResultSet | Select-Object -First 1 IPAddress
Su conjunto de resultados es una colección de algún tipo. El Select-Object
cmdlet toma el primer elemento de esa colección y luego filtra solo la IPAddress
propiedad que luego se muestra.
En mi máquina, el resultado del comando anterior se ve así. Es probable que la suya difiera en que la dirección devuelta será diferente
IPAddress
---------
fe80::5581:4fbc:fc22:ec79%13
Obtiene la tabla porque, de forma predeterminada, PowerShell envía la salida Format-Table
para crear una visualización agradable.
Para acceder solo a la dirección IP, puedes modificar ligeramente la expresión:
$myResultSet.IPAddress|Select-Object -First 1
o, al usar notación de puntos y un índice en la colección, puedes evitar el uso Select-Object
por completo de esta manera:
$myResultSet[0].IPAddress
Lo anterior se refiere directamente a la IPAddress
propiedad del primer elemento de la $myResultSet
colección, que tiene un índice de cero, por lo tanto$myResultSet[0]
Cualquiera de estos devolverá solo la dirección IP de esta manera:
fe80::5581:4fbc:fc22:ec79%13
Respuesta4
Primero, no tienes que adivinar de qué tipo IPAddresses
es, puedes obtenerlo fácilmente así:
$myResultSet[0].IPAddresses.GetType()
Probablemente será algún tipo decolección (matriz), por lo que puedes usar Select-Object
con ExpandProperty
el parámetro:
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
O puedes usaroperador de desreferencia de propiedady\o indexar comopitufo lisiadosugirió