it4baer
Goto Top

Powershell in VBA

Hallo,

kann mir jemand helfen das zu übersetzen?

ich möchte gerne eine Ausgabe in VBScript machen. Der Befehl ist:
get-adgroup -Filter 'GroupCategory -eq "Security" -and Name -like "FTCCKSGJW"' | Get-ADGroupMember | Format-Table -Property SamAccountName,Name,Department -AutoSize

und gibt mir User in der Gruppe FTCCKSGJW zurück...

mit einem VBA-Select kann ich auch User zurück geben
objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE objectCategory='person' AND objectClass='user' AND sAMAccountName = 'USER' "

aber wenn ich den Select "logisch" umbaue, dann kommt einfach "nichts" <- also so wie wenn der Select nichts findet

objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE GroupCategory='Security' AND objectClass='user' AND Name = 'FTCCKSGJW' "

schon vorab Vielen Dank für die Hilfe

Gruß

Content-ID: 353796

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

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

134464
134464 06.11.2017 aktualisiert um 11:24:40 Uhr
Goto Top
objectClass='user'
Eine Gruppe ist ja auch nicht vom Typ "User" face-wink

Thank God it's monday.
it4baer
it4baer 06.11.2017 um 11:26:31 Uhr
Goto Top
ups... das war ein CopyPaste Fehler...

aber auch

objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE GroupCategory='Security' AND Name = 'FTCCKSGJW' "

gibt nicht die erwartete Meldung zurück, sondern einfach NICHTS...
134464
134464 06.11.2017 aktualisiert um 11:36:52 Uhr
Goto Top
objectCategory = "group"
reicht.
Zieh dir einfach ein bisschen LDAP Syntax rein und schau dir die AD Attribute der Gruppen an ...!
emeriks
emeriks 06.11.2017 um 11:57:43 Uhr
Goto Top
get-adgroup -Filter 'GroupCategory -eq "Security" -and Name -like "FTCCKSGJW"' | Get-ADGroupMember | Format-Table -Property SamAccountName,Name,Department -AutoSize
objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE objectCategory='person' AND objectClass='user' AND sAMAccountName = 'USER' "
objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE GroupCategory='Security' AND objectClass='user' AND Name = 'FTCCKSGJW' "
Das sind aber viele copy&paste Fehler! face-wink

Einfach nur
objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE sAMAccountName = 'FTCCKSGJW'"  
sollte es auch richten.

Wie ist der Wert von "strLDAP" ?

E.
it4baer
it4baer 06.11.2017 aktualisiert um 13:26:23 Uhr
Goto Top
Wie ist der Wert von "strLDAP" ?
Dim oRoot
Set oRoot = GetObject("LDAP:rootDSE")
Dim sDomain
sDomain = oRoot.Get("defaultNamingContext")
Dim strLDAP
strLDAP = "LDAP:
" & sDomain


objCommand.CommandText = "SELECT * FROM '" & strLDAP & "' WHERE sAMAccountName = 'FTCCKSGJW'"

hier erhalte ich die Gruppe zurück... <- was schon mal ein Schritt in die richtige Richtung ist...
Aber nicht die Member...

evtl. mach ich bei der Ausgabe einen Fehler?

    Set objRecordSet = objCommand.Execute
    objRecordSet.Movefirst

    Do Until objRecordSet.EOF
        Set oUser = GetObject(objRecordSet.Fields("aDSPath"))  

        res = res & """KID"": """ & oUser.samAccountName & """, "  
        res = res & """Name"": """ & oUser.DisplayName & """, "  
        res = res & """Mail"": """ & oUser.mail & """, "  

        objRecordSet.MoveNext

    Loop


    Debug.Print res
134464
Lösung 134464 06.11.2017 aktualisiert um 13:45:36 Uhr
Goto Top
Da dein Recordset nur eine Gruppe zurückgibt ist deine Schleife hier sinnlos face-wink.
Hol dir die Eigenschaft member der Gruppe, dort stehen die User drin.
Set oGroup = GetObject(objRecordSet.Fields("aDSPath"))   
oGroup.GetInfo
for each member in oGroup.GetEx("member")  
    set oUser = GetObject("LDAP://" & strMember)  
    msgbox oUser.SamAccountName
Next
emeriks
emeriks 06.11.2017 um 13:52:38 Uhr
Goto Top
134464
134464 06.11.2017 um 14:01:21 Uhr
Goto Top
Eben, das ist noch einer voll vom Wochenende face-wink.