VBScript coinciden los tipos
-
19-09-2019 - |
Pregunta
Tengo una coincidencia de tipos en mi script VBScript. Yo sé que el valor es correcto, pero no sabe por qué está por venir.
Esta es la línea donde termina la secuencia de comandos:
WScript.Echo "DNS Server Search Order: " & objNicItem.DNSServerSearchOrder
El script requiere un archivo llamado servers.txt
(que tiene una lista de servidores en el mismo, estoy tesing usando mi propio nombre de estación de trabajo).
Si hago un error on resume next
funciona el guión. Sin embargo, si se rellena la lista de servidores. se muestra la misma información que el fisrt que trabaja de nuevo para cada huésped, así que no es correcta.
'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
Solución 3
Es totalmente trabajando ahora con el siguiente código:
Wscript.Echo "IP Address: " & objNicItem.IPAddress(0)
Gracias a todos
Otros consejos
El problema es que DNSServerSearchOrder es una lista de pares clave / valor para que el comando Echo fallará. Usted necesitará para enumerar todos los valores como la siguiente:
If Not IsNull(objNicItem.DNSServerSearchOrder) Then
For x = 0 To UBound(objNicItem.DNSServerSearchOrder)
WScript.Echo " " & objNicItem.DNSServerSearchOrder(x)
Next
End If
propiedad Win32_NetworkAdapterConfiguration
del objeto DNSServerSearchOrder
es una matriz, no un valor que puede ser (implícitamente) convierte en una cadena.