$vsInstallPath=& "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -version 16.0  -property installationpath
Write-Output "vswhere.exe installPath: $vsInstallPath"
$vsInstallPath =  if ("$vsInstallPath" -eq "" ) { "C:\BuildTools" } else { "$vsInstallPath" }
Write-Output "Final installPath: $vsInstallPath"
Import-Module (Join-Path $vsInstallPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
# https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
# VS2015 14.0 use -vcvars_ver=14.0
# VS2017 14.1 to 14.16 use -vcvars_ver=14.16
# VS2019 14.20 to 14.29 use -vcvars_ver=14.29
# VS2022 14.30 to 14.38 (not finished yet) use -vcvars_ver=14 to choose the newest version

$vcvars_ver_arg="$args"
if ($null -eq $vcvars_ver_arg[0]) {
  $vcvars_ver_arg="-vcvars_ver=14"
}

Enter-VsDevShell -VsInstallPath $vsInstallPath -SkipAutomaticLocation -DevCmdArguments "$vcvars_ver_arg -arch=x64 -no_logo -host_arch=amd64"
