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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164045
Url: https://administrator.de/contentid/164045
Ausgedruckt am: 05.11.2024 um 19:11 Uhr
2 Kommentare
Neuester Kommentar
Ja.
Zuallererst, zum Testen, nicht einfach schauen ob die strComputerDN richtig gefüllt ist, sondern sich den kompletten Befehlsstring ausgeben lassen.
Also
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:
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