2012-01-23 67 views
1

我是一個相對缺乏經驗的編碼器,我一直在遇到通過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

回答

0

使用單引號註釋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 –