如何在Powershell中实例化未知数量的对象?

时间:2017-12-15 14:47:43

标签: windows powershell powershell-v5.0

我对Powershell版本5中的对象创建有疑问。为了简化我的问题,我提供了我想要在功能上实现的确切Java代码。

我知道,除了面向对象之外,Java和Powershell没有任何共同点,我也不在乎如何在语法上实现这一点。

    Scanner scan = new Scanner(System.in);
    System.out.println("How many argument lists do you want to provide?");
    int i = Integer.parseInt(scan.next());
    List<List<String>> list = new ArrayList<>();
    for(int j = 0; j < i; j++)
    {
        list.add(new ArrayList<String>()); // this is the exact point if don't know how to substantiate in powershell
        list.get(j).add(scan.next());
        // more arguments to be entered
    }

Powershell中的实际意图是使用Read-Host解析用户提供的参数,并构建包含它们的字符串列表。每个列表应包含一个Powershell命令的参数。

3 个答案:

答案 0 :(得分:1)

您应该更多地定义问题,而不仅仅是发布java代码。

但要回答: “如何在PowerShell中实例化未知数量的对象?”

要动态地将字符串添加到数组,请执行以下操作:

$a = @()
$a += Read-Host

在for循环中。

如果您想添加多个字符串,请阅读Powershell Custom Objects

答案 1 :(得分:0)

您可以使用.NET中的ArrayList:

$a = New-Object System.Collections.ArrayList
$a.Add("Hello")
$a.Add(42)

答案 2 :(得分:0)

我自己找到了解决方案。 这完全等同于我的java代码和我想要实现的目标:

$i = Read-Host -Prompt "How many argument lists do you want to provide?"
$listOfListsOfArguments = New-Object System.Collections.ArrayList
for ($i=1; $i -le $flag; $i++)
    {
        $Private:localParameterList = New-Object System.Collections.ArrayList
        $param = Read-Host -Prompt"argument x:"
        $localParameterList.add($param)
        #...
        $listOfListsOfArguments.add($localParameterList)
    }