Вы объявляете параметр типа [hashtable[]]
(т. Е. Массив [hashtable]
):
# filename.ps1
param(
[hashtable[]]$Hashtables
)
Write-Host "Hashtables: @("
foreach($hashtable in $Hashtables){
Write-Host " @{"
foreach($entry in $hashtable.GetEnumerator()){
Write-Host " " $entry.Key = $entry.Value
}
Write-Host " }"
}
Write-Host ")"
При вводе образца вы получите что-то вроде:
PS C:\> .\filename.ps1 -Hashtables @{ a = 1; b = 2; c =3},@{ a = 4; b = 5; c =6}
Hashtables: @(
@{
c = 3
b = 2
a = 1
}
@{
c = 6
b = 5
a = 4
}
)
Обратите внимание, что выходные данные не обязательно сохранят порядок клавиш из ввода, потому что, ну, это не так, как работают sh таблицы:)
As Мэтью услужливо указывает , если важно поддерживать порядок ключей, go с упорядоченным словарем ([ordered]@{}
).
Для поддержки принятия любого вида без изменения порядка ключей объявите тип параметра как массив [System.Collections.IDictionary]
- интерфейс, который реализуют оба типа:
param(
[System.Collections.IDictionary[]]$Hashtables
)