class 类型对象的 Powershell 列表

Powershell list of objects of a class type

我正在尝试遍历 class 类型的对象列表。 class 看起来像这样:

Class UrlTestModel
{
    [String]$Name
    [String]$Url
    [String]$TestInProd
}

所以我希望能够创建一个包含上述三个字符串的对象列表,然后遍历该列表并对数据进行处理。 出于某种原因,我看不到这样做的方法。看起来很简单。我是 powershell 的新手,来自 C# 背景,所以我可能也在考虑 C# 而没有足够的 powershell。 :)

您可以这样创建一个新实例:

New-Object -TypeName "UrlTestModel" -Property @{
    Name = "string"
    Url = "string"
    TestInProd = "string"
}

或者在你的 class 中定义一个构造函数:

class UrlTestModel
{
    [String]$Name
    [String]$Url
    [String]$TestInProd

    UrlTestModel([string]$name, [string]$url, [string]$testInProd) {
        $this.Name = $name
        $this.Url = $url
        $this.TestInProd = $testInProd
    }
}

然后像这样创建一个新实例:

[UrlTestModel]::new("string", "string", "string")

您可以在 about_Classes 中阅读更多相关信息。

列表基本上是使用 comma operator:

创建的
$list = [UrlTestModel]::new("name1", "url1", "true"), [UrlTestModel]::new("name2", "url2", "false")

# or

$a = New-Object -TypeName UrlTestModel -Property @{Name = "string"; Url = "string"; TestInProd = "string" }
$b = New-Object -TypeName UrlTestModel -Property @{Name = "string"; Url = "string"; TestInProd = "string" }
$list = $a, $b

使用 ForEach-Object cmdlet or the foreach 语句遍历列表:

$list | ForEach-Object {
    # this is the current item:
    $_
}

# or 

foreach ($item in $list) {
    # ... 
}