这个标题可能有点令人困惑,因为我不知道有更好的方式来表达它。
无论如何,我有这个代码Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
它显示了我的电脑上安装的所有程序。
我熟悉 .,但我对如何获取列表中程序的名称有点困惑。有什么帮助吗?
答案1
在命令中仅包含名称Select-Object
:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName | Format-Table -AutoSize
答案2
有两个注册表项包含已安装的程序。
获取已安装应用程序的注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
以及 64 位操作系统上 32 位应用程序的注册表项。HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
您可以创建一个 ForEach 循环来获取每个应用程序的点属性“DisplayName”,然后在对唯一名称进行排序之前将其添加到数组中 $array = $row = $Location = $Reg = $null
$Location = 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
'Registry::HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
ForEach ($Reg in $Location) {
$row = (Get-ItemProperty -Path $Reg).DisplayName
$array = $array + $row
}
$array | Sort-Object -Unique
可能存在已安装程序的其他注册表位置,并且仅供除所有用户或当前用户之外的特定用户使用。
答案3
您所能获取的只是注册表中存在的值。您可以使用以下命令列出可能的值
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | gm
通常情况下,您不会找到可执行文件的名称,而只会找到 DisplayName。您可以查看 DisplayIcon 来查看可执行文件,但这不是标准做法。
答案4
Powershell脚本:
OS_Architecture = $env:PROCESSOR_ARCHITECTURE
if($OS_Architecture -eq 'x86')
{
#write-host '32-bit'
$key = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
}
else
{
#write-host '64-bit'
$key = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
}
Get-ItemProperty $Key |
Select-Object DisplayName |
Format-Table –AutoSize
或者简单地使用命令行即可使用WMIC
wmic product get name