如何为PowerShell的Get-ItemProperty命令添加特定关键词筛选?
解决方案
1. 单个关键词筛选
匹配以'Teamv'开头的软件
用-like配合前缀通配符,精准定位首词匹配的软件:
Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like 'Teamv*' } | Select-Object DisplayName, DisplayVersion, InstallDate
匹配名称包含'Teamv'的软件
调整通配符位置,匹配任意位置包含关键词的软件:
Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like '*Teamv*' } | Select-Object DisplayName, DisplayVersion, InstallDate
2. 批量多关键词筛选
要同时检测Teamviewer、Kaspersky、Logmein这类多个软件,用正则表达式的-match操作符,关键词间用|分隔表示“或”逻辑:
$targetApps = 'Teamviewer|Kaspersky|Logmein' Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -match $targetApps } | Select-Object DisplayName, DisplayVersion, InstallDate
进阶:同时覆盖32/64位软件
原命令只读取了32位软件的注册表路径,加上64位路径可以获取完整列表,同时过滤无效条目和重复项:
$uninstallPaths = @( 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' ) $targetApps = 'Teamviewer|Kaspersky|Logmein' Get-ItemProperty $uninstallPaths | Where-Object { $_.DisplayName -and $_.DisplayName -match $targetApps } | Select-Object DisplayName, DisplayVersion, InstallDate | Sort-Object DisplayName -Unique
内容的提问来源于stack exchange,提问作者Kunta Kinke
相关产品推荐
相关产品推荐

