0

我有两个在 powershell 中协同工作的功能:

Function Get-PropertyValue($fileName, $property)
{
    $path = (Get-Item $fileName).FullName
    $shell = New-Object -COMObject Shell.Application
    $folder = Split-Path $path
    $file = Split-Path $path -Leaf
    $shellfolder = $shell.Namespace($folder)
    $shellfile = $shellfolder.ParseName($file)
    $shellfolder.GetDetailsOf($shellfile,$property)
}
Function Create-List($files, $property)
{
    $list = @{}
    foreach ($file in $files)
    {
        $list.Add($file.toString(),(Get-PropertyValue $file $property).toString())
    }
    $list.GetEnumerator() | Sort-Object Value
}

这得到了我正在寻找的带有一个小缺陷的输出。我希望能够获取哈希表的键,并将其用作文件(类型DirectoryInfo)。

这是一个与powershell中的哈希表相关的问题(至少据我所知,而不是特定于我上面的代码(它被包括在内,因为这是我遇到这个需求的方式,它不会很长,并且将不胜感激有关如何使其“更惯用”的评论)。

如何从哈希表中取出文件?

4

1 回答 1

0

好吧,对于您$file.ToString()用作密钥的人,因此缺陷不在于 PowerShell 而在于您的代码。

您应该能够将DirectoryInfo实例直接用作哈希表中的键(至少它是不可变的并且可以覆盖object.Equals)。

于 2012-07-16T21:29:24.787 回答