在永远不相同的文件夹中搜索文件

Search for file in a folder that is never the same

我要做的是:

在 "c:\Program Files\" 中,我必须搜索一个 .exe 文件,然后收集该文件的版本。

目前,我坚持使用 .exe 搜索。我这样做是为了知道,但没有显示输出:

Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse  | % {Write-Host $_.FullName}

我知道如何收集版本:

[System.Diagnostics.FileVersionInfo]::GetVersionInfo("PATH OF THE FILE\ccc.exe").FileVersion

也许搜索的结果应该放在一个变量中,然后可以在 getVersionInfo 部分中检索内容,但我完全卡住了。

关于如何实现此目标的任何想法/想法?

非常感谢您的帮助:D

大功告成,只需将 Get-ChildItem 的输出存储到变量中即可。这将是一个 FileInfo 对象数组,因此您需要遍历它们以提取您想要的信息,这将是 fullname 属性:

$f = Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion

对于Foreach-Object%是shorthand,$_是管道中的变量,它将是FileInfo对象。然后,您可以使用 $_.FullName 访问 FullName 属性。这将包含文件的完整路径。

更新:

似乎 powershell v1.0 中的 -filter 功能与更高版本不同,似乎只作用于路径,而不作用于文件名,因此您需要改为执行以下操作:

$f = gci "C:\Pro*" -recurse | ? { $_.name -eq 'SymCorpUI.exe' }
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion