VBScriptの型が一致しません
-
19-09-2019 - |
質問
私は自分のVBScriptスクリプトでの型の不一致を持っています。私は、値が正しいことを知っているが、わからない、なぜそれが来ています。
このスクリプトは終了行があります:
WScript.Echo "DNS Server Search Order: " & objNicItem.DNSServerSearchOrder
スクリプトがservers.txt
という名前のファイルが必要です(その内のサーバーのリストを持って、私は自分のワークステーション名を使用してtesingています)。
error on resume next
を行う場合は、スクリプトが動作します。しかし、サーバーリストは人口である場合。それは正しくないですので、それは、各ホストのために再び動作・ファーストと同じ情報が表示されます。
'Input from the command line
If Wscript.Arguments.Count = 0 Then
Wscript.Echo "Usage: DNSAudit.vbs servers.txt "
Wscript.Quit
End If
'Input from txt file
Const ForReading = 1
Set objArgs = WScript.Arguments
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(ObjArgs(0), ForReading)
i = 0
Do Until objTextFile.AtEndOfStream
StrNextLine = objTextFile.ReadLine
objDictionary.Add i, StrNextLine
i = i + 1
Loop
For Each objItem In objDictionary
Computer = objDictionary.Item(objItem)
'For Each Computer In Wscript.Arguments
'remote connection to another computer other than using variables
'Set ObjWMIService = GetObject("Winmgmts://COMPUTERNAME") for remote connection
Set ObjWMIService = GetObject("Winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
'If Err.Number <> 0 Then
'WScript.Echo "**************************************************************" & vbCrLf
'WScript.Echo "Connection Errors" & vbCrLf
'WScript.Echo Computer & " " & Err.Description
'WScript.Echo Computer & " " & Err.Description & " investigation required!"
'WScript.Echo "**************************************************************" & vbCrLf
''*********************************************************************************************************
'End if
WScript.Echo "**************************************************************" & vbCrLf
WScript.Echo "Starting Audit on " & computer
WScript.Echo "**************************************************************" & vbCrLf
WScript.Echo "**************************************************************" & vbCrLf
wscript.echo "List DHCP, DNS, WINS Adapter Parameters"
wscript.Echo "**************************************************************" & vbCrLf
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration")
For Each objNicItem in colItems
Wscript.Echo "DHCP Enabled: " & objNicItem.DHCPEnabled
Wscript.Echo "DHCP Lease Expires: " & objNicItem.DHCPLeaseExpires
Wscript.Echo "DHCP Lease Obtained: " & objNicItem.DHCPLeaseObtained
Wscript.Echo "DHCP Server: " & objNicItem.DHCPServer
Wscript.Echo "DNS Domain: " & objNicItem.DNSDomain
Wscript.Echo "DNS Domain Suffix Search Order: " & _
objNicItem.DNSDomainSuffixSearchOrder
Wscript.Echo "DNS Enabled For WINS Resolution: " & _
objNicItem.DNSEnabledForWINSResolution
Wscript.Echo "DNS Host Name: " & objNicItem.DNSHostName
WScript.Echo "DNS Server Search Order: " & objNicItem.DNSServerSearchOrder
WScript.Echo "Domain DNS Registration Enabled: " & objNicItem.DomainDNSRegistrationEnabled
Wscript.Echo "Full DNS Registration Enabled: " & _
objNicItem.FullDNSRegistrationEnabled
Wscript.Echo "IP Address: " & objNicItem.IPAddress
Wscript.Echo "MAC Address: " & objNicItem.MACAddress
Wscript.Echo "TCP Maximum Data Retransmissions: " & _
objNicItem.TcpMaxDataRetransmissions
Wscript.Echo "TCP NumC onnections: " & objNicItem.TcpNumConnections
Wscript.Echo "WINS Host Lookup File: " & objNicItem.WINSHostLookupFile
Wscript.Echo "WINS Primary Server: " & objNicItem.WINSPrimaryServer
Wscript.Echo "WINS Secondary Server: " & objNicItem.WINSSecondaryServer & vbCrLf
Wscript.Echo "Adaptor: " & objNicItem.Description & vbCrLf
Next
Next
解決 3
これは完全に次のコードで今働いてます:
Wscript.Echo "IP Address: " & objNicItem.IPAddress(0)
みんなありがとう。
他のヒント
問題は、エコーコマンドは失敗しますのでDNSServerSearchOrderは、キー/値ペアのリストであるということです。あなたは、このようなすべての値を列挙する必要があります。
If Not IsNull(objNicItem.DNSServerSearchOrder) Then
For x = 0 To UBound(objNicItem.DNSServerSearchOrder)
WScript.Echo " " & objNicItem.DNSServerSearchOrder(x)
Next
End If
Win32_NetworkAdapterConfiguration
オブジェクトのDNSServerSearchOrder
プロパティは配列ではなく、文字列に変換(暗黙的に)することができる値である。
所属していません StackOverflow