我需要在Windows中列出所有已安装的应用程序。使用powershell
和以下命令,我可以找到已安装应用程序的名称和其他一些详细信息。
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ * | Select-Object DisplayName
我想要的是找出应用程序的commandline
,以便我可以使用commandline
运行应用程序。所以基本上我需要以下信息 -
这样做的可能解决方案是什么?
答案 0 :(得分:1)
不幸的是,有许多方法可以解释"安装的应用程序"在窗户上。
如果您要查找路径中的程序列表,可以使用
Get-Command -Type Application
此列表包括作为Windows的一部分安装的程序,以及之后添加的程序,如果安装程序调整了PATH环境变量以使程序在命令行中可见。名单很大。
根据您使用的PowerShell版本,Get-Package
命令可能会有所帮助。在PowerShell 5.1下,它包含来自多个源的信息,包括注册表中的卸载程序列表,Windows安装程序(MSI)数据库以及有关系统更新的信息。该列表也很大,但与Get-Command
列表不同。
答案 1 :(得分:0)
已安装的程序位于其他注册表项中:
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
以下脚本获取所有程序及其命令行:
$q="`""
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*" |
Where-Object {$_."(default)" -ne $null} |
Select-Object @{ expression={$_.PSChildName}; label='Program'} ,@{ expression={$q + $_."(default)" +$q}; label='CommandLine'}
输出结果示例:
Program CommandLine
------- -----------
7zFM.exe "C:\Program Files (x86)\7-Zip\7zFM.exe"
AcroRd32.exe "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"
excel.exe "C:\PROGRA~2\MICROS~1\Office12\EXCEL.EXE"