1

Изучение PowerShell, пытаясь выяснить, как разобрать первое значение из этого набора результатов:

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

Обычно я просто смотрю на это, однако я не знаю, является ли {x, x} стандартным типом данных на земле Powershell .

Нужно ли делать грубый разбор строк, или есть какая-то стандартная команда для извлечения первой, например:

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

(Я только что сделал выделенную строку частью вверх. Я потерялся.)

4 ответа4

1

Это то, что я до сих пор:

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

Возвращает первый.

0

Во-первых, вам не нужно угадывать тип IPAddresses , вы можете легко получить его следующим образом:

$myResultSet[0].IPAddresses.GetType()

Вероятно, это будет какая-то коллекция (массив), поэтому вы можете использовать Select-Object с параметром ExpandProperty :

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

Или вы можете использовать оператор разыменования свойства и \ или индекс, как предложил Crippledsmurf

0

Попробуйте это так:

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

Пытаться

$myResultSet | Select-Object -First 1 IPAddress

Ваш набор результатов является коллекцией некоторого типа. Командлет Select-Object берет первый элемент в этой коллекции, а затем выполняет фильтрацию только для свойства IPAddress которое затем отображается.

На моей машине вывод вышеуказанной команды выглядит следующим образом. Ваш, скорее всего, будет отличаться тем, что возвращаемый адрес будет другим

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

Вы получаете таблицу, потому что по умолчанию PowerShell помещает вывод через Format-Table чтобы сделать хорошее отображение.

Чтобы получить доступ только к самому IP-адресу, вы можете слегка изменить выражение:

$myResultSet.IPAddress|Select-Object -First 1

или, используя точечную нотацию и индекс в коллекции, вы можете избежать использования Select-Object полностью следующим образом:

$myResultSet[0].IPAddress

Вышеприведенное непосредственно относится к свойству IPAddress первого элемента в коллекции $myResultSet , индекс которого равен нулю, следовательно, $myResultSet[0]

Любой из них вернет только сам IP-адрес, например:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .