【发布时间】:2018-05-25 05:42:29
【问题描述】:
我是 Powershell 新手,这种行为让我很困惑。
假设我创建了一个包含以下信息的哈希表:
$hash= @{
California = 'Sacramento';
Washington = 'Olympia';
Oregon = 'Salem';
Alaska = 'Juneau';
}
$hash
现在我想使用 where -match 语句搜索特定键:
$result = @($layers.getEnumerator() | ? {$_.key -match 'Cal'})
$result
这将返回加利福尼亚作为键和萨克拉门托作为值。一切正常。
现在,假设我想使用 CSV 文件将它们导入哈希表,而不是输入表的键和值:
California,Sacramento
Washington,Olympia
Oregon,Salem
Alaska,Junea
这是我为导入 CSV 而创建的代码,效果很好:
Import-Csv C:\Users\hgordon\Desktop\Maps_to_search\junk.csv -Header "Key","Value"
$layers = @{}
Foreach ($key in $keys) {
$layers[$key] = $csv
}
我的问题是,当我运行上面的搜索语句时,它什么也没返回。
为什么不能在导入的哈希表上进行搜索?我需要用 import 语句修改什么吗?导入的哈希表与手动输入的哈希表有什么区别?
谢谢!
编辑:我已将导入脚本编辑如下,以使其更清晰:
$t = Import-Csv -Path C:\Users\hgordon\Desktop\Maps_to_search\junk.csv -Header "Key","Value"
$HashTable = @{}
foreach($r in $t)
{
#Write-Host $r.column1 $r.column2
$HashTable[$r.Key] = $r.Value
}
$HashTable
不过,我的搜索脚本仍然没有结果。
【问题讨论】:
-
$keys和$csv是什么? -
Import-Csv返回一个PSCustomObject类型,它不是哈希表。 -
用于从文件创建图层的代码什么也不做。使用
Import-Csv的输出就足够了。 -
不是 __ $t | ?{$_.Key -like 'Cal'}__ 有效吗?
-
@EBGreen ` 是代码分隔符。
标签: powershell