Извлечь строку данных из массива и назначить их переменной путем объединения в PowerShell - PullRequest
0 голосов
/ 01 марта 2019

У меня есть массив объектов, таких как:

$arrayServ = New-Object System.Collections.ArrayList(,$serv)

этот массив содержит некоторые объекты, такие как:

name        prefix                     tenants                  
----        ------                     -------                  
TOTO        http://home/toto           bob, michael, ramy, anna
Nav         http://8.8.8.8/google      com, uk, fr

Я пытаюсь извлечь все данные в свойстве nameи поместите их в переменную и объедините эту переменную с другой переменной, которая является счетчиком name.

Примерно так:

$liste = "$i. $arrayServ [$i]"

Почему я хочу это сделать?Это потому, что я хочу отобразить $liste в блоке ввода, например:

$liste = "$i. $arrayServ [$i]"
$msg = $liste -join "`n"
$item = InputBox $msg -title "Your choice"

Блок ввода «Ваш выбор»

enter image description here

Кто-нибудь знает, как я могу это сделать, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Насколько я могу судить, у вас уже есть массив объектов в $serv, поэтому не должно быть никаких причин помещать это в ArrayList.

Если это так, вы могли бысоздайте массив $liste следующим образом:

$liste = @()
$i = 1
$serv | Select-Object -ExpandProperty name | ForEach-Object {
    $liste += "{0}. {1}" -f $i++, $_
}

и затем используйте его для сообщения ввода, используя

$msg = $liste -join [Environment]::NewLine

Используя ваши примеры, вы получите

1. TOTO
2. Nav

Поместить это в поле ввода:

Add-Type -AssemblyName 'Microsoft.VisualBasic'
$item = [Microsoft.VisualBasic.Interaction]::InputBox($msg, "Votre choix")

enter image description here

0 голосов
/ 01 марта 2019

Если вы хотите поместить все имена в переменную, вы можете использовать indexOf(value) в вашей конкатенации:

$arrayServ = New-Object System.Collections.ArrayList(,$serv)

Так что создайте массив из только имен:

$names = $arrayServ.name

На основании предоставленных примеров данных, если вы знали, что хотите отобразить второй элемент из этого списка, получите значение индекса 'Nav' и добавьте 1, так как первый индекс массива равен 0, и вы хотите количество,не позиция индекса:

$count = $names.indexOf('Nav') + 1

Установите $liste на счетчик, затем интерполируйте элемент в позиции $names минус 1 из $count, чтобы вы получили правильное значение.

$liste = "$count. $($names[$count - 1])"

Это должно отобразить

2. Nav
...