You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供两款VBScript脚本:远程64位PC安装及软硬件清单采集

没问题,我给你准备两个符合需求的VBScript脚本,都是针对64位远程机器优化的,你可以根据实际情况调整参数:


1. 远程安装EXE/MSI程序的VBScript脚本

这个脚本通过WMI远程执行安装命令,支持静默安装EXE或MSI包。使用前需要确认:

  • 执行脚本的账户拥有目标远程计算机的管理员权限
  • 目标计算机开启了WMI服务(默认是开启的)
  • 安装包路径是目标计算机可访问的共享路径(比如\\FileServer\Installers\setup.msi)
Option Explicit

' -------------------------- 配置参数 --------------------------
Dim strComputer, strInstaller, strArguments
strComputer = "REMOTE-PC-NAME" ' 替换为目标远程计算机名/IP
strInstaller = "\\FileServer\Installers\YourSetup.msi" ' 替换为安装包路径
strArguments = "/qn" ' MSI静默参数,EXE请替换为对应静默参数(如/s /silent等)
' -------------------------------------------------------------

Dim objWMIService, objProcess, intReturnCode

' 连接远程计算机的WMI服务
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

' 创建进程执行安装命令
Set objProcess = objWMIService.Get("Win32_Process")
intReturnCode = objProcess.Create("cmd /c """ & strInstaller & """ " & strArguments, Null, Null, intReturnCode)

' 输出执行结果
If intReturnCode = 0 Then
    WScript.Echo "安装命令已成功发送到远程计算机:" & strComputer
Else
    WScript.Echo "发送安装命令失败,错误代码:" & intReturnCode
End If

Set objProcess = Nothing
Set objWMIService = Nothing

注意: 不同EXE安装包的静默参数可能不同,需要参考对应软件的安装文档调整strArguments的值。


2. 硬件清单+已安装软件采集脚本

这个脚本会采集目标计算机的核心硬件信息(含计算机、显示器序列号)和已安装软件列表,最终输出到本地的InventoryReport.txt文件,适合库存统计使用。支持本地或远程执行。

Option Explicit

' -------------------------- 配置参数 --------------------------
Dim strComputer
strComputer = "." ' 本地执行用".",远程执行替换为目标计算机名/IP
' -------------------------------------------------------------

Dim objFSO, objOutputFile, objWMIService, colItems, objItem
Dim strReport

' 创建输出文件
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutputFile = objFSO.CreateTextFile("InventoryReport.txt", True)

' 连接WMI服务
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

' -------------------------- 硬件信息采集 --------------------------
strReport = "=== 硬件清单 ===" & vbCrLf & vbCrLf

' 计算机序列号(BIOS序列号)
strReport = strReport & "计算机序列号:"
Set colItems = objWMIService.ExecQuery("SELECT SerialNumber FROM Win32_BIOS")
For Each objItem In colItems
    If Not IsNull(objItem.SerialNumber) Then
        strReport = strReport & Trim(objItem.SerialNumber) & vbCrLf
    Else
        strReport = strReport & "未获取到" & vbCrLf
    End If
Next

' 显示器序列号
strReport = strReport & vbCrLf & "显示器序列号:"
Set colItems = objWMIService.ExecQuery("SELECT SerialNumber FROM Win32_DesktopMonitor")
For Each objItem In colItems
    If Not IsNull(objItem.SerialNumber) And Trim(objItem.SerialNumber) <> "" Then
        strReport = strReport & Trim(objItem.SerialNumber) & vbCrLf
    Else
        strReport = strReport & "未获取到(部分显示器可能不支持)" & vbCrLf
    End If
Next

' 核心硬件信息
strReport = strReport & vbCrLf & "CPU信息:"
Set colItems = objWMIService.ExecQuery("SELECT Name FROM Win32_Processor")
For Each objItem In colItems
    strReport = strReport & Trim(objItem.Name) & vbCrLf
Next

strReport = strReport & vbCrLf & "内存容量:"
Set colItems = objWMIService.ExecQuery("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem")
For Each objItem In colItems
    strReport = strReport & Round(objItem.TotalPhysicalMemory / 1024 / 1024 / 1024, 2) & " GB" & vbCrLf
Next

' -------------------------- 已安装软件采集 --------------------------
strReport = strReport & vbCrLf & "=== 已安装软件列表 ===" & vbCrLf & vbCrLf

' 读取注册表Uninstall键(比Win32_Product更可靠,避免触发MSI修复)
Dim objRegistry, strKeyPath, arrSubKeys, strSubKey, strDisplayName, strDisplayVersion
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

' 64位系统的软件注册表路径
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
objRegistry.EnumKey &H80000002, strKeyPath, arrSubKeys ' &H80000002是HKLM的64位视图

If IsArray(arrSubKeys) Then
    For Each strSubKey In arrSubKeys
        ' 获取软件名称
        objRegistry.GetStringValue &H80000002, strKeyPath & "\" & strSubKey, "DisplayName", strDisplayName
        ' 获取软件版本
        objRegistry.GetStringValue &H80000002, strKeyPath & "\" & strSubKey, "DisplayVersion", strDisplayVersion
        
        If Trim(strDisplayName) <> "" Then
            strReport = strReport & "- " & strDisplayName
            If Trim(strDisplayVersion) <> "" Then
                strReport = strReport & "(版本:" & strDisplayVersion & ")"
            End If
            strReport = strReport & vbCrLf
        End If
    Next
End If

' 写入并关闭文件
objOutputFile.Write strReport
objOutputFile.Close

WScript.Echo "库存报告已生成:" & objFSO.GetAbsolutePathName("InventoryReport.txt")

' 释放对象
Set objOutputFile = Nothing
Set objFSO = Nothing
Set objWMIService = Nothing
Set objRegistry = Nothing

注意: 远程执行时,同样需要执行账户拥有目标计算机的管理员权限和WMI访问权限;部分显示器可能无法返回序列号,属于硬件固件限制,无法解决。


内容的提问来源于stack exchange,提问作者DEBI PRASAD SINHA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:29:56