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

时间:2015-02-05 11:40:04

标签: windows powershell

我需要做的是:

在“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

1 个答案:

答案 0 :(得分:1)

你快到了,你只需要将Get-ChildItem的输出存储到一个变量中。这将是一个FileInfo个对象的数组,因此您需要迭代它们以获取所需的信息,这将是fullname属性:

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

%Foreach-Object的简写,$_是管道中的变量,它将是FileInfo对象。然后,您使用FullName访问$_.FullName媒体资源。这将包含文件的完整路径。

<强>更新

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

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