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

时间:2017-04-07 14:16:26

标签: powershell

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

例如:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
C:\Program Files (x86)\Microsoft Visual Studio\2017\Pro\MSBuild\15.0\Bin

当然我可以用

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

C:\Program Files (x86)\Microsoft Visual Studio\2017\下有很多其他文件和文件夹。

不幸的是,这样的事情并不奏效:

Get-ChildItem -Path $partial -Filter '\MSBuild\15.0\Bin\MsBuild.exe' -Recurse

有没有办法让PowerShell更好地提示在哪里寻找MsBuild.exe?

2 个答案:

答案 0 :(得分:1)

Get-childitem支持通配符。由于只有字符串的特定部分发生变化(专业/社区),您可以用通配符替换它。

C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin

实际上你可以使用get-item作为完整的通配符路径。

Get-Item "C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin\MSBuild.exe"

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

答案 1 :(得分:0)

尝试类似这样的事情,并添加选择你的msbuild版本的地方

Resolve-Path HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\* | 
Get-ItemProperty | select MSBuildToolsPath