脚本获取windows下的安装软件下载

老刘

Windows下获取已安装软件列表的几种高效脚本方法

在日常电脑维护、系统迁移或软件管理中,我们经常需要获取Windows系统上已安装软件的完整列表。本文将介绍几种通过脚本快速获取Windows安装软件信息的方法,适合不同技术水平的用户。

为什么要获取已安装软件列表

获取已安装软件列表在以下场景非常有用:

  • 重装系统前备份软件清单
  • 批量管理多台电脑的软件安装情况
  • 排查软件冲突问题时记录环境
  • 进行软件资产盘点和管理

方法一:使用PowerShell脚本(推荐)

PowerShell是Windows自带的强大工具,可以轻松获取软件信息。

脚本获取windows下的安装软件下载

基础版PowerShell命令

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize

这条命令会列出64位系统上安装的大多数软件(32位和64位)。

增强版PowerShell脚本

$software = @()
$paths = @(
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
    'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)

foreach ($path in $paths) {
    $items = Get-ItemProperty $path
    foreach ($item in $items) {
        if ($item.DisplayName) {
            $software += [PSCustomObject]@{
                Name = $item.DisplayName
                Version = $item.DisplayVersion
                Publisher = $item.Publisher
                InstallDate = $item.InstallDate
                InstallLocation = $item.InstallLocation
            }
        }
    }
}

$software | Sort-Object Name | Format-Table -AutoSize

这个脚本会:

  1. 检查32位和64位的软件注册表位置
  2. 提取更完整的软件信息
  3. 按软件名称排序输出

方法二:使用WMIC命令

对于喜欢命令行的用户,WMIC是一个不错的选择:

wmic product get name,version,vendor,installdate /format:csv

注意:WMIC只能获取通过MSI安装的软件,可能会遗漏一些程序。

方法三:VBScrIPt方案

如果你需要兼容旧系统,可以使用VBScript:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("installed_software.txt", True)

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_Product")

For Each objItem in colItems
    objFile.WriteLine "Name: " & objItem.Name
    objFile.WriteLine "Version: " & objItem.Version
    objFile.WriteLine "Vendor: " & objItem.Vendor
    objFile.WriteLine "Install Date: " & objItem.InstallDate
    objFile.WriteLine "----------------------------------------"
Next

objFile.Close
WScript.Echo "软件列表已保存到 installed_software.txt"

将上述代码保存为.vbs文件后双击运行,会在当前目录生成installed_software.txt文件。

方法四:批处理脚本组合方案

结合注册表查询和WMIC的批处理脚本:

@echo off
setlocal enabledelayedexpansion

echo 正在获取已安装软件列表...
echo ----------------------------- > installed_apps.txt
echo 通过注册表获取的软件列表 >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s | find "DisplayName" >> installed_apps.txt

echo. >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt
echo 通过WMIC获取的软件列表 >> installed_apps.txt
echo ----------------------------- >> installed_apps.txt

wmic product get name,version >> installed_apps.txt

echo 列表已保存到 installed_apps.txt
pause

高级技巧:导出为CSV并分析

对于需要进一步分析的情况,可以将结果导出为CSV格式:

$software = @()
$paths = @(
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
    'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)

foreach ($path in $paths) {
    $items = Get-ItemProperty $path
    foreach ($item in $items) {
        if ($item.DisplayName) {
            $software += [PSCustomObject]@{
                Name = $item.DisplayName
                Version = $item.DisplayVersion
                Publisher = $item.Publisher
                InstallDate = $item.InstallDate
                InstallLocation = $item.InstallLocation
                UninstallString = $item.UninstallString
            }
        }
    }
}

$software | Sort-Object Name | Export-Csv -Path "software_list.csv" -NoTypeInformation -Encoding UTF8

导出的CSV文件可以用Excel打开并进行排序、筛选等操作。

常见问题解决

  1. 为什么有些软件没有显示?

    • 某些便携版软件可能不会在注册表中注册
    • 用户级安装的软件可能位于HKCU注册表分支
    • 可以添加查询HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*来获取当前用户安装的软件
  2. 如何获取更详细的软件信息?

    Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
    Where-Object { $_.DisplayName } |
    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, InstallLocation, URLInfoAbout, HelpLink, EstimatedSize |
    Sort-Object DisplayName |
    Format-Table -AutoSize
  3. 如何远程获取其他电脑的软件列表? 使用PowerShell远程功能:

    Invoke-Command -ComputerName 远程电脑名 -ScriptBlock {
       Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
       Select-Object DisplayName, DisplayVersion
    }

最佳实践建议

  1. 定期备份软件列表,建议每月一次
  2. 将脚本设置为计划任务自动运行并保存结果
  3. 对于企业环境,可以考虑使用专业的资产管理工具
  4. 结合安装日期信息可以追踪软件变更历史

通过以上脚本,你可以轻松获取Windows系统上安装的软件清单,无论是用于个人电脑维护还是企业IT管理,这些方法都能大大提高工作效率。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,8人围观)

还没有评论,来说两句吧...

目录[+]