如何在Powershell中列出可执行文件名

时间:2016-10-17 17:51:00

标签: windows powershell

我需要在Windows中列出所有已安装的应用程序。使用powershell和以下命令,我可以找到已安装应用程序的名称和其他一些详细信息。

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ * | Select-Object DisplayName

我想要的是找出应用程序的commandline,以便我可以使用commandline运行应用程序。所以基本上我需要以下信息 -

  1. 申请名称
  2. 应用程序的命令行
  3. 使用命令行
  4. 启动应用程序

    这样做的可能解决方案是什么?

2 个答案:

答案 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"