Powershell 文件的哈希表不会对值生成PsIsContainer测试

Powershell 文件的哈希表不会对值生成PsIsContainer测试,powershell,Powershell,我哪儿也去不了;但是 $source = @{} gci | %{$source.Add($_.FullName,$_)} $source.getEnumerator() | %{($_.value).PsIsContainer} 做 我求助于使用 gci | % {$_.PsIsContainer} } 看起来有点笨重 为什么PsIsContainer对哈希表值不起作用?当我使用更直接的方法向表中添加项时,它确实对我起作用,不过: $source.getEnumerator() | %{

我哪儿也去不了;但是

$source = @{}
gci | %{$source.Add($_.FullName,$_)}
$source.getEnumerator() | %{($_.value).PsIsContainer}
做 我求助于使用

gci | % {$_.PsIsContainer}
}

看起来有点笨重


为什么PsIsContainer对哈希表值不起作用?

当我使用更直接的方法向表中添加项时,它确实对我起作用,不过:

$source.getEnumerator() | %{
if ((($_.Value).Attributes).toString() -eq "Directory")
   {
   ...
   }

这似乎是使用
Add
方法将内容放入哈希表的产物。

Wow,我惊讶地发现您完全正确。这是一个PSv2错误,两种方法都适用于PSv3。
PS> $source =@{}
PS> gci|%{$source[$_.FullName] = $_}
PS> $source.GetEnumerator() | %{$_.Value.PSIsContainer}
True
False
False
False
False
False
False
True
False
...