如何将一些数据从参数传递到哈希表数组?
filnemane.ps1 -param @{ a = 1, b = 2, c =3}, @{ a = 4, b = 5, c =6}
Run Code Online (Sandbox Code Playgroud)
到这个输出:
$param = @(
@{
a=1,
b=2,
c=3
},
@{
a=4,
b=5,
c=6
}
)
Run Code Online (Sandbox Code Playgroud)
谢谢。
您将参数声明为类型[hashtable[]](即[hashtable]'s的数组):
# 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 ")"
Run Code Online (Sandbox Code Playgroud)
有了你的样本输入,你会得到类似的东西:
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
}
)
Run Code Online (Sandbox Code Playgroud)
请注意,输出不一定会保留输入中的键顺序,因为,这不是哈希表的工作方式:)
正如Matthew 有帮助地指出的那样,如果维护键顺序很重要,请改用有序字典 ( [ordered]@{})。
为了支持在不弄乱键顺序的情况下接受任何一种,将参数类型声明为一个数组[System.Collections.IDictionary]- 两个类型都实现的接口:
param(
[System.Collections.IDictionary[]]$Hashtables
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |