Как составить список имен исполняемых файлов в PowerShell

#windows #powershell

#Windows #powershell

Вопрос:

Мне нужно перечислить все установленные приложения в Windows. Используя powershell и следующую команду, я могу узнать имя и некоторые другие сведения об установленных приложениях.

 Get-ItemProperty HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall * | Select-Object DisplayName
  

Я хочу также узнать commandline о приложениях, чтобы я мог запустить приложение, используя это commandline . Итак, в основном мне нужна следующая информация-

  1. Имя приложения
  2. Командная строка приложения
  3. Запустите приложение с помощью командной строки

Каким может быть возможное решение для этого?

Ответ №1:

К сожалению, существует большое количество способов интерпретировать «установленные приложения» в Windows.

Если вы ищете список программ на вашем пути, вы можете использовать

 Get-Command -Type Application
  

Этот список включает программы, установленные как часть Windows, а также те, которые были добавлены после этого, если установщик изменил переменную среды PATH, чтобы сделать программы видимыми в командной строке. Список будет большим.

В зависимости от используемой версии PowerShell эта Get-Package команда может оказаться полезной. В PowerShell 5.1 он включает информацию из нескольких источников, включая список программ удаления в реестре, базу данных установщика Windows (MSI) и информацию об обновлениях системы. Этот список тоже будет большим, но будет отличаться от Get-Command списка.

Ответ №2:

Установленная программа находится в другом разделе реестра:

  HKLM:SOFTWAREMicrosoftWindowsCurrentVersionApp Paths
  

Следующий скрипт получает все программы и их командную строку:

  $q="`""
 Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionApp 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-Zip7zFM.exe"                                      
    AcroRd32.exe        "C:Program Files (x86)AdobeReader 9.0ReaderAcroRd32.exe"   
    excel.exe           "C:PROGRA~2MICROS~1Office12EXCEL.EXE"