Isso é o que eu tenho até agora:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
Retorna o primeiro.
Learning powershell, tentando descobrir como analisar o primeiro valor desse conjunto de resultados:
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
Normalmente, eu apenas procurava, no entanto, não sei se {x, x} é um tipo de dados padrão de tipos em Powershell
land.
Eu tenho que fazer uma análise grosseira de strings, ou existe algum comando padrão para extrair o primeiro, como:
... | Select-Object IPAddresses | Select-String [0]
(Acabei de fazer a parte da string de seleção. Estou perdido.)
Isso é o que eu tenho até agora:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
Retorna o primeiro.
Experimente assim:
$myResultSet | foreach { $_.IPAddresses[0] }
Tente
$myResultSet | Select-Object -First 1 IPAddress
Seu conjunto de resultados é uma coleção de algum tipo. O cmdlet Select-Object
está recebendo o primeiro item dessa coleção e, em seguida, filtrando apenas a propriedade IPAddress
que é exibida.
Na minha máquina, a saída do comando acima se parece com isso. O seu provavelmente será diferente, pois o endereço retornado será diferente
IPAddress
---------
fe80::5581:4fbc:fc22:ec79%13
Você obtém a tabela porque, por padrão, o PowerShell coloca a saída em Format-Table
para fazer uma boa exibição.
Para acessar apenas o próprio endereço IP, você pode modificar a expressão ligeiramente:
$myResultSet.IPAddress|Select-Object -First 1
ou, usando a notação de ponto e um índice na coleção, você pode evitar usar Select-Object
inteiramente assim:
$myResultSet[0].IPAddress
O texto acima se refere diretamente à propriedade IPAddress
do primeiro item na coleção $myResultSet
, que tem um índice de zero, portanto $myResultSet[0]
Qualquer um destes retornará o próprio endereço IP da seguinte forma:
fe80::5581:4fbc:fc22:ec79%13
Primeiro, você não precisa adivinhar qual é o tipo IPAddresses
, pode obtê-lo facilmente assim:
$myResultSet[0].IPAddresses.GetType()
Provavelmente, será uma espécie de Select-Object
with ExpandProperty
:
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
Ou você pode usar operador de cancelamento de referência de propriedade e \ ou indexar como Crippledsmurf sugerido