从数组中提取数据字符串并通过在 PowerShell 中连接将它们分配给变量
Extract data string from an array and assign them to a variable by concatenation in 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]"
为什么我要这样做?这是因为,我想在 InputBox 中显示 $liste
,例如:
$liste = "$i. $arrayServ [$i]"
$msg = $liste -join "`n"
$item = InputBox $msg -title "Your choice"
输入框"Your choice"
有人知道我该怎么做吗?
如果要将所有名称放入变量中,可以在串联中使用 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
据我所知,您已经在 $serv
中有一个对象数组,因此没有理由将其放入 ArrayList..
如果是这种情况,您可以像这样创建 $liste
数组:
$liste = @()
$i = 1
$serv | Select-Object -ExpandProperty name | ForEach-Object {
$liste += "{0}. {1}" -f $i++, $_
}
然后使用
将其用于输入框消息
$msg = $liste -join [Environment]::NewLine
使用您的示例,这将 return
1. TOTO
2. Nav
将其放入输入框:
Add-Type -AssemblyName 'Microsoft.VisualBasic'
$item = [Microsoft.VisualBasic.Interaction]::InputBox($msg, "Votre choix")
我有一个对象数组,例如:
$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]"
为什么我要这样做?这是因为,我想在 InputBox 中显示 $liste
,例如:
$liste = "$i. $arrayServ [$i]"
$msg = $liste -join "`n"
$item = InputBox $msg -title "Your choice"
输入框"Your choice"
有人知道我该怎么做吗?
如果要将所有名称放入变量中,可以在串联中使用 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
据我所知,您已经在 $serv
中有一个对象数组,因此没有理由将其放入 ArrayList..
如果是这种情况,您可以像这样创建 $liste
数组:
$liste = @()
$i = 1
$serv | Select-Object -ExpandProperty name | ForEach-Object {
$liste += "{0}. {1}" -f $i++, $_
}
然后使用
将其用于输入框消息$msg = $liste -join [Environment]::NewLine
使用您的示例,这将 return
1. TOTO 2. Nav
将其放入输入框:
Add-Type -AssemblyName 'Microsoft.VisualBasic'
$item = [Microsoft.VisualBasic.Interaction]::InputBox($msg, "Votre choix")