查找哈希表中的键(ContainsKey)不起作用

时间:2017-03-16 18:17:12

标签: powershell

我正在加载一个哈希表:

$htA = dir | Where-Object {$_.Name -match "\.output\.[A-Z]-[0-9]\.csv"} | select name,length

当我尝试像这样搜索Key列时:

$htA.ContainsKey($h.name)

我得到了这个超级整齐的错误:

方法调用失败,因为 [Selected.System.IO.FileInfo]不包含名为“ContainsKey”的方法。

At line:3 char:9
 IF ($htA.ContainsKey($h.name) -eq $false) {

     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (ContainsKey:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound**

这不是一个合法的哈希表吗?

1 个答案:

答案 0 :(得分:2)

$ htA被创建为类型转换为它,在本例中为System.IO.FileInfo。试试这个:

$htA = @{} # Initialises as an empty hash table
foreach ($file in (dir | Where-Object {$_.Name -match "\.output\.[A-Z]-[0-9]\.csv"} | select name,length))
{
$htA.Add($file.name, $file.length) # Populate hash table
}