Häufige Fehler und Fallstricke
VBScriptDie Visual Basic Scripting-Sprache ist eine höhere Programmiersprache von Microsoft®. kennt zwei Arten von Variablen:
Variablentyp | Beschreibung |
---|---|
Einfach | Variablen sind echte Typen wie Integer, Boolean, String. |
Objekte | Dies sind zusammengesetzte Elemente, deren Funktionen über die Schnittstelle von Automatisierungsobjekten bereitgestellt werden. |
Automatisierungsobjekttypen müssen als Objekte deklariert werden, bevor diesen Werte zugewiesen werden.
Wichtig
Es wird dringend empfohlen, allen deklarierten Variablen und/oder Objekten einen Wert zuzuweisen.
Beispiel
Function Main
'zu verwendendes Objekt deklarieren
Dim nameStr As String
'der Variable einen Wert zuweisen
nameStr = "Dies ist eine Testzuweisung von Text"
'Ergebnis im Scanner-Aktivitätsfenster der Zuweisung anzeigen
echo nameStr
'Ergebnis zurückgeben
Main = true
End Function
Das folgende Skript enthält ein etwas komplexeres Beispiel, bei dem die auf dem Zielcomputer installierten Dienste aufgelistet werden (localhost = 127.0.0.1). Kopieren Sie den folgenden Text, fügen Sie ihn im Script DebuggerEin GFI LANguard-Modul, mit dem Sie mithilfe einer VBScript-kompatiblen Sprache eigene Skripte erstellen und auf Fehler untersuchen können. ein, und führen Sie ihn aus (F5). Im Debug-Fenster wird eine Liste der auf dem lokalen Computer installierten Dienste angezeigt.
Function main
'Erforderliche Objekte deklarieren
Dim wmi As Object
Dim objswbemobject As Object
'Benötigte andere Variablen deklarieren
Dim strComputer As String
Dim cr As String
strComputer = "127.0.0.1"
'Wagenrücklauf
cr = Chr(13) + Chr(10)
'Hook für das wmi-Objekt
Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Überprüfen, ob Hook erfolgreich erstellt wurde
If wmi is Nothing Then echo ("Fehler 1")
'Service-Instanz von wmi zurückliefern
Set wmiinst=wmi.instancesof("Win32_Service")
'Überprüfen, ob Instanz verfügbar ist
If wmiinst is Nothing Then echo ("Fehler 2")
'Alle Instanzen durchlaufen
For Each objswbemobject In wmiinst
echo("Service-Name= ")
'Services anzeigen
echo(objswbemobject.DisplayName+cr)
Next
End Function
Hinweis
Wenn Sie versuchen, ein Automatisierungsobjekt zu verwenden, ohne es zuvor zu deklarieren, schlägt die Kompilierung des Skripts fehl. Stellen Sie sich als Beispiel den gleichen Code vor, jedoch ohne vollständige Deklaration der Objektvariable „wmi“. Wenn Sie versuchen, das Skript auszuführen, werden sofort eine Fehlermeldung und ein Hinweis auf die genaue Zeile angezeigt, in der der Fehler auftrat:
Function main
Dim wmi 'WARNING : missing “as object”
Dim objswbemobject As Object
…
…
…
End Function