远程WMI调用磁盘序列号
我是一个相对缺乏经验的编码器,我一直在遇到通过VBScript远程获取物理磁盘序列号的问题。远程WMI调用磁盘序列号
目前,脚本专员使用Scriptomatic V2中的默认脚本。我从2003 Server运行它并试图从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站获取序列号?
在此先感谢您提供的任何帮助。
使用单引号注释On Error Resume Next并发布可能正在返回的错误消息。
我几乎立即在Win2000站上收到错误。 ========================================== 计算机:STN_11 == ======================================== C:\ Documents and Settings \ Administrator \ Desktop \ Scriptomatic \ temp_script.sm(16, 4)(null):0x80041010 – Insomnia
对于XP站,我收到了CDate的不匹配错误(因此原因未在原始输出中显示)。删除所有呼叫,但对于SerialNumber和标记给出: ======================================电脑:STN_16 ========================================= = SerialNumber: 标签:\\。\ PHYSICALDRIVE0 – Insomnia
在2000机器上,您似乎没有安装WMI提供程序。您可以通过添加删除程序 - > Windows组件 - >管理和监视工具 - > WMI Windows Management Installer Provider来安装它。 对于第二个,它似乎工作,但您的硬件供应商不填充此字段。您可以尝试使用WMITools并手动浏览以查看它是否可以填充到其他属性或对象中。 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24045 –
那么,问题是什么? –
问题是如何远程获取硬盘驱动器的序列号。 objItem.SerialNumber应该可以工作,但不会。有没有什么需要我来完成,或者我可以采取另一种方式? – Insomnia
啊,对不起。我刚刚意识到你的意思。没有数据被返回。我看到的输出完全如图所示,除Tag之外没有任何数据正在被正确返回。编辑OP澄清。 – Insomnia