2017-04-14 14 views
2

如果我創建與pstypename對象然後我可以強制執行參數的函數作爲該類型的,像這樣:Powershell的參數塊接受[PSTypeName(「的MyType」)]的陣列

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的數組。所以如果我想讓這個函數接受多個依賴關係,那麼我就會陷入困境。

我錯過了什麼?

回答

4

到達那裏,我想。

更換第二功能與這個工程:

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

而且將允許僅由NuGetDependency類型的數組。它不會允許由一些NuGetDependency類型和一些其他類型組成的數組。這正是我想要的。

1

眼下ID和版本值合併,因爲你在字符串中插入一個數組,例如:

$dep = New-NugetDependency -Id ID1 -Version 1.0 
$dep2 = New-NugetDependency -Id ID2 -Version 1.2 
Show-NugGetDependency -Dependency $dep,$dep2 
Dependency is ID1 ID2 - 1.0 1.2 

您需要添加一個foreach循環來分隔依賴的對象。試試:

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

$dep = New-NugetDependency -Id ID1 -Version 1.0 
$dep2 = New-NugetDependency -Id ID2 -Version 1.2 
Show-NugGetDependency -Dependency $dep,$dep2 
Dependency is ID1 - 1.0 
Dependency is ID2 - 1.2 
相關問題