2009-07-23 7 views
0

J'ai une incompatibilité de type dans mon script VBScript. Je sais que la valeur est correcte, mais je ne sais pas pourquoi c'est à venir.Incompatibilité de type VBScript

C'est la ligne où le script se termine:

WScript.Echo "DNS Server Search Order: " & objNicItem.DNSServerSearchOrder 

Le script a besoin d'un fichier nommé servers.txt (qui a une liste de serveurs, je suis Tesing en utilisant mon propre nom de poste de travail).

Si je fais un error on resume next le script fonctionne. Cependant, si la liste des serveurs est remplie. il affiche les mêmes informations que le fisrt qui fonctionne à nouveau pour chaque hôte, donc ce n'est pas correct.

'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 

Répondre

0

Il travaille maintenant pleinement avec le code suivant:

Wscript.Echo "IP Address: " & objNicItem.IPAddress(0) 

Merci à tous

3

DNSServerSearchOrder propriété de l'objet Win32_NetworkAdapterConfiguration est un tableau, pas une valeur qui peut être (implicitement) converti en une chaîne.

Voir MSDN on the Win32_NetworkAdapterConfiguration Class

+0

Essayez d'échapper à la parenthèse avec la barre oblique inverse: '\ ('et' \) '. – Helen

+1

+1 - Lien fixe. Le bouton "Lien hypertexte" dans l'éditeur fait un bon travail échappant aux liens vers un format compatible SO. ;-) – Tomalak

+0

@Helen: Cela le casserait encore plus. Tout ne peut pas être échappé avec des antislashs. :-) – Tomalak

4

Le problème est que DNSServerSearchOrder est une liste de paires clé/valeur de sorte que la commande Echo échouera. Vous aurez besoin d'énumérer toutes les valeurs comme ceci:

If Not IsNull(objNicItem.DNSServerSearchOrder) Then 
    For x = 0 To UBound(objNicItem.DNSServerSearchOrder) 
    WScript.Echo "  " & objNicItem.DNSServerSearchOrder(x) 
    Next 
End If 
+0

Ou: 'Pour chaque strDNS dans objNicItem.DNSServerSearchOrder: WScript.Echo" "& strDNS: Next' (Colons en raison de l'absence de saut de ligne dans les commentaires.) – Helen

Questions connexes