Objeto/string de análise do Powershell

Objeto/string de análise do Powershell

Aprendendo o PowerShell, tentando descobrir como analisar o primeiro valor deste conjunto de resultados:

IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}

Normalmente eu apenas procuraria, no entanto, não sei se {x, x} é uma espécie de tipo de dados padrão em Powershellterra.

Preciso fazer uma análise aproximada da string ou existe algum comando padrão para extrair a primeira, como:

... | Select-Object IPAddresses | Select-String [0]

(Acabei de criar a parte da string selecionada. Estou perdido.)

Responder1

Isto é o que tenho até agora:

... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]

Retorna o primeiro.

Responder2

Experimente assim:

$myResultSet | foreach { $_.IPAddresses[0] }

Responder3

Tentar

$myResultSet | Select-Object -First 1 IPAddress

Seu conjunto de resultados é uma coleção de algum tipo. O Select-Objectcmdlet pega o primeiro item dessa coleção e filtra apenas para a IPAddresspropriedade que é exibida.

Na minha máquina, a saída do comando acima é assim. O seu provavelmente será diferente porque o endereço retornado será diferente

IPAddress                                                                                                              
---------                                                                                                              
fe80::5581:4fbc:fc22:ec79%13                                                                                           

Você obtém a tabela porque, por padrão, o PowerShell envia a saída Format-Tablepara fazer uma bela exibição.

Para acessar apenas o próprio endereço IP, você pode modificar ligeiramente a expressão:

$myResultSet.IPAddress|Select-Object -First 1

ou, usando notação de ponto e um índice na coleção, você pode evitar o uso Select-Objecttotalmente assim:

$myResultSet[0].IPAddress

O acima se refere diretamente à IPAddresspropriedade do primeiro item da $myResultSetcoleção, que possui índice zero, portanto$myResultSet[0]

Qualquer um deles retornará apenas o próprio endereço IP, assim:

fe80::5581:4fbc:fc22:ec79%13

Responder4

Primeiro, você não precisa adivinhar qual IPAddressesé o tipo, você pode obtê-lo facilmente assim:

$myResultSet[0].IPAddresses.GetType()

Provavelmente será algum tipo decoleção (matriz), então você pode usar Select-Objectcom ExpandPropertyo parâmetro:

$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1

Ou você pode usaroperador de desreferência de propriedadee\ou indexar comoSmurf aleijadosugerido

informação relacionada