public/Find-SqlPackageLocations.ps1
function Find-SqlPackageLocations { <# .SYNOPSIS Lists all locations of SQLPackage.exe files on the machine #> try { # Get SQL Server locations $SqlPackageExes = @(); $SqlPackageExes += Get-Childitem -Path "${env:ProgramFiles}\Microsoft SQL Server\*\DAC\bin" -Recurse -Include "SqlPackage.exe" -ErrorAction SilentlyContinue; $SqlPackageExes += Get-Childitem -Path "${env:ProgramFiles(x86)}\Microsoft SQL Server\*\DAC\bin" -Recurse -Include "SqlPackage.exe" -ErrorAction SilentlyContinue; # Get Visual Studio 2017+ locations $VsPaths = Resolve-Path "${env:ProgramFiles(x86)}\Microsoft Visual Studio\*\*\Common7\IDE\Extensions\Microsoft\SQLDB\DAC"; foreach ($VsPath in $VsPaths) { $SqlPackageExes += Get-Childitem -Path $VsPath -Recurse -Include "SqlPackage.exe" -ErrorAction SilentlyContinue; } # Get Visual Studio 2015 and before locations $VsPaths = Resolve-Path "${env:ProgramFiles(x86)}\Microsoft Visual Studio*\Common7\IDE\Extensions\Microsoft\SQLDB\DAC"; foreach ($VsPath in $VsPaths) { $SqlPackageExes += Get-Childitem -Path $VsPath -Recurse -Include "SqlPackage.exe" -ErrorAction SilentlyContinue; } # list out the locations found foreach ($SqlPackageExe in $SqlPackageExes) { [string]$ProductVersion = $SqlPackageExe.VersionInfo.ProductVersion; Write-Output "$ProductVersion $SqlPackageExe"; } } catch { Write-Error "Find-SqlPackageLocations failed with error $Error"; } } |