Я хочу получить обзор любого программного обеспечения, установленного в системе Windows (или, по крайней мере, всего программного обеспечения, которое регистрируется в Windows). С Powershell я могу извлечь данные в сетку и после фильтрации в CSV-файл. Для этого я использую следующий код:
### Extract x64 registered programs. Excluding KB updates
$data = dir HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
where {$_.name -notmatch '(\.)?KB\d+'} -pv p |
Get-ItemProperty |
Where {$_.displayname -notmatch "KB\d{5,}"} |
Select @{Name="Path";Expression={$p.name}},Displayname,DisplayVersion,InstallDate,UninstallString
;
### Extract and append to $data the x86 registered programs. Excluding KB updates
$data += dir HKLM:\SOFTWARE\Wow6432Node\Micsosoft\Windows\CurrentVersion\Uninstall |
where {$_.name -notmatch '(\.)?KB\d+'} -pv p |
Get-ItemProperty |
Where {$_.displayname -notmatch "KB\d{5,}"} |
Select @{Name="Path";Expression={$p.name}},DisplayName,DisplayVersion,InstallDate,UninstallString
;
### Acces $data and output to a gridview and further to csv.
$data |
select-Object DisplayName,DisplayVersion,InstallDate,UninstallString |
sort-object -Property DisplayName |
out-gridview -PassTHru |
export-csv -delimiter "," -Path C:\temp\software.csv
Пример вывода выглядит следующим образом:
DisplayName DisplayVersion InstallDate UninstallString
7-Zip 9.20 (x64 edition) 9.20.00.0 20190827 MsiExec.exe /I{23170F69-40C1-2702-0920-000001000000}
QGIS 3.4.13 'Madeira' 03.04.2013 C:\Program Files\QGIS 3.4\uninstall.exe
Microsoft Office Access ... 14.0.7015. 20190827 MsiExec.exe /X{90140000-0015-0407-0000-0000000FF1CE}
Realtek Card Reader 10.0.10125.... 20190827 "C:\Program Files (x86)\InstallShield Installation Information\{5BC2B5AB-80DE-4E83-B8CF-426902051D0A}\setup.exe" -runfromtemp -removeonly
Для дальнейшей обработки я хочу добавить столбец, где GUID - если это существующий - извлекается из UninstallString. Пример:
DisplayName DisplayVersion InstallDate GUID UninstallString
7-Zip 9.20 (x64 edition) 9.20.00.0 20190827 23170F69-40C1-2702-0920-000001000000 MsiExec.exe /I{23170F69-40C1-2702-0920-000001000000}
QGIS 3.4.13 'Madeira' 03.04.2013 C:\Program Files\QGIS 3.4\uninstall.exe
Microsoft Office Access ... 14.0.7015. 20190827 90140000-0015-0407-0000-0000000FF1CE MsiExec.exe /X{90140000-0015-0407-0000-0000000FF1CE}
Realtek Card Reader 10.0.10125.... 20190827 5BC2B5AB-80DE-4E83-B8CF-426902051D0A "C:\Program Files (x86)\InstallShield Installation Information\{5BC2B5AB-80DE-4E83-B8CF-426902051D0A}\setup.exe" -runfromtemp -removeonly
Я знаю, что мне нужно как-то сделать это с кодом RegEx, но я не могу продолжить. Может кто-нибудь может мне помочь? Спасибо