Изучаю PowerShell, пытаюсь выяснить, как проанализировать первое значение из этого набора результатов:
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
Обычно я бы просто посмотрел, однако я не знаю, является ли {x, x} стандартным типом данных в Powershell
Land.
Нужно ли мне делать грубый разбор строки или есть какая-то стандартная команда для извлечения первой, например:
... | Select-Object IPAddresses | Select-String [0]
(Я только что составил часть строки «выбор». Я запутался.)
решение1
Вот что у меня есть на данный момент:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
Возвращает первый.
решение2
Попробуйте вот так:
$myResultSet | foreach { $_.IPAddresses[0] }
решение3
Пытаться
$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
решение4
Во-первых, вам не нужно гадать, какой IPAddresses
это тип, вы можете легко узнать его следующим образом:
$myResultSet[0].IPAddresses.GetType()
Вероятно, это будет что-то вродеколлекция (массив), поэтому вы можете использовать Select-Object
с ExpandProperty
параметром:
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
Или вы можете использоватьоператор разыменования свойстваи\или индекс какCrippledsmurfпредложенный