使用powershell,[Get ChildItem]我想按名称递归搜索所有exe,显示最高的文件版本和全名

使用powershell,[Get ChildItem]我想按名称递归搜索所有exe,显示最高的文件版本和全名,powershell,recursion,versioning,Powershell,Recursion,Versioning,使用powershell, 例如[获取子项] 我想按“.Name”显示最高的“.FileVersion”和“.FullName”递归搜索所有exe Get-ChildItem -Recurse \\server\loads\*\Product\*.exe | sort Name,FileVersion | Select-Object -Property FileVersion, Name, FullName | Out-GridView 第一个*是Alpha、Beta、Release,第二个

使用powershell, 例如[获取子项]

我想按“.Name”显示最高的“.FileVersion”和“.FullName”递归搜索所有exe

Get-ChildItem -Recurse \\server\loads\*\Product\*.exe | sort Name,FileVersion | Select-Object -Property  FileVersion, Name, FullName | Out-GridView
第一个*是Alpha、Beta、Release,第二个*是子产品[可能的2个深度]和可执行文件

无论怎样,这种负载共享都变得难以控制,而且可能会导致EXE的备份和递归存储

我正在寻找如下输出:

FileVersion Name                         FullName
----------- ----                         --------
1.0.0.3     PBX.exe         \\server\loads\Beta\product\Platform\PBXInstall\PBXInterface.exe
2.0.0.0     Door.exe         \\server\loads\Release\product\Platform\DoorInstall\DoorInterface.exe
1.0.1.3     CA.exe         \\server\loads\Alpha\product\Platform\CAInstall\CAInterface.exe
1.0.9.3     POS.exe         \\server\loads\Release\product\Platform\POSInstall\POSInterface.exe
每个文件夹在所有3个文件夹中都有一个计数,由于存储不正确,在较低的深度中可能有更多


无论发布周期如何,我都需要获取最新版本。我知道您希望搜索路径中的所有exe文件,然后针对每个exe名称(例如PBX.exe),只显示最高版本的路径

这是我在Windows10上设计的解决方案

GCI -recurse *.exe | Select -first 20| select name,fullname,@{l='FileVersion';e={[SYSTEM.version]($_.versioninfo.fileversion)}} | group Name | %{$_.Group | sort -descending fileVersion | select -first 1}

祝你好运

我知道您希望搜索路径中的所有exe文件,然后针对每个exe名称(例如PBX.exe),您希望仅显示最高版本的路径

Get-ChildItem -Recurse -Path '\\server\loads\*\Product\*.exe' |
  Select-Object -Property @(
      'Name','FullName',
      @{ N='FileVersion';
         E={[Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName) |
              ForEach-Object {
                  [Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart) -join '.' }
           }
       }
  ) |
  Sort-Object -Property 'Name','FileVersion' |
  Out-GridView
这是我在Windows10上设计的解决方案

GCI -recurse *.exe | Select -first 20| select name,fullname,@{l='FileVersion';e={[SYSTEM.version]($_.versioninfo.fileversion)}} | group Name | %{$_.Group | sort -descending fileVersion | select -first 1}

祝你好运

FileVersion
不是默认成员。它是在哪里定义的?[System.Diagnostics.FileVersionInfo]::GetVersionInfo(“somefilepath”).FileVersionUpdate-TypeData-TypeName-System.IO.FileInfo-MemberName-FileVersion-MemberType ScriptProperty-Value{[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName){[Version](($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\{[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName){[Version]($\.FileMajorPart,$\.FileMinorPart,$\.FileBuildPart,$\.FilePrivatePart)-join.}}这几乎是我使用的原始代码,没有做任何我没有做的事情这几乎是我使用的原始代码,没有做任何我没有做过的事情
Get-ChildItem -Recurse -Path '\\server\loads\*\Product\*.exe' |
  Select-Object -Property @(
      'Name','FullName',
      @{ N='FileVersion';
         E={[Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName) |
              ForEach-Object {
                  [Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart) -join '.' }
           }
       }
  ) |
  Sort-Object -Property 'Name','FileVersion' |
  Out-GridView