从数组中提取数据字符串,然后在PowerShell中通过串联将它们分配给变量

时间:2019-03-01 14:05:54

标签: powershell variables concatenation inputbox arrayobject

我有一个对象数组,例如:

skills: [String]

此数组包含一些对象,例如:

$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

我为什么要这样做?这是因为,我想在InputBox中显示$liste = "$i. $arrayServ [$i]" ,例如:

$liste

InputBox“您的选择”

enter image description here

有人知道我该怎么做吗?

2 个答案:

答案 0 :(得分:1)

据我所知,您在$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

答案 1 :(得分:0)

如果要将所有名称都放入变量中,则可以在串联中使用indexOf(value)

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

因此创建一个仅包含名称的数组:

$names = $arrayServ.name

根据提供的示例数据,如果您知道要显示该列表中的第二项,则获取索引值“ Nav”并添加1,因为数组的第一个索引为0,并且您想要计数,不是索引位置:

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

$liste设置为计数,然后在$names减去$count的位置减去$liste = "$count. $($names[$count - 1])" 处的项,以便获得正确的值。

2. Nav

这应该显示

//in myclass.h
struct myclass{
template<typename Entity>
static constexpr const char* myfnc1();

template<typename Entity>
static std::string myfnc2();
};

//in myclass.cpp
template<> const char* myclass::myfnc1<AnotherClass>() {return "str";}
template<> std::string myclass::myfnc2<AnotherClass2>() {return "str2"; }

template const char* myclass::myfnc1<AnotherClass>();
template std::string myclass::myfnc2<AnotherClass2>();