Powershell 如何将值分组和排序到字典中?

Powershell 如何将值分组和排序到字典中?,powershell,Powershell,我正在尝试在一个目录中查找多个文件的最新版本。目前,我正在为每个文件调用GCI,但速度非常慢,因此我希望通过唯一的文件名缓存所有结果,然后在缓存中执行查找 我目前正在做以下工作: Gci $filePath -Recurse | ?{ -Not $_.PSIsContainer } | Group-Object Name 我正在尝试将其转换为与C代码等效的powershell: 如何在Powershell中实现这一点?创建文件哈希表的方法是创建一个空哈希表,然后用GCI的结果填充它: $fil

我正在尝试在一个目录中查找多个文件的最新版本。目前,我正在为每个文件调用
GCI
,但速度非常慢,因此我希望通过唯一的文件名缓存所有结果,然后在缓存中执行查找

我目前正在做以下工作:

Gci $filePath -Recurse | ?{ -Not $_.PSIsContainer } | Group-Object Name
我正在尝试将其转换为与C代码等效的powershell:


如何在Powershell中实现这一点?

创建文件哈希表的方法是创建一个空哈希表,然后用GCI的结果填充它:

$files = ${}
GCI $filepath -Recurse -File | Group Name | ForEach{ $files.Add($_.Name, ($_.Group | Sort LastWriteTime)) }
或者,如果您只需要最新的文件,请在排序LastWriteTime后添加
|选择-Last 1
。如果您只关心路径,您甚至可以执行
| Select-Last 1-ExpandProperty FullName

$Files = ${}
GCI $filepath -recurse | Group Name | ForEach{ $files.Add($_.Name, ($_.Group | Sort LastWriteTime | Select -Last 1 -ExpandProperty FullName)) }

事实证明,我在等待答案的时候想到了同样的东西,除了不同的语法。谢谢<代码>Gci$path-包含$extensions-递归|?{Not$|.psicContainer}|组对象名称|%{$cache[$|.Name]=($|.Group |排序对象LastWriteTime |选择对象-Last 1).全名
$Files = ${}
GCI $filepath -recurse | Group Name | ForEach{ $files.Add($_.Name, ($_.Group | Sort LastWriteTime | Select -Last 1 -ExpandProperty FullName)) }