KB » Computer » VBScript foutcodes, voorbeeldscripts en uitleg

VBScript foutcodes, voorbeeldscripts en uitleg

    Tweeten

Introductie

Reeksen van foutcodes

Er zijn de volgende soorten foutcodes:

Bron van de fout

Hoe weet je met wat voor soort fout je te maken hebt?

Vaak staat de bron van de fout in de eigenschap (property) Err.Source, bv.:
Microsoft VBScript runtime error

Met WMI-fouten is de waarde van Err.Source soms leeg. Dat kan je verhelpen door de manier van aanroepen.

De 1e methode (die een lege string oplevert) is de volgende constructie:
strComputer = "fictional"
Set objWMIService = GetObject("winmgmts:\\" & strComputer)

De 2e methode levert wel waardevolle informatie op:

strComputer = "localhost" strPrinter = "TestPrinter" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objPrinter = objWMIService.Get("Win32_Printer.Name='" & strPrinter & "'")

Er van uitgaande dat de printer niet bestaat, krijg je nu de volgende waarde in Err.Source: SWbemServicesEx

De clou in de 2e methode is dus dat je eerst verbinding maakt met de WMI service, en dan pas met de printer.

Toelichting op de tabellen

Omdat de betekenis niet altijd even verhelderend is, staan in onderstaande tabellen voor een aantal foutcodes stukjes voorbeeldscript die zo'n code tot gevolg hebben, met enige uitleg erbij.

Standaard zijn de tabellen gesorteerd op foutcode, tenzij je JavaScript hebt uitgeschakeld in je browser.


VBScript syntax foutcodes en voorbeeldscripts

Deze foutcodes + uitleg vindt je o.a. op deze pagina.

Code (dec) Code (hex) Script(gedeelte) Beschrijving

VBScript runtime foutcodes en voorbeeldscripts

Deze foutcodes + uitleg vindt je o.a. op deze pagina.

Code
(dec)
Code
(hex)
Script(gedeelte) Beschrijving
462 0x1CE strComputer = "fictional" Set objWMIService = GetObject("winmgmts:\\" & strComputer) De foutmelding betekent "The remote server machine does not exist or is unavailable"
Je probeert verbinding te maken met een computer die niet bestaat of niet beschikbaar is.

WMI-foutcodes en voorbeeldscripts

Op deze pagina kan je een lijst van WMI-foutcodes vinden, en hun betekenis.

Foutcode Script(gedeelte) Beschrijving
0x80041002 strComputer = "." strService = "Alerte" Set objWMIService = &_ GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objService = &_ objWMIService.Get("Win32_Service.Name='" & strService & "'") De foutmelding betekent "Not found." (WBEM_E_NOT_FOUND)
De naam van de service is onjuist (het moet Alerter) zijn.
0x80041008 On Error Resume Next strComputer = "." 'Change to non-existent host to create binding error. Const HKLM = &H80000002 'Connect to WMI and StdRegProv class. Set objReg = GetObject("winmgmts:\\" & strComputer & _ "\root\default:StdRegProv") 'Get string value from entry and check for error. intRet = objReg.GetStringValue(HKLM, strSubKeyName, strEntryName, strValue) De foutmelding betekent "Invalid parameter." (WBEM_E_INVALID_PARAMETER)
Dat klopt wel, want doordat 2 van de parameters van GetStringValue niet gedefiniëerd zijn, vraag je de waarde op van de registersleutel HKLM\\
0x80041010 strComputer = "." Set oReg=GetObject("winmgmts:\\" &_ strComputer & "\root\cimV2:StdRegProv") De foutmelding betekent "Specified class is not valid." (WBEM_E_INVALID_CLASS)
\root\cimV2:StdRegProv is blijkbaar een class, maar het had moeten zijn \root\default:StdRegProv
0x80041021 ' strComputer = "." GetObject("winmgmts:\\" & strComputer & "\root\cimv2") De foutmelding betekent "Query is syntactically not valid." (WBEM_E_INVALID_SYNTAX)
Dat klopt, want ik heb van de 1e regel commentaar gemaakt, waardoor in de 2e regel de variabele strComputer niet gedefiniëerd is.
0x8004103A strPrinter = "TestPrinter" Set objPrinter = GetObject _ ("winmgmts:root\cimv2:Win32_Printer.Name='" & strPrinter & "'") De foutmelding betekent "Specified object path was not valid." (WBEM_E_INVALID_OBJECT_PATH)
De printer in het script bestaat niet of is niet beschikbaar.

Voorbeelden van foute scripts

In deze sectie ga ik allerlei fouten opnemen waar ik zelf tegenaan gelopen ben (want als het mij gebeurt zal het ongetwijfeld ook anderen overkomen).

Foutcode 0x8000500

Ik kreeg deze foutcode bij het volgende script, waarmee ik wilde bepalen of een gebruiker administrator was:

myUser = "Henk" Set objGroup = GetObject("WinNT://" & strComputer & "/ Administrators") For Each objUser in objGroup.Members If objUser.Name = myUser Then WScript.Echo myUser & " is a local administrator" End If Next

De foutcode treedt op in regel 2, het 1e teken, en lijkt volgens deze pagina het volgende te betekenen:
An invalid ADSI pathname was passed.

En als je even goed kijkt naar regel 2, dan is de fout natuurlijk heel duidelijk: ik gebruik de variabele strComputer, die ik nergens heb gedefinieerd. Het kan dus wel kloppen dat de padnaam (het ding wat ik als parameter aan GetObject meegeef) niet klopt.



    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 6-12-2013 12:37:22