有效地找到一个我知道子路径但不知道根文件夹的文件



我正在Powershell中制作一个构建文件。此构建文件需要引用 Visual Studio 2017 版本的 MSBuild.exe。不幸的是,该文件的路径取决于您安装的Visual Studio版本。

例如:

C:Program Files (x86)Microsoft Visual Studio2017CommunityMSBuild15.0Bin
C:Program Files (x86)Microsoft Visual Studio2017ProMSBuild15.0Bin

当然我可以使用

$partial = ${env:ProgramFiles(x86)} + 'Microsoft Visual Studio2017'
Get-ChildItem -Path $partial -Filter 'MsBuild.exe' -Recurse

但是C:Program Files (x86)Microsoft Visual Studio2017下还有很多其他文件和文件夹。

不幸的是,这样的东西不起作用:

Get-ChildItem -Path $partial -Filter 'MSBuild15.0BinMsBuild.exe' -Recurse

有没有办法给我PowerShell一个更好的提示,在哪里寻找MsBuild.exe?

Get-childitem 支持通配符。由于只有字符串的特定部分发生变化(pro/社区(,您可以将其替换为通配符。

C:Program Files (x86)Microsoft Visual Studio2017*MSBuild15.0Bin

实际上,您只需使用get-item作为完整的通配符路径。

Get-Item "C:Program Files (x86)Microsoft Visual Studio2017*MSBuild15.0BinMSBuild.exe"

这将返回匹配的任何和所有文件,假设每个用户只有一个已安装的 Visual Studio 版本,您将获得一个文件。

尝试类似的东西,并添加选择msbuild版本的位置

Resolve-Path HKLM:SOFTWAREMicrosoftMSBuildToolsVersions* | 
Get-ItemProperty | select MSBuildToolsPath 

相关内容

最新更新