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

How to instantiate an unknown amount of objects in Powershell?

我有一个关于在 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 命令的参数。

您可以使用 .NET 中的 ArrayList:

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

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

但要回答: "How can I instantiate an unknown amount of objects in powershell?"

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

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

在 for 循环中。

如果你想添加的不仅仅是字符串,你应该阅读 Powershell Custom Objects

我自己找到了解决方案。 这完全等同于我的 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)
    }