Get-VisualStudio.ps1
#Requires -Module VSSetup using module VSSetup <# .Synopsis Obtain the latest installed version of Visual Studio. .Parameter ExcludePrerelease Do not allow selection of Preview versions of Visual Studio. (Passed through negated to Get-VSSetupInstance) .Parameter Product One or more products to select. Wildcards are supported. (Passed through to Select-VSSetupInstance) Run `Get-VSSetupInstance | Select-Object Product` to obtain a list of available valid values albeit with a version number. #> function Get-VisualStudio { [CmdLetBinding()] [OutputType([Microsoft.VisualStudio.Setup.Instance])] Param( [switch]$ExcludePrerelease = [switch]::new($false), [string[]]$Product = $null ) $VS = $null if ($null -eq $Product) { $VS = Get-VSSetupInstance -Prerelease:$(-not $ExcludePrerelease.IsPresent) | Select-VSSetupInstance -Latest | Sort-Object -Property InstallationVersion | Select-Object -Last 1 } else { $VS = Get-VSSetupInstance -Prerelease:$(-not $ExcludePrerelease.IsPresent) | Select-VSSetupInstance -Latest -Product:$Product | Sort-Object -Property InstallationVersion | Select-Object -Last 1 } if ($null -eq $VS) { Write-Warning "Could not find an installed version of Visual Studio" return $null; } # Found $VSDisplayString = "{0} [{1}] in ""{2}""" -f @($VS.DisplayName, $VS.InstallationName, $VS.InstallationPath) Write-Verbose "Found $VSDisplayString" return $VS } |