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-Key: 353796

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

Printed on: April 24, 2024 at 13:04 o'clock

Mitglied: 134464
134464 Nov 06, 2017 updated at 10:24:40 (UTC)
Goto Top
objectClass='user'
Eine Gruppe ist ja auch nicht vom Typ "User" face-wink

Thank God it's monday.
Member: it4baer
it4baer Nov 06, 2017 at 10:26:31 (UTC)
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...
Mitglied: 134464
134464 Nov 06, 2017 updated at 10:36:52 (UTC)
Goto Top
objectCategory = "group"
reicht.
Zieh dir einfach ein bisschen LDAP Syntax rein und schau dir die AD Attribute der Gruppen an ...!
Member: emeriks
emeriks Nov 06, 2017 at 10:57:43 (UTC)
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.
Member: it4baer
it4baer Nov 06, 2017 updated at 12:26:23 (UTC)
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
Mitglied: 134464
Solution 134464 Nov 06, 2017 updated at 12:45:36 (UTC)
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
Member: emeriks
emeriks Nov 06, 2017 at 12:52:38 (UTC)
Goto Top
Mitglied: 134464
134464 Nov 06, 2017 at 13:01:21 (UTC)
Goto Top
Eben, das ist noch einer voll vom Wochenende face-wink.