在powershell中丢失类型信息

时间:2012-07-16 20:14:51

标签: powershell powershell-v2.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中的哈希表有关的问题(至少我可以告诉,而不是特定于我上面的代码(包含它因为它是我遇到的需要)这个,它不会很长,关于如何使它“更惯用”的评论将不胜感激。)

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

1 个答案:

答案 0 :(得分:0)

好吧,对于一个你使用$file.ToString()作为密钥的人,所以PowerShell的缺陷并不在于你的代码。

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