使用PowerShell, 像[Get-ChildItem]
我想通过'.Name'递归搜索所有exe,显示最高'.FileVersion'和'.FullName'
Get-ChildItem -Recurse \\server\loads\*\Product\*.exe | sort Name,FileVersion | Select-Object -Property FileVersion, Name, FullName | Out-GridView
第一个*是Alpha,Beta,Release和第二个*是子产品[可能的2个深度]和可执行文件
这个LOADS共享如何变得难以驾驭,以及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个文件夹中都有一个计数,而在低深度可能会有更多,因为它存储不正确
无论发布周期如何,我都需要获得最新版本
答案 0 :(得分:0)
据我所知,您想要搜索路径中的所有exe文件,然后针对每个exe名称,例如PBX.exe,您只想显示最高版本的路径。
这是我在Windows 10上设计的解决方案
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}
祝你好运!
答案 1 :(得分:0)
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