如果我用 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)
}
然而!似乎没有任何方式可以说
$Dependency
是 NuGetDependency
的数组.因此,如果我希望该函数接受多个依赖项,那么我就被卡住了。我错过了什么?
最佳答案
到了那里,我想。
用这个工程替换第二个函数:
function Show-NugGetDependency{
Param(
[PSTypeName("NuGetDependency")][object[]]$Dependency
)
foreach($DependencyItem in $Dependency){
Write-Host ("Dependency is " + $DependencyItem.id + " - " + $DependencyItem.Version)
}
}
并且将允许只包含 NuGetDependency 类型的数组。它不允许包含一些 NuGetDependency 类型和一些其他类型的数组。这正是我想要的。
关于Powershell 参数 block 接受 [PSTypeName ("MyType")] 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414359/