none
Alterar senha de usuários que não alteram a X dias RRS feed

  • Pergunta

  • Bom dia pessoal,

     

    Pesquisei sobre o assunto e não encontrei nada, por isso compartilho minha necessidade com vocês.

     

    Preciso de um script que altere a senha dos usuários que não a alteram a 60 dias por exemplo.

    Ou seja, um script que consulte o valor "Ultima alteração de senha" e se for superior a X dias, altera a senha.

     

    Agradeço desde já!

     


    quinta-feira, 24 de março de 2011 14:35

Respostas

  • Olá Oliveira,

    Não precisa adaptar não :-D. Criei um que faz o que você precisa, segue abaixo.

    A única coisa que terá que fazer é inserir o nome de logon de todos os seus usuários do domínio (independente da OU que eles estejam) que você deseja que esse script se aplique e coloca-los (um por linha) dentro do arquivo usuarios.txt que você deverá criar. Caso o caminho não seja o descrito no script (C:\Scripts\usuarios.txt) basta alterar essa linha no script indicando o caminho correto do arquivo.

    O script não funciona para usuários que estão com a propriedade de senha "A senha nunca expira" habilitada. Copie o código no bloco de notas e salve com a extenção .vbs

    Nesse script todos os usuários que estiverem com nome de logon no arquivo usuarios.txt e que fizeram a alteração de senha a mais de 60 dias terá setado nas propriedades da conta a opção "Alterar a senha no proximo logon"

     

    Dim oFSO, sArquivo, oArquivo, sTexto, strNomeUsuario, strDominio, objUsuario

    On error resume next

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    sArquivo = "c:\Scripts\usuarios.txt"
    If oFSO.FileExists(sArquivo) Then
    Set oArquivo = oFSO.OpenTextFile(sArquivo, 1)
     Do While Not oArquivo.AtEndOfStream
       sTexto = oArquivo.ReadLine
       If Trim(sTexto) <> "" Then
       strNomeUsuario= sTexto
       UserDN = buscaDN(strNomeUsuario)
       Set objUser = GetObject("LDAP://" & UserDN)

    dtmValue = objUser.PasswordLastChanged
    Tmpwd = int(now - dtmValue)
    Tempo = (Tmpwd - 59)

    If Tempo > 1 Then
       objUser.Put "pwdLastSet", 0
       objUser.SetInfo 
    End If

    End if
     Loop
    oArquivo.Close

    End If

    Function buscaDN(ByVal nomeUsuario)
        Dim oRootDSE, oConnection, oCommand, oRecordSet
        Set oRootDSE = GetObject("LDAP://rootDSE")
        Set oConnection = CreateObject("ADODB.Connection")
        oConnection.Open "Provider=ADsDSOObject;"
        Set oCommand = CreateObject("ADODB.Command")
        oCommand.ActiveConnection = oConnection
        oCommand.CommandText = "<LDAP://" & oRootDSE.get("defaultNamingContext") & _
            ">;(&(objectCategory=User)(samAccountName=" & nomeusuario & "));distinguishedName;subtree"
        Set oRecordSet = oCommand.Execute
        On Error Resume Next
        buscaDN = oRecordSet.Fields("DistinguishedName")
        On Error GoTo 0
        oConnection.Close
        Set oRecordSet = Nothing
        Set oCommand = Nothing
        Set oConnection = Nothing
        Set oRootDSE = Nothing
    End Function

     

    Se lhe foi útil, vote! e marque como resposta!


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    • Sugerido como Resposta Elmo Baraúna domingo, 27 de março de 2011 03:47
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:01
    domingo, 27 de março de 2011 03:47

Todas as Respostas

  • Encontrei um script que consulta a ultima alteração ( PwdLastChanged ) no blog do Glaucio - Link , agora preciso formatar ou adicionar o script que altera a senha destes usuários.
    sexta-feira, 25 de março de 2011 12:27
  • Olá Oliveira,

    Não precisa adaptar não :-D. Criei um que faz o que você precisa, segue abaixo.

    A única coisa que terá que fazer é inserir o nome de logon de todos os seus usuários do domínio (independente da OU que eles estejam) que você deseja que esse script se aplique e coloca-los (um por linha) dentro do arquivo usuarios.txt que você deverá criar. Caso o caminho não seja o descrito no script (C:\Scripts\usuarios.txt) basta alterar essa linha no script indicando o caminho correto do arquivo.

    O script não funciona para usuários que estão com a propriedade de senha "A senha nunca expira" habilitada. Copie o código no bloco de notas e salve com a extenção .vbs

    Nesse script todos os usuários que estiverem com nome de logon no arquivo usuarios.txt e que fizeram a alteração de senha a mais de 60 dias terá setado nas propriedades da conta a opção "Alterar a senha no proximo logon"

     

    Dim oFSO, sArquivo, oArquivo, sTexto, strNomeUsuario, strDominio, objUsuario

    On error resume next

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    sArquivo = "c:\Scripts\usuarios.txt"
    If oFSO.FileExists(sArquivo) Then
    Set oArquivo = oFSO.OpenTextFile(sArquivo, 1)
     Do While Not oArquivo.AtEndOfStream
       sTexto = oArquivo.ReadLine
       If Trim(sTexto) <> "" Then
       strNomeUsuario= sTexto
       UserDN = buscaDN(strNomeUsuario)
       Set objUser = GetObject("LDAP://" & UserDN)

    dtmValue = objUser.PasswordLastChanged
    Tmpwd = int(now - dtmValue)
    Tempo = (Tmpwd - 59)

    If Tempo > 1 Then
       objUser.Put "pwdLastSet", 0
       objUser.SetInfo 
    End If

    End if
     Loop
    oArquivo.Close

    End If

    Function buscaDN(ByVal nomeUsuario)
        Dim oRootDSE, oConnection, oCommand, oRecordSet
        Set oRootDSE = GetObject("LDAP://rootDSE")
        Set oConnection = CreateObject("ADODB.Connection")
        oConnection.Open "Provider=ADsDSOObject;"
        Set oCommand = CreateObject("ADODB.Command")
        oCommand.ActiveConnection = oConnection
        oCommand.CommandText = "<LDAP://" & oRootDSE.get("defaultNamingContext") & _
            ">;(&(objectCategory=User)(samAccountName=" & nomeusuario & "));distinguishedName;subtree"
        Set oRecordSet = oCommand.Execute
        On Error Resume Next
        buscaDN = oRecordSet.Fields("DistinguishedName")
        On Error GoTo 0
        oConnection.Close
        Set oRecordSet = Nothing
        Set oCommand = Nothing
        Set oConnection = Nothing
        Set oRootDSE = Nothing
    End Function

     

    Se lhe foi útil, vote! e marque como resposta!


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    • Sugerido como Resposta Elmo Baraúna domingo, 27 de março de 2011 03:47
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:01
    domingo, 27 de março de 2011 03:47
  • Elmo, obrigado pela ajuda!

    Este script é muito útil, mas no meu caso, preciso alterar a senha destes usuários.

    Muitos são contas de serviços, entre outros casos... enfim, preciso definir uma senha e aplicar p/ estes usuários.

     

    De qualquer forma, obrigado!

    sexta-feira, 1 de abril de 2011 18:48