如果我创建一个带有pstypename的对象,则可以将参数强制为具有该类型的函数,如下所示:

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


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

然而!似乎没有任何办法说$DependencyNuGetDependency的数组。因此,如果我希望该函数接受多个依赖关系,那么我将陷入困境。

我想念什么?

最佳答案

我想到了那里。

以此替换第二个功能:

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

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

关于powershell - 接受[PSTypeName (“MyType”)数组的Powershell参数块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43414359/

10-11 16:54