AJe*_*gs1 5 powershell hashtable list
对于我正在做的项目,我需要检查并查看文件中的一行中是否存在一对字符串。
我试图使用像这样的哈希表:
$makes = 'Ferrari', 'Ford', 'VW', 'Peugeot', 'Subaru'
$models = 'Enzo', 'Focus', 'Golf', '206', 'Impreza'
$table = @{}
for ($i = 0; $i -lt $makes.Length; $i++)
{
$table.Add($makes[$i], $models[$i])
}
Run Code Online (Sandbox Code Playgroud)
在我尝试插入重复的品牌之前,此方法效果很好。我很快发现哈希表不接受重复项。
那么有没有办法在PowerShell中创建字符串的双重列表?在C#中非常容易做到,但是我发现在PowerShell中无法实现。
对您的代码和逻辑进行最少的更改:
$makes = 'Ferrari', 'Ford', 'VW', 'Peugeot', 'Subaru'
$models = 'Enzo', 'Focus', 'Golf', '206', 'Impreza'
for ($i = 0; $i -lt $makes.Length; $i++){
[array]$cars += New-Object psobject -Property @{
make = $makes[$i]
model = $models[$i]
}
}
Run Code Online (Sandbox Code Playgroud)
这使用 custom psobject,转换为数组,以便+=允许。
您可以使用 aPSCustomObject并直接填充列表:
$cars = @(
[pscustomobject]@{make = "Ferrari"; model="Enzo"}
[pscustomobject]@{make = "Ford"; model="Focus"}
[pscustomobject]@{make = "Peugeot"; model="206"}
[pscustomobject]@{make = "Subaru"; model="Imprezza"}
)
Run Code Online (Sandbox Code Playgroud)