Powershell参数块接受[PSTypeName("MyType")]的数组

And*_*ker 5 powershell types

如果我使用a创建一个对象,pstypename那么我可以将函数的参数强制为该类型,如下所示:

function New-NugetDependency{
    Param(
        [string]$Id,
        [string]$Version
    )
    [PSCustomObject]@{
        PSTypeName = "NuGetDependency"
        ID = $ID
        Version = $Version
    }
}
Run Code Online (Sandbox Code Playgroud)

function Show-NugGetDependency{
    Param(
        [PSTypeName("NuGetDependency")]$Dependency
    )
    Write-Host ("Dependency is " + $Dependency.id + " - " + $Dependency.Version)
}
Run Code Online (Sandbox Code Playgroud)

然而!似乎没有任何方式可以说这$Dependency是一个数组NuGetDependency.因此,如果我希望函数接受多个依赖项,那么我就会陷入困境.

我错过了什么?

And*_*ker 7

到了那里,我想.

用这个替换第二个函数:

function Show-NugGetDependency{
    Param(
        [PSTypeName("NuGetDependency")][object[]]$Dependency
    )
    foreach($DependencyItem in $Dependency){
        Write-Host ("Dependency is " + $DependencyItem.id + " - " + $DependencyItem.Version)
    }
}
Run Code Online (Sandbox Code Playgroud)

并且将允许一个仅由NuGetDependency类型组成的数组.它不允许包含一些NuGetDependency类型和一些其他类型的数组.这正是我想要的.