Skript Grundlagen

Generell sollten Code, der mehr als 1mal ausgeführt wird, in Funktionen oder Subroutinen ausgegliedert werden. Diese Subroutinen oder Funktionen bekommen definierte Übergabeparameter zur Bearbeitung und liefern Rückgabewerte, die im weiteren Skriptablauf benutzt werden können.

 

Die Beispiel-Funktionen und -Subroutinen sind praxisorientiert und zeigen, wie mit vb-Script auf Dateien, WMI oder Active Directory zugegriffen werden kann. Damit hat man bereits ein kleines Framework mit grundlegender Funktionalität. Diese Funktionen und Routinen können in beliebig anderen Skripte immer wieder als Basis verwenden.

globale Variablen

Die folgende Tabelle zeigt Konstanten, Variablen und Code Fragmente, die ich in fast jedem meiner Skripte an den Anfang stelle.

 

Option Explizit
Das zwingt dazu, dass alle Variablen mit DIM bekannt gemacht werden müssen. Wird jetzt eine Variable ohne vorherige DIM Anweisung verwendet, dann bricht das Skript ab.
On ERROR Resume NEXT
Bei möglichen Fehler im Skriptablauf soll das Skript mit dem nächsten Befehl fortfahren.
Das gibt uns die Möglichkeit Fehler abzufragen und darauf zu reagieren.
Viele interne Funktionen liefern im Fehlerfall einen Wert > 0 zurück, was mit If Err.Number Then ... End If abgefragt werden kann.
On ERROR Resume NEXT
sollte im Hauptskript und in allen Subroutinen oder Funktionen stehen.
CONST FOR_READING = 1
CONST FOR_WRITING = 2
CONST FOR_APPEND = 8
Definierte Konstanten z.B. für das Öffnen von Dateien erleichtern das Lesen des Skripts.
Dim WshShell, WshFso, WshNet,
oInFile, oOutFile, oLogFile, strPathToScript, strLogFile, strInFile, strOutFile
Diese globalen Variablen benutze ich häufig für Dateioperationen.
Es ist guter Stil, dass in Variablennamen durch eine Prefix der Typ der Variable gekennzeichnet wird.
Eine Variable, von der wir wissen, dass sie einen String repräsentiert, bekommt z.B. den Namen strVariable.
Set WshFso = CreateObject("Scripting.FileSystemObject")
Die globale Variable WshFso bekommt mit dem Set-Befehl eine Referenz (CreateObject) auf ein FileSystem Objekt zugewiesen.
Diese Objektreferenz verwenden wir in Dateioperationen in der Subroutine CreateFileObjects().
Set WshShell = CreateObject("Wscript.Shell")
Die globale Variable WshShell benötigen wir als Objektreferenz, um darüber z.B. externe Programme starten zu können.
strPathToScript = Left(WScript.ScriptFullName,(Len(WScript.ScriptFullName) - (Len(WScript.ScriptName) + 1))) &  "\"
Die globale Variable strPathToScript liefert uns den aktuellen Pfad, in dem das Skript gestartet wird.
strLogfile = strPathToScript & Mid(WScript.ScriptName,1, InStr(1,WScript.ScriptName,".")-1) & ".log
Oft wird ein Logfile benötigt, wofür hier die globale Variable strLogFile erzeugt wird. Die Datei bekommt den Namen Skriptname.log und wird später mit der Subroutine CreateFileObjects() im Pfad des Skripts erzeugt.

Die obigen Code Fragmente bauen wir in Funktionen bzw. Subroutinen ein, die im folgenden beschrieben werden.
Sub CreateFileObjects() Mit dieser Subroutine erzeugen wir die File Handles für unsere Eingabe-, Ausgabe- und Logdatei.
Function CheckScriptHost() Mit dieser Funktion stellen wir fest, welcher Skripting Host eingestellt ist.
Function IsAlive() Mit dieser Funktion können wir feststllen, ob ein Computer erreichbar ist und bekommen seine IP Adresse.
Sub PrintLog() Mit dieser Subroutine schreiben wir Status- oder Fehlermeldungen in eine Datei.

Hinweis:
An Subroutinen und Funktionen können Parameter übergeben werden, aber nur Funktionen können einen Rückgabewert liefern.