VBS Script AD Gruppe mit Umlaut auslesen
Hallo,
folgendes Problem, vielleicht hatte das schon jemand.
Wir haben unser Active Directoy, dies ist Deutsch installiert worden.
Also gibts standard Gruppen wie:
Domänencomputer
Domänenuser
und sowas mit Umlaut im Namen
ich will ein VBS Script grad bauen, das mit die Member auflistet. klappt auch ohne Probleme,
nur bei Gruppen mit dem ä drin also umlauten klappts nicht.
Und da das Standard Default Names sind werde ich sicher nicht die Namen umbennen im AD.
Gibt es eine andere Möglichkeit?
Oberer Teil wird nur Datum definiert ausgelesen, dann AD Daten ausgelesen, dann in ein txt file geschrieben, unten die funktion ermittelt aktuelles arbeits Directory
somit speichert er txt file im selben dir wo das vbsscript gespeichert (gestartet) wurde.
folgendes Problem, vielleicht hatte das schon jemand.
Wir haben unser Active Directoy, dies ist Deutsch installiert worden.
Also gibts standard Gruppen wie:
Domänencomputer
Domänenuser
und sowas mit Umlaut im Namen
ich will ein VBS Script grad bauen, das mit die Member auflistet. klappt auch ohne Probleme,
nur bei Gruppen mit dem ä drin also umlauten klappts nicht.
Und da das Standard Default Names sind werde ich sicher nicht die Namen umbennen im AD.
Gibt es eine andere Möglichkeit?
On Error Resume Next
SetLocale("de-de")
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
sMonat = Month(Date)
If sMonat < 10 Then
sMonat = "0" & sMonat
End If
sDay = Day(Date)
If sDay < 10 Then
sDay = "0" & sDay
End If
sStunde = hour(time)
If sStunde < 10 Then
sStunde = "0" & sStunde
End If
sMinute = Minute(time)
If sMinute < 10 Then
sMinute = "0" & sMinute
End If
sDate = Year(Date) & "." & sMonat & "." & sDay & "-" & sStunde & sMinute
wscript.echo sDate
Dim objDSE, strDefaultDN, strDN, objContainer, objChild
'GroupNameString = "CN=Dom"&Chr(195)&Chr(164)&"nencomputer,OU=Users,DC=domain,DC=com" '### Test per chr aber geht auch nicht
GroupNameString = "CN=Domänencomputer,OU=Users,DC=domain,DC=com"
wscript.echo GroupNameString
'wscript.quit '## DEBUG
LDAPvar = "LDAP://" & GroupNameString
sTEMPDATA = LDAPvar & vbCrLf
'wscript.echo LDAPvar
Set objGroup = GetObject(LDAPvar)
objGroup.GetInfo
arrMemberOf = objGroup.GetEx("member")
WScript.Echo "Members:"
For Each strMember in arrMemberOf
'WScript.echo strMember
ArrayMemberOne = Split(strMember,",")
ArrayMemberTwo = Split(ArrayMemberOne(0),"=")
Wscript.echo ArrayMemberTwo(1) ' & "," & strMember
sTEMPDATA = sTEMPDATA & ArrayMemberTwo(1) & "," & strMember & vbCrLf
Next
Const ForWritingFile = 2
FileName = WorkingDir() & sDate & "_AD_Gruppe.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
set FileWrite = objFSO.OpenTextFile(FileName, ForWritingFile, true)
FileWrite.WriteLine(sTEMPDATA)
FileWrite.Close
function WorkingDir()
Dim sWorkingDir
Dim sLeftString
Dim sLenString
sWorkingDir = WScript.ScriptFullName
sLeftString = Right(sWorkingDir,1)
Do Until sLeftString = "\"
sLenString = Len(sWorkingDir)-1
sWorkingDir = Left(sWorkingDir,sLenString)
sLeftString = Right(sWorkingDir,1)
Loop
WorkingDir = sWorkingDir
end function
Oberer Teil wird nur Datum definiert ausgelesen, dann AD Daten ausgelesen, dann in ein txt file geschrieben, unten die funktion ermittelt aktuelles arbeits Directory
somit speichert er txt file im selben dir wo das vbsscript gespeichert (gestartet) wurde.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41964917748
Url: https://administrator.de/contentid/41964917748
Ausgedruckt am: 21.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
Das liegt nicht am Umlaut, die Gruppen Domänen-Benutzer und Domänen-Computer sind die primären Gruppen der User/Computer deswegen ist die member Property bei den Gruppen leer die Gruppe steht nämlich nur in der primaryGroupID property der Objekte und nicht in memberOf.
Wenn du alle User brauchst dessen primäre Gruppe z.B. die der Domänen-Benutzer ist dann hilft dir das hier
Wenn du alle User brauchst dessen primäre Gruppe z.B. die der Domänen-Benutzer ist dann hilft dir das hier
Dim adoCommand, adoConnection
Dim varBaseDN, varFilter
Dim objRootDSE, varDNSDomain, adoRecordset
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://RootDSE")
varDNSDomain = objRootDSE.Get("defaultNamingContext")
varBaseDN = "<LDAP://" & varDNSDomain & ">"
' Filter
varFilter = "(primaryGroupID=513)"
' Construct the LDAP syntax query.
adoCommand.CommandText = varBaseDN & ";" & varFilter & ";sAMAccountName;Subtree"
adoCommand.Properties("Page Size") = 10000
adoCommand.Properties("Timeout") = 5
Set adoRecordset = adoCommand.Execute
if adoRecordset.RecordCount > 0 then
While Not adoRecordset.EOF
MsgBox adoRecordset("sAMAccountName")
adoRecordset.MoveNext
Wend
else
msgbox "Keine Mitglieder gefunden",vbExclamation
End if
adoRecordset.Close
adoConnection.Close