skid
Goto Top

VBS Problem mit wshShell

Hallo,

nachdem ich nun einige Stunden damit verbracht und keine Lösung gefunden habe, hoffe ich das Ihr mir weiterhelfen könnt.

Ich habe ein .vbs-Skript in dem ich mit DSMOD den Client, auf dem das Skript ausgeführt wird, in eine Gruppe im AD hinzufügen möchte.
Das Skript sieht so aus:

Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1

Dim wshShell
Dim WScript

Set wshShell = CreateObject("WScript.Shell")  

'Get the NETBIOS name of the domain  
Set objSystemInfo = CreateObject("ADSystemInfo")   
strDomain = objSystemInfo.DomainShortName

' Get the name of the computer  
set objNetwork = createobject("Wscript.Network")  
strComputer = objNetwork.ComputerName

' Call function to return the distinguished name (DN) of the computer  
strComputerDN = getComputerDN(strComputer,strDomain)

wshShell.Run "dsmod Group " & "CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz" & " -addmbr " & strComputerDN , 0, True  

function getComputerDN(byval strComputer,byval strDomain)
	' Function to get the distinguished name of a computer  
	' from the NETBIOS name of the computer (strcomputer)  
	' and the NETBIOS name of the domain (strDomain) using  
	' name translate  

	Set objTrans = CreateObject("NameTranslate")  
	' Initialize name translate using global catalog  
	objTrans.Init ADS_NAME_INITTYPE_GC, ""  
	' Input computer name (NT Format)  
	objTrans.Set ADS_NAME_TYPE_NT4, strDomain & "\" & strComputer & "$"  
	' Get Distinguished Name.  
	getComputerDN = objTrans.Get(ADS_NAME_TYPE_1779)

End Function

Irgendwie wird der dsmod-Befehl nicht ausgeführt. Wenn ich es in eine Dos-Box eintippe funktioniert alles.
Die strComputerDN-Variable wird auch richtig befüllt - das habe ich mir schon über eine MsgBox anzeigen lassen.
Ich habe noch ein weiteres Skript in dem ich auch mit dsmod was mache und da funktioniert der wshShell-Aufruf.
Warum es bei dem einen funktioniert und beim anderen nicht kann ich mir nicht erklären, da der Aufruf der gleiche ist.

Vielleicht habt Ihr noch eine Idee.....?!

SKID

Content-Key: 164045

Url: https://administrator.de/contentid/164045

Ausgedruckt am: 28.03.2024 um 19:03 Uhr

Mitglied: AndreasHoster
AndreasHoster 06.04.2011 um 16:08:03 Uhr
Goto Top
Ja.
Zuallererst, zum Testen, nicht einfach schauen ob die strComputerDN richtig gefüllt ist, sondern sich den kompletten Befehlsstring ausgeben lassen.
Also
msgbox "dsmod Group " & "CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz" & " -addmbr " & strComputerDN   

Dann würde nämlich auffallen, daß Anführungszeichen fehlen.
Laut MS soll es dsmod Group "CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz" ... heißen, bei Dir heißt es dsmod Group CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz
Also mal folgendes ausprobieren:
wshShell.Run "dsmod Group ""CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz"" -addmbr """ & strComputerDN & """" , 0, True   
Mitglied: skid
skid 07.04.2011 um 08:53:13 Uhr
Goto Top
Danke für den Tip !

nachdem ich es jetzt die Anführungszeichen richtig gesetzt habe funktioniert es !!

WshShell.Run  "dsmod Group " & """CN=TESTGRUPPE,OU=Test,DC=xx,DC=yy,DC=zz""" & " -addmbr """ & strComputerDN & """" , 0, True