2012-03-10 14 views
0

vbscriptとWMIの新機能です。 私は解決できないランタイムエラーを与えるスクリプトを書いた。 時間があれば助けてください。WMIで作業し、xmlで結果を確認する

これは私のコード

Dim objWMIService 
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 

set oXMLDoc = CreateObject("Microsoft.XMLDOM") 
set oRoot = oXMLDoc.CreateElement("WIN32") 

oXMLDoc.appendChild oRoot 

set oRootChild = oXMLDoc.createElement("LOGICALDISK") 
oRoot.appendChild oRootChild 

Set LogicalDisk = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk ") 

for each objLogicalDisk in LogicalDisk 

set oCaption = oXMLDoc.createElement("Caption") 
oCaption.text = objLogicalDisk.Caption 
oRootChild.appendChild oCaption 

set oDescription = oXMLDoc.createElement("Description") 
oDescription.text = objLogicalDisk.Description 
oCaption.appendChild oDescription 

set oSize = oXMLDoc.createElement("Size") 
oSize.text = objLogicalDisk.Size 
oCaption.appendChild oSize 

set oFreeSpace = oXMLDoc.createElement("FreeSpace") 
oFreeSpace.text = objLogicalDisk.FreeSpace 
oCaption.appendChild oFreeSpace 

set oFileSystem = oXMLDoc.createElement("FileSystem") 
oFileSystem.text = objLogicalDisk.FileSystem 
oCaption.appendChild oFileSystem 

next 

oXMLDoc.save "test.xml" 

であり、それがこのエラーにエラーがあるためuint64型のタイプを使用してのために発生していること

C:\Users\XXXX\Desctop\41.vbs(27, 1) Microsoft VBScript runtime error: Type mismatch: 'oSize.text' 

私の事を提供します。(なくてもよい)

+0

このエラーは、デバイスのために、私はリムーバブルストレージ&挿入メディアで確認したリムーバブル記憶域 – Amol

答えて

2

あなたの問題がありますNull値に起因します。

Function saveNull(vVal) 
    If IsNull(vVal) Then 
    saveNull = "<null>" 
    Else 
    saveNull = vVal 
    End If 
End Function 

のような機能を起動し、好きなことを使用します。

... 
set oSize = oXMLDoc.createElement("Size") 
oSize.text = saveNull(objLogicalDisk.Size) 
oCaption.appendChild oSize 
... 

WRT AMO1のcontibution:

空の "リムーバブル記憶域" ドライブどちらのサイズもファイルシステム(事実WMIを持っていますNullを返すことによって報告する)。そのようなドライブにメディアを挿入すると、これらの情報を利用できるようになるため、特定のドライブタイプの入力/除外の説明を確認しても問題は解決しません。

+0

でありますストレージ +1詳細 – Amol

1

このエラーは、「リムーバブル記憶域があるデバイス」.Iはsizeが働いていないと確信している、FreeSpace & FileSystemもwork.YouがIf <condtion> thenを追加することによって、それを克服することができないだろうしています。それは、これらの情報は、あなたのソリューションは、ローカルでのみ動作します鉱山&私の解決策よりも正確であるavailable.Thus作るのサンプルコード

set oSize = oXMLDoc.createElement("Size") 
If objLogicalDisk.Description="Local Fixed Disk" Then 
oSize.text = objLogicalDisk.Size 
oCaption.appendChild oSize 
End If 
関連する問題