Jump to content

Prozeduren in WSH?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hi NG.

 

W2k3 Server + Win2k, WinXP Clients.

 

Da wir es endlich übers Herz gebracht haben, uns vom größten Teil unserer NT4 Rechner zu trennen, beginne ich mich jetzt ins Thema Anmeldescripts in VBS einzuarbeiten.

 

Wie kann ich innerhalb einer VBS Datei eine Procedur erstellen und auch aufrufen?

Folgender Code schlägt leider fehl:

' Ausführen des Scripts:
' CSCRIPT //X MEIN_SKRIPT.VBS 

Option Explicit
On Error Resume Next
Dim sRoot, sKey, sValname, sRegTyp as String

' Test
sRoot = "HKCU"
sKey = "\Software\123TEST321\"
sValname = "Personal"
sRegTyp = "REG_SZ"

SchreibeRegKey(sRoot, sKey, sValName, sRegType) 
' Hier wird beim Compilieren ein Fehler anzeigt
' Was auch logisch ist! Aber wie soll ich es stattdessen machen?


Sub SchreibeRegKey(Root, Key, Valname, RegTyp)
 Dim valx
 Dim WSHShell
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 ' WSHShell.RegDelete(Root+key+valname)
 WSHShell.RegWrite(Root+key+valname) 
 valx = WshShell.ExpandEnvironmentStrings("\\fileserver\123users\%USERNAME%")
 WSHShell.RegWrite Root+Key+valname, valx, RegTyp
WScript.Quit
End Sub

Ich hoffe, ich bin hier nicht ganz falsch und mir kann jemand helfen.

 

Gruß

Peter

Geschrieben

Welcher Fehler wird dir denn angezeigt?

 

Ich habe den groben Verdacht, das selbst der Aufruf deiner Sub aus einer Function oder einer anderen Sub passieren muss, da sonst der Interpreter / Compiler nicht weiß, wo das Ding anfängt und wo es endet.

Geschrieben

Sorry, ich komme jetzt erst dazu mich zu melden.

 

Verwende ich c:\windows\system32\CSCRIPT.exe erhalte ich die nur bedingt aussagekräftige Aussage "blabla.vbs(8, 36) Kompilierungsfehler in Microsoft VBScript: Anweisungsende erwartet". Damit kann ich leider nix anfangen.

 

Kopiere ich den Code in VB Editor, der mit MS Office 2000 installiert wird, so erhalte ich beim Debuggen bereits in der zweiten Zeile:

On Error Resume Next

"Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig"

 

Hm, jetzt bin so schlau wie vorher.

 

Irgendwelche Ideen?

 

Gruß

Peter

Geschrieben

Ok, jetzt habe ich die richtige als Ursache der Kompilerfehlermeldung lokalisiert.

Dim sRoot, sKey, sValname, sRegTyp as String

Dies sorgt für den Fehler "Anweisungsende erwartet".

 

Warum nur?

Geschrieben

"Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig"

[/Quote]

 

Die Dimensionierung der Variablen solltest du mal lieber in eine Sub oder Function reinpacken.

 

Dann ungefähr so hier:


' Ausführen des Scripts:
' CSCRIPT //X MEIN_SKRIPT.VBS

Option Explicit
On Error Resume Next
Init

Sub Init()
Dim sRoot, sKey, sValname, sRegTyp as String

' Test
sRoot = "HKCU"
sKey = "\Software\123TEST321\"
sValname = "Personal"
sRegTyp = "REG_SZ"

SchreibeRegKey(sRoot, sKey, sValName, sRegType)
End Sub

Sub SchreibeRegKey(Root, Key, Valname, RegTyp)
Dim valx
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
' WSHShell.RegDelete(Root+key+valname)
WSHShell.RegWrite(Root+key+valname)
valx = WshShell.ExpandEnvironmentStrings("\\fileserver\123users\%USERNAME%")
WSHShell.RegWrite Root+Key+valname, valx, RegTyp
WScript.Quit
End Sub
[/Code]

Geschrieben

So, jetzt komme ich Schritt für Schritt weiter.

Ich habe bei Borncity's WSH Bazar einen Anfänger-Kurs der Computerbild zu VBScript gefunden ;)

 

VBScript kennt nur den Variablentyp Variant und somit muss man das 'as String' komplett weglassen.

 

Der nächste Kompilierungsfehler lässt aber nicht auf sich warten. Ich darf die Prozedur nicht mit Klammern aufrufen :( Hmrpf, ist das ein getüftel!

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...