如何在PowerShell中区分不同版本的Visual Studio实例(如2022与2017)
如何在PowerShell中区分不同版本的Visual Studio实例(如2022与2017)
我太懂你这种困扰了——用gps | ? {$_.mainwindowtitle.length -ne 0}查进程,结果只能看到窗口标题,完全分不清哪个是VS2017哪个是2022,想杀挂掉的进程都怕误关了正在干活的那个。别慌,给你两个实用的小方法,轻松把它们区分开:
方法一:通过进程的产品版本号快速识别
Visual Studio每个大版本都对应固定的产品版本段:
- VS2017的产品版本以15.x开头
- VS2022的产品版本以17.x开头
运行这条命令,就能同时看到进程ID、窗口标题和对应的产品版本:
Get-Process devenv | Select-Object Id, MainWindowTitle, @{Name='ProductVersion'; Expression={$_.MainModule.FileVersionInfo.ProductVersion}}
一眼就能锁定目标版本的进程,找到要终止的ID后,用Stop-Process -Id [进程ID]就能精准关闭啦。
方法二:通过安装路径直接区分
不同版本的VS安装路径自带年份标识,devenv.exe的位置一瞅就明白:
- VS2017通常在
C:\Program Files (x86)\Microsoft Visual Studio\2017\[你的版本,比如Community]\Common7\IDE\devenv.exe - VS2022则在
C:\Program Files\Microsoft Visual Studio\2022\[你的版本]\Common7\IDE\devenv.exe
用这条命令查看每个VS进程的启动路径:
Get-Process devenv | ForEach-Object { $cmdLine = (Get-CimInstance Win32_Process -Filter "ProcessId = $($_.Id)").CommandLine [PSCustomObject]@{ 进程ID = $_.Id 窗口标题 = $_.MainWindowTitle 安装路径 = $cmdLine -split 'devenv.exe' | Select-Object -First 1 } }
从路径里的2017/2022字样就能立刻分辨版本,是不是超直观?
要是你想直接筛选某个版本的进程,比如只看VS2022,还能这么写:
Get-Process devenv | Where-Object {$_.MainModule.FileVersionInfo.ProductVersion -like '17.*'}
分分钟定位到目标版本的所有实例~
备注:内容来源于stack exchange,提问作者Dazz
相关产品推荐
相关产品推荐

