【发布时间】:2012-01-23 23:24:26
【问题描述】:
我是一个相对缺乏经验的编码人员,并且在通过 VBScript 远程获取物理磁盘序列号时遇到了问题。
目前,我正在使用脚本专家提供的 Scriptomatic V2 中的默认脚本。我从 2003 服务器运行它并试图从 Win2000 和 WinXP SP2/SP3 系统获取信息。我从几个教程中看到推荐的 WMI 类是 Win32_PhysicalMedia。
包括有用的位:
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
arrComputers = Array("STN_XP","STN_2000")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "=========================================="
WScript.Echo "Computer: " & strComputer
WScript.Echo "=========================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
'(Removed a couple from the code, just showing the useful ones)
WScript.Echo "Model: " & objItem.Model
WScript.Echo "Name: " & objItem.Name
WScript.Echo "SerialNumber: " & objItem.SerialNumber
WScript.Echo "Tag: " & objItem.Tag
WScript.Echo
Next
Next
现在我得到的输出如下:注意这是运行所有调用的脚本的确切输出; objItem.Tag 值之外没有数据返回:
==========================================
Computer: STN_XP
==========================================
Capacity:
Caption:
CleanerMedia:
CreationClassName:
Description:
HotSwappable:
Manufacturer:
MediaDescription:
MediaType:
Model:
Name:
OtherIdentifyingInfo:
PartNumber:
PoweredOn:
Removable:
Replaceable:
SerialNumber:
SKU:
Status:
Tag: \\.\PHYSICALDRIVE0
Version:
WriteProtectOn:
==========================================
Computer: STN_2000
==========================================
所有计算机都连接到一个域,我已登录到主管理员帐户。使用其他一些 WMI 库,我获得了数据,并且到目前为止,在一台特定的计算机上,我收到了一个序列号(和标签,但没有别的)。我已经阅读了这对于 Vista 来说是一个问题,您需要在管理员模式下运行。由于正在使用的操作系统,这在这里应该不是问题。有谁知道可能出了什么问题?
作为后续问题,有人知道如何从 2000 站获取序列号吗?
提前感谢您能给我的任何帮助。
【问题讨论】:
-
那么,问题是什么?
-
问题是如何远程获取硬盘的序列号。 objItem.SerialNumber 应该可以工作,但不能。我需要做些什么才能访问它,或者我可以采取其他方法吗?
-
啊,对不起。我才明白你的意思。没有数据被返回。我看到的输出完全如图所示,除了 Tag: 之外没有数据被正确返回。编辑了 OP 以澄清。