Что нового

[Сеть, интернет] Удаление значений из LDAP

TaHreHc

Новичок
Сообщения
2
Репутация
0
Доброго времени суток.
Есть задача удалить определенную запись из вкладки Безопасность Учётной записи в Active Directory
Основная часть взята из функции _AD_HasRequiredRights в AD.au3, функция выводит список записей вкладки безопасность, необходима помощь в написании строк удаляющих совпавшее значение из ldap
Код:
Func _AD_MyFunc($sObject)

	If _AD_ObjectExists($sObject) = 0 Then Return SetError(2, 0, 0)
	If StringMid($sObject, 3, 1) <> "=" Then $sObject = _AD_SamAccountNameToFQDN($sObject) 
    	Local $aTrusteeArray, $sTrusteeGroup
	Local $oObject = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sObject)
	If IsObj($oObject) Then
		Local $oSecurity = $oObject.Get("ntSecurityDescriptor")
		Local $oDACL = $oSecurity.DiscretionaryAcl
		For $oACE In $oDACL
			ConsoleWrite($oACE.Trustee & @CRLF)
                        if $oACE.Trustee = 'искомая' then
                               ;удалить
                        endif
		next
	EndIf
	Return 0

EndFunc
 
Автор
TaHreHc

TaHreHc

Новичок
Сообщения
2
Репутация
0
Решение найдено
Код:
Func _AD_DeleteRecordInSecurityInset($sObject,$sRecord)
   If _AD_ObjectExists($sObject) = 0 Then Return SetError(2, 0, 0)
   If StringMid($sObject, 3, 1) <> "=" Then $sObject = _AD_SamAccountNameToFQDN($sObject) ; sAMAccountName provided
   Local $oObject = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sObject)
   Local $oSecurity = $oObject.Get("ntSecurityDescriptor")
   Local $oDACL = $oSecurity.DiscretionaryAcl
   for $oACE In $oDACL
	  If $oACE.Trustee = $sRecord then
		 $oDACL.RemoveAce($oACE)
	  EndIf
   Next
   $oSecurity.DiscretionaryAcl = $oDACL
   $oObject.Put("ntSecurityDescriptor",$oSecurity)
   If @error Then Return SetError(@error, 0, 0)
   $oObject.SetInfo
   If @error Then Return SetError(@error, 0, 0)
EndFunc
 
Верх