0

PowerShell で連携する 2 つの関数があります。

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
}

これにより、探している出力が得られますが、小さな欠陥が 1 つあります。ハッシュテーブルのキーを取得し、それをファイル (type ) として使用できるようにしたいDirectoryInfo

これは、一般的にpowershellのハッシュテーブルに関連する問題です(少なくとも私が知る限り、上記のコードに固有のものではありません(これの必要性に遭遇した方法であるため、含まれています)長すぎず、「より慣用的」にする方法についてのコメントをいただければ幸いです)。

ハッシュテーブルからファイルを取得するにはどうすればよいですか?

4

1 に答える 1

0

さて、$file.ToString()キーとして使用しているものについては、欠陥はコードよりも PowerShell にあるわけではありません。

インスタンスをハッシュテーブルのキーとして直接使用できるはずですDirectoryInfo(少なくとも、それは不変でオーバーライドされますobject.Equals)。

于 2012-07-16T21:29:24.787 に答える