windows收集安装信息脚本

一、win10

# Get-SoftwareList.ps1
# 功能:收集本机已安装的软件列表,并发送到网络共享目录

# --- 配置区:请务必修改为你的实际路径 ---
# 目标服务器上的共享文件夹路径,例如:\\DC01\SoftwareInventory$
$serverShare = "\\WIN-V17D1IV7AOB\test2$"
# 如果需要身份验证,可以取消注释并填写
# $cred = Get-Credential "DOMAIN\ServiceAccount"
# --- 配置区结束 ---

# 获取计算机名,用于生成唯一文件名
$computerName = $env:COMPUTERNAME
# 生成时间戳,用于区分不同时间收集的报告
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"

# 收集软件列表
# 从两个常见的注册表位置获取已安装的软件信息
$software = Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*", 
                             "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" |
            Where-Object { $_.DisplayName -ne $null } | # 过滤掉没有名称的项
            Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
            Sort-Object DisplayName

# 将收集到的信息导出到一个临时文本文件
$tempFile = "$env:TEMP\$computerName-$timestamp.csv"
$software | Export-Csv -Path $tempFile -NoTypeInformation -Encoding UTF8

# 尝试将文件复制到服务器
try {
    # 如果目标目录不存在,脚本会报错并进入catch块
    Copy-Item -Path $tempFile -Destination "$serverShare\" -Force -ErrorAction Stop
    Write-Host "Success: 软件列表已成功发送到服务器。"
} catch {
    Write-Host "Error: 无法复制文件到服务器。请检查路径 '$serverShare' 是否存在以及是否有写入权限。" -ForegroundColor Red
    Write-Host "详细错误信息: $($_.Exception.Message)" -ForegroundColor Red
} finally {
    # 清理临时文件
    Remove-Item -Path $tempFile -Force -ErrorAction SilentlyContinue
}

 

posted @ 2026-05-23 15:55  hopeccie  阅读(46)  评论(0)    收藏  举报