none
Атрибуты объектов AD windows server 2008 R2 для VBS скриптов или PowerShell RRS feed

  • Вопрос

  • Здравствуйте!

    где я мог посмотреть список и описание атрибутов для объектов AD, а именно для пользователей и компьютеров, чтоб я мог работать через VBS скрипты или PowerShell?

    • Перемещено Yuriy Lenchenkov 10 октября 2012 г. 13:12 в соответствующий раздел (От:Windows server 2008R2/2008)
    1 октября 2012 г. 9:50

Все ответы

  • сам список со значениями можно посмотреть на вкладке attribute editor свойств объекта в aduc, или в schema editor. информацию легко найти на офсайте, например http://msdn.microsoft.com/en-us/library/windows/desktop/ms683980(v=vs.85).aspx

    1 октября 2012 г. 9:55
  • я беру 0x00000040 ADS_UF_PASSWD_CANT_CHANGE - запрет смены пароля пользователем, перевожу в десятичную систему, получается 64, прописываю команду в VBS скрипте objUser.UserAccountControl = 64, но галочку не ставит, вопрос - почему это так может быть?
    и я так понимаю, что надо все параметры сложить и прописать в команде?
    2 октября 2012 г. 4:12
  • и я так понимаю, что надо все параметры сложить и прописать в команде?
    именно
    2 октября 2012 г. 5:40
    Отвечающий
  • ну вот я все складываю, а именно: отключаю "Требовать смену пароля...", "Отключить учетную запись", включаю "срок действия пароля не ограничен" и "запретить смену пароля пользователем", получает вот такая команда: objUser.UserAccountControl = 66112, но параметр "запретить смену пароля пользователем" не ставится галочка, а на "срок действия пароля не ограничен" галочка прописывается.

    PS извините конечно, но я в скриптописании и администрировании новичек.

    еще вот полный код скрипта:

    Set objExcel = CreateObject("Excel.Application") 
    Set objWorkbook = objExcel.Workbooks.Open _ 
        ("H:\new\tc1.xls") 
     
    intRow = 2 
     
    Do Until objExcel.Cells(intRow,1).Value = ""
    Set objOU = GetObject("LDAP://ou=ТЦ-1, dc=4school, dc=local") 
    Set objUser = objOU.Create _ 
            ("User", "cn=" & objExcel.Cells(intRow, 1).Value) 
        objUser.sAMAccountName = objExcel.Cells(intRow, 2).Value 
        objUser.GivenName = objExcel.Cells(intRow, 3).Value 
        objUser.SN = objExcel.Cells(intRow, 4).Value 
    	objUser.displayname = objExcel.Cells(intRow, 7).Value
    	objUser.UserPassword = objExcel.Cells(intRow, 9).Value
    	objUser.UserPrincipalName = objExcel.Cells(intRow, 10).Value
    	objUser.UserAccountControl = 66112
    
        objUser.SetInfo 
        intRow = intRow + 1 
    Loop 
     
    objExcel.Quit 
    то что берется из файла все прописывается, а вот именно команда 
    objUser.UserAccountControl
    не хочет нормально работать



    2 октября 2012 г. 8:23
  • вообще подобные вопросы лучше задавать в веточке Windows Scripting

    =====

    PASSWD_CANT_CHANGE
    Note You cannot assign this permission by directly modifying the UserAccountControl attribute. For information about how to set the permission programmatically, see the "Property flag descriptions" section.
    0x0040 64

    http://support.microsoft.com/kb/305144

    почитайте последнюю ссылочку, в частности там будет ссылка на мсдн где приведена готовая VBS процедура для установки нужного атрибута

    • Изменено Svolotch 2 октября 2012 г. 9:04
    2 октября 2012 г. 8:58
  • у меня почему то не открывается эта ссылка http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/modifying_user_cannot_change_password_ldap_provider.asp , если кому то не сложно, не могли бы вы скинуть сюда описание этого атрибута?
    3 октября 2012 г. 2:23
  • при выполнении данного скрипта:

    '******************************************************************************
    '
    '    SetUserCannotChangePassword
    '
    '    Sets the "User Cannot Change Password" permission using the LDAP provider
    '    to the specified setting. This is accomplished by finding the existing
    '    ACEs and modifying the AceType. The ACEs should always be present, but
    '    it is possible that the default DACL excludes them. This function will not
    '    work correctly if both ACEs are not present.
    '
    '    strUserDN - A string that contains the LDAP ADsPath of the user object to
    '    modify.
    '
    '    strUsername - A string that contains the user name to use for
    '    authorization. If this is an empty string, the credentials of the current
    '    user are used.
    '
    '    strPassword - A string that contains the password to use for authorization.
    '    This is ignored if strUsername is empty.
    '
    '    fCannotChangePassword - Contains the new setting for the privilege.
    '    Contains True if the user cannot change their password or False if
    '    the can change their password.
    '
    '******************************************************************************
    Sub SetUserCannotChangePassword(strUserDN As String, strUsername As String, strPassword As String, fUserCannotChangePassword As Boolean)
        Dim oUser As IADs
        Dim oSecDesc As IADsSecurityDescriptor
        Dim oACL As IADsAccessControlList
        Dim oACE As IADsAccessControlEntry
        
        fEveryone = False
        fSelf = False
        
        If "" <> strUsername Then
            Dim dso As IADsOpenDSObject
            
            ' Bind to the group with the specified user name and password.
            Set dso = GetObject("LDAP://ou=ТЦ-1, dc=4school, dc=local")
            Set oUser = dso.OpenDSObject(strUserDN, strUsername, strPassword, 1)
        Else
            ' Bind to the group with the current credentials.
            Set oUser = GetObject(strUserDN)
        End If
        
        Set oSecDesc = oUser.Get("ntSecurityDescriptor")
        Set oACL = oSecDesc.DiscretionaryAcl
        
        ' Modify the existing entries.
        For Each oACE In oACL
            If UCase(oACE.ObjectType) = UCase(CHANGE_PASSWORD_GUID) Then
                If oACE.Trustee = "Everyone" Then
                    ' Modify the ace type of the entry.
                    If fUserCannotChangePassword Then
                        oACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
                    Else
                        oACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
                    End If
                End If
            
                If oACE.Trustee = "NT AUTHORITY\SELF" Then
                    ' Modify the ace type of the entry.
                    If fUserCannotChangePassword Then
                        oACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
                    Else
                        oACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
                    End If
                End If
            End If
        Next
        
        ' Update the ntSecurityDescriptor property.
        oUser.Put "ntSecurityDescriptor", oSecDesc
        
        ' Commit the changes to the server.
        oUser.SetInfo
    End Sub

    появляется ошибка:

    ---------------------------
    Windows Script Host
    ---------------------------
    Сценарий:	F:\SOFT\scripts\new\password.vbs
    Строка:	26
    Символ:	43
    Ошибка:	Предполагается наличие ')'
    Код:	800A03EE
    Источник: 	Ошибка компиляции Microsoft VBScript
    
    ---------------------------
    ОК   
    ---------------------------

    в чем может быть проблема?

    4 октября 2012 г. 1:53
  • переношу тему в scripting, возможно там помогут

    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий

    10 октября 2012 г. 13:11
  • Попробуйте убрать все As String и As Boolean, оставьте только название переменных.


    Vladimir Zelenov | http://systemcenter4all.wordpress.com

    10 октября 2012 г. 13:43