AMD Ryzen 5 7600X | Asus Prime X670-P | Corsair Vengeance 2x 16GB DDR5 PC5200 | XFX Speedser MERC 310 AMD 7900 XTX| http://wvdburgt.nl
Dus script waarbij ik alleen het IP adres of pc naam hoef in te voeren en wanneer ik het draai, de username of complete naam naar voren komt.
-- My Gaming Rig Power -- -- <SG> Diabolic --
http://gallery.technet.mi...7a-492d-ad6c-957b0997d1ba
--- Systeembeheerdersdag --- Voedselintolerantie ---
-- My Gaming Rig Power -- -- <SG> Diabolic --
ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| On Error Resume Next
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Current User Name: " & WshNetwork.UserName
'select user in AD en verkrijg benodigde info
Set objUser = GetObject ("LDAP://CN=Wieger van der Burgt,OU=NL,OU=Users,OU=MyMicro Group,DC=replacedirect,DC=com")
objUser.GetInfo
'laat title, department en company zien
strTitle = objUser.Get("title")
strDepartment = objUser.Get("Department")
strCompany = objUser.Get("company")
WScript.echo "title: " & strTitle
WScript.echo "Department: " & strDepartment
WScript.echo "company: " & strCompany |
Het probleem zit hem in het volgende: Ik wil dmv:
1
2
| Set objUser = GetObject ("LDAP://CN=Wieger van der Burgt,OU=NL,OU=Users,OU=MyMicro Group,DC=replacedirect,DC=com")
objUser.GetInfo |
de Het bedrijf, afdeling en titel uitlezen. Hiermee wil ik straks een gepersonaliseerde handtekening maken.
Probleem is dat bij het LDAP commando ik een volledige naam nodig heb. Ik heb even gekeken naar de scripjes die gelinkt werden. Een daarvan is Powershell. Hoewel ik dat ook liever gebruik zit ik met vrijwel alleen XP clients en 2003 servers. Het ander script verwacht het wachtwoord van de gebruiker. Ik wil het script zodanig maken dat dit op de achtergrond draait en geen AD wachtwoorden nodig heeft. Toch bedankt voor de moeite.
AMD Ryzen 5 7600X | Asus Prime X670-P | Corsair Vengeance 2x 16GB DDR5 PC5200 | XFX Speedser MERC 310 AMD 7900 XTX| http://wvdburgt.nl
Je hebt de logon naam (samaccountname) dus kun je nu ook een mooie functie erin bouwen die keurig netjes jouw DN ophaalt uit de AD, zodat je de volledige user info tevoorschijn kan toveren.
Iets als dit, maar dan voor users. Hoe je dat doet mag je met deze voorzet zelf verzinnen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| Function FindGroup(strGroup) Const ADS_SCOPE_SUBTREE = 2 Set objRootDSE = GetObject("LDAP://RootDSE") strDefaultDomain = objRootDSE.Get("defaultNamingContext") Dim objConnection, objCommand, objRecordSet Dim strDN, ArrPath, intLength, intNameLength Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = _ "SELECT distinguishedName FROM 'LDAP://" & strDefaultDomain & "' WHERE objectCategory='group' " & _ "AND sAMAccountName='" & strGroup & "'" Set objRecordSet = objCommand.Execute if objRecordSet.EOF then FindGroup = Empty else objRecordSet.MoveFirst Do Until objRecordSet.EOF FindGroup = objRecordSet.Fields("distinguishedName").Value objRecordSet.MoveNext Loop end if End Function |
Bij dit soort toepassingen moet je gewoon eerst in pseudo-code je programmaflow een keer uittekenen zodat je in beeld hebt wat je allemaal moet verzamelen en ophalen aan gegevens voordat je iets weg kan schrijven.
En dan wordt het zoeken naar bestaande oplossingen opeens een stuk makkelijker
[ Voor 12% gewijzigd door alt-92 op 12-07-2011 10:31 ]
ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device
Stap 1: Jouw functie geplakt onderaan mijn script (als ik het goed herinner is het bij vbscript onderaan alleen ik script ook in powershell en perl dus ik ben nog al eens verward)
Stap 2: Daarna heb ik je functie als volgt aangeroepen boven aan in mijn script:
1
2
3
4
| Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Current User Name: " & WshNetwork.UserName
loginName = WshNetwork.UserName
wscript.echo "functie: "& FindGroup(loginName) |
Ik haal dus de username op en roep dan de functie aan maar de value blijft leeg.
Ik heb ook al geprobeerd door:
1
2
| zoekFullName = FindGroep(lgoinName) wscript.echo "functie2: "&zoekFullName |
Moet ik rechten hebben om dat op te vragen of wat gaat er fout?
AMD Ryzen 5 7600X | Asus Prime X670-P | Corsair Vengeance 2x 16GB DDR5 PC5200 | XFX Speedser MERC 310 AMD 7900 XTX| http://wvdburgt.nl
[ Voor 22% gewijzigd door alt-92 op 12-07-2011 11:26 ]
ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Retrieve User DN.
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName
' Bind to user object.
Set objUser = GetObject("LDAP://" & strUserDN)
' Display user NT name (sAMAccountName), Distinguished Name,
' Common Name, Display Name, first name, and last name.
' The last three might not have values.
Wscript.Echo "sAMAccountName: " & objUser.sAMAccountName
Wscript.Echo "Distinguished Name: " & objUser.distinguishedName
Wscript.Echo "Common Name: " & objUser.cn
Wscript.Echo "Display Name: " & objUser.displayName
Wscript.Echo "First Name: " & objUser.givenName
Wscript.Echo "Last Name: " & objUser.sn |
Allen bedankt voor de hulp
[ Voor 81% gewijzigd door wvdburgt op 12-07-2011 16:24 . Reden: gevonden:) ]
AMD Ryzen 5 7600X | Asus Prime X670-P | Corsair Vengeance 2x 16GB DDR5 PC5200 | XFX Speedser MERC 310 AMD 7900 XTX| http://wvdburgt.nl