我正在加载一个哈希表:
$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**
这不是一个合法的哈希表吗?
答案 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
}