从UninstallString提取GUID

问题描述 投票:1回答:1

我想概述Windows系统上安装的任何软件(或至少所有在Windows中进行自身注册的软件)。使用Powershell,我可以将数据提取到gridview中,然后将其过滤到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

为了进行进一步的处理,我想在从UninstallString中提取GUID(如果存在)的位置附加一列。示例:

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代码,但我无法继续。有人可以帮助我吗?谢谢

regex powershell guid uninstallstring
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.