2012-01-23 13 views
1

私は比較的経験の浅いコーダーで、VBScript経由で物理ディスクのシリアル番号をリモートで取得する問題に取り組んでいます。ディスクのシリアル番号のリモートWMIコール

現在Scripting Guysが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の問題であることを読んだ。これは、使用しているOSのためにここでは問題ではありません。誰が何が間違っているのか知っていますか?

フォローアップの質問として、誰でも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

それはあなたがWMIプロバイダがインストールされていない2000年のマシンに思えます。 [プログラムの追加と削除] - > [Windowsコンポーネント] - > [管理と監視ツール] - > [WMI Windows Management Installer Provider]を使用してインストールできます。 1秒間 、ハードウェアベンダーは、このフィールドに移入されていないが、働いているようです。 WMIToolsを使用して、他のプロパティやオブジェクトにポピュレートされているかどうかを手動で参照してみることもできます。 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24045 –

関連する問題