远程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站获取序列号?

在此先感谢您提供的任何帮助。

+1

那么,问题是什么? –

+0

问题是如何远程获取硬盘驱动器的序列号。 objItem.SerialNumber应该可以工作,但不会。有没有什么需要我来完成,或者我可以采取另一种方式? – Insomnia

+0

啊,对不起。我刚刚意识到你的意思。没有数据被返回。我看到的输出完全如图所示,除Tag之外没有任何数据正在被正确返回。编辑OP澄清。 – Insomnia

使用单引号注释On Error Resume Next并发布可能正在返回的错误消息。

+0

我几乎立即在Win2000站上收到错误。 ========================================== 计算机:STN_11 == ======================================== C:\ Documents and Settings \ Administrator \ Desktop \ Scriptomatic \ temp_script.sm(16, 4)(null):0x80041010 – Insomnia

+0

对于XP站,我收到了CDate的不匹配错误(因此原因未在原始输出中显示)。删除所有呼叫,但对于SerialNumber和标记给出: ======================================电脑:STN_16 ========================================= = SerialNumber: 标签:\\。\ PHYSICALDRIVE0 – Insomnia

+0

在2000机器上,您似乎没有安装WMI提供程序。您可以通过添加删除程序 - > Windows组件 - >管理和监视工具 - > WMI Windows Management Installer Provider来安装它。 对于第二个,它似乎工作,但您的硬件供应商不填充此字段。您可以尝试使用WMITools并手动浏览以查看它是否可以填充到其他属性或对象中。 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24045 –