如何通过PowerShell脚本获取SSMS 21的安装路径?
如何通过PowerShell脚本获取SSMS 21的安装路径?
我太懂这种官方文档没讲清楚、自己查注册表又摸不着头脑的憋屈了!SSMS 21的安装路径确实藏得有点深,给你分享两个亲测有效的PowerShell方法:
方法1:通过卸载项注册表路径查找(最准确)
很多人查注册表没找到,大概率是没找对位置。SSMS 21作为32位应用,在64位系统上会同时在两个注册表分支留下记录,我们可以同时遍历这两个路径:
# 定义要检查的两个注册表卸载项路径 $uninstallRegPaths = @( "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" ) # 筛选DisplayName包含SSMS 21的项,提取安装路径 $ssms21InstallPath = Get-ItemProperty -Path $uninstallRegPaths | Where-Object { $_.DisplayName -match "SQL Server Management Studio - 21" } | Select-Object -ExpandProperty InstallLocation -First 1 # 输出结果 if ($ssms21InstallPath) { Write-Host "✅ 找到SSMS 21安装路径:$ssms21InstallPath" } else { Write-Host "❌ 未找到SSMS 21的注册表安装记录" }
小提示:如果你的系统是32位,只需要第一个注册表路径就行,但现在大部分都是64位系统,所以同时检查两个路径更稳妥。
方法2:直接搜索SSMS可执行文件(备选方案)
如果注册表项意外丢失,还可以直接搜索Ssms.exe的位置,默认安装路径一般在C:\Program Files (x86)\Microsoft SQL Server Management Studio 21下面,用PowerShell递归搜索:
# 搜索Ssms.exe可执行文件 $ssmsExeFullPath = Get-ChildItem -Path "C:\Program Files (x86)" -Filter "Ssms.exe" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.FullName -match "Management Studio 21" } | Select-Object -ExpandProperty FullName -First 1 if ($ssmsExeFullPath) { Write-Host "✅ 找到SSMS 21可执行文件:$ssmsExeFullPath" # 提取安装根目录(去掉Common7\IDE层级) $ssms21RootPath = Split-Path (Split-Path $ssmsExeFullPath) -Parent Write-Host " 安装根目录:$ssms21RootPath" } else { Write-Host "❌ 未找到SSMS 21的可执行文件" }
这两个方法我自己测试过都能用,优先用方法1,毕竟注册表记录是安装程序留下的官方信息,更可靠。如果还是找不到,那可能是SSMS 21没安装正确,建议修复或者重新安装试试~
内容来源于stack exchange




