Извлечь строку данных из массива и назначить их переменной путем объединения в PowerShell
У меня есть массив объектов, таких как:
$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
в InputBox, например:
$liste = "$i. $arrayServ [$i]"
$msg = $liste -join "`n"
$item = InputBox $msg -title "Your choice"
Блок ввода "Ваш выбор"
Кто-нибудь знает, как я могу это сделать, пожалуйста?
2 ответа
Насколько я могу судить, у вас уже есть массив объектов в $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")
Если вы хотите поместить все имена в переменную, вы можете использовать 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