Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


farlow
что-нить типа такого:
Код: Выделить весь код
Set objWSH = CreateObject("WScript.Shell")
UserName = objWSH.ExpandEnvironmentStrings("%USERNAME%")
Echo getGroupsTel(getUserOU(UserName), 50)

' Список групп с телефонами
' OrgUnitDN - имя группы в формате LDAP
' NumSpace  - количество символов под имя группы

Function getGroupsTel (OrgUnitDN, NumSpace)
	Const ADS_SCOPE_SUBTREE = 1
	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 Name, ManagedBy " & _
		"FROM 'LDAP://" & OrgUnitDN & "' " & _
		"WHERE objectCategory='group'"
	Set objRecordSet = objCommand.Execute
	objRecordSet.MoveFirst
	Do Until objRecordSet.EOF
		nam = objRecordSet.Fields("Name").Value
		nam = Mid(nam, 1, NumSpace)
		man = objRecordSet.Fields("ManagedBy").Value
		If man<>"" Then
			ans = ans & vbCrLf & _
				nam & Space(NumSpace-Len(nam)) & _
				getUserTel(man)
		End If
		objRecordSet.MoveNext
	Loop
	getGroupsTel = ans
End Function

' Телефон группы
' userDN - имя пользователя в формате LDAP

Function getUserTel(userDN)
    Set oUser = GetObject("LDAP://" & UserDN)
    getUserTel = oUser.TelephoneNumber
End Function

' OU пользователя в формате LDAP
' userName - Имя пользователя (LoginName)

Function getUserOU (userName)
	Const ADS_SCOPE_SUBTREE = 10
	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://" & getDomainDN & "' " & _
		"WHERE objectCategory='user' AND sAMAccountName='" & userName & "'"
	Set objRecordSet = objCommand.Execute
	objRecordSet.MoveFirst
	Do Until objRecordSet.EOF
		ans = objRecordSet.Fields("distinguishedName").Value
		objRecordSet.MoveNext
	Loop
	getUserOU = Mid(ans ,InStr(ans,",")+1)
End Function

' Домен текущего пользователя

Function getDomainDN
	DCs = Split(objWSH.ExpandEnvironmentStrings("%USERDNSDOMAIN%"), ".")
	For Each DC in DCs
		DCString = DCString & "dc=" & DC & ","
	Next
	getDomainDN=Left(DCString, Len(DCString)-1)
End Function

Отправлено: 08:10, 15-08-2007 | #15