AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1628217
Accepted
Bottish
Bottish
Asked: 2021-02-23 12:20:13 +0800 CST2021-02-23 12:20:13 +0800 CST 2021-02-23 12:20:13 +0800 CST

如何从命令中获取名称列表?

  • 772

这个标题可能有点令人困惑,因为我不知道有什么更好的说法。

无论如何,我有这个代码Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

这显示了我 PC 上安装的所有程序。

我对 . 很熟悉,但我对如何仅获取列表中程序的名称有点困惑。有什么帮助吗?

powershell
  • 5 5 个回答
  • 627 Views

5 个回答

  • Voted
  1. Best Answer
    harrymc
    2021-02-23T13:06:53+08:002021-02-23T13:06:53+08:00

    仅在Select-Object命令中包含名称:

    Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName | Format-Table -AutoSize
    
    • 2
  2. Antony
    2021-02-24T03:19:42+08:002021-02-24T03:19:42+08:00

    有两个注册表项,其中包含已安装的程序。

    用于安装应用程序的注册表项: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
    

    可能存在已安装程序的其他注册表位置,并且仅对所有用户或当前用户以外的特定用户可用。

    • 2
  3. matandra
    2021-02-23T13:05:16+08:002021-02-23T13:05:16+08:00

    您所能获得的只是注册表中存在的值。您可以列出可能的值

    Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | gm
    

    通常,您不会找到可执行文件的名称,而只会找到 DisplayName。您可以查看 DisplayIcon 以查看可执行文件,但这不是标准的。

    • 0
  4. Ξένη Γήινος
    2021-02-24T06:59:07+08:002021-02-24T06:59:07+08:00

    其他答案是正确的,但我想加两分钱。

    我会使用类似于 Antony 评论中的内容:

    (Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*").DisplayName
    

    但是我会使用HKLM:PSDrive,我认为这是最简单的方法:

    (Get-ItemProperty -Path "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*").DisplayName
    

    然而这只是图片的一半,Wow6432Node 的存在意味着您使用的是 64 位 Windows,因为它只会存在于 64 位 Windows 中。

    Wow64 表示 Windows 64 位上的 Windows(32 位),它是一个兼容层,使 x86 程序能够在 x86-64 Windows 上运行,x86 程序安装在 C:\Program Files (x86)\ 并且它们的库是在 C:\Windows\SysWOW64 中,注册表项存储在 HKLM\SOFTWARE\Wow6432Node 中,而 64 位程序安装在 C:\Program Files\ 并使用 C:\Windows\System32 中的 dll,注册表项是 HKLM 的子项\Software,因此要获取 x86 和 x64 软件的程序名称,请使用以下两个命令:

    (Get-ItemProperty -Path "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*").DisplayName
    (Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall*").DisplayName 
    
    • 0
  5. Hackoo
    2021-02-24T08:41:15+08:002021-02-24T08:41:15+08:00

    请参阅获取与添加/删除程序列表匹配的已安装应用程序列表


    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
    
    • 0

相关问题

  • 如何将变量字符串放入powershell中的数组?

  • Powershell 和正则表达式:Notepad++“保存时备份”文件列表。编辑名称,按上次写入时间排序

  • 将前景颜色添加到 Powershell 配置文件?

  • 禁用后无法启用 Microsoft Print to PDF

  • 我可以让这个 PowerShell 脚本接受逗号吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve