none
Script Para Troca do Display Name! RRS feed

  • Pergunta

  • Preciso de um script para modificar o display name de todos os usuários do AD de  maiúsculo para maiúsculo e minúsculo!

    terça-feira, 31 de outubro de 2006 12:31

Respostas

  • Só pra tentar adiantar o seu lado , segue um que converte a string para as iniciais maiusculas(ProperCase), mas a alteração do AD vou ficar devendo agora. Já tentou o script center?

    wscript.echo ProperCase("FABIO DE PAULA JUNIOR")


    FUNCTION ProperCase(strVar)
     'Fábio Jr - fabiopjr(15kg)gmail.com - 2004

     strVar=lcase(strVar)

     arrTMP=split(strVar," ")

     for i=lbound(arrTMP) to ubound(arrTMP)
      if instr("e/de/da/do/das/dos",arrTMP(i))=0 then
       arrTMP(i)=ucase(mid(arrTMP(i),1,1)) & mid(arrTMP(i),2)
      end if
     next
     ProperCase=Join(arrTMP)
    END FUNCTION

    terça-feira, 31 de outubro de 2006 16:08
    Moderador
  • Segue minha contribuição. Não testei, pode conter erros... 
    e o nome da OU precisa ser adaptado. Basta salvar com extensão .VBS


    'by Vinicius Canto <scripterbr at gmail dot com>
    'MVP Visual Developer - Scripting
    '
    ' blog sobre scripting: http://viniciuscanto.blogspot.com


    strTargetOU = "OU=MyOU,DC=MyDomain,DC=com"

    Function ProperCase(strVar)
    'Fábio Jr - fabiopjr(15kg)gmail.com - 2004

    strVar=lcase(strVar)
    arrTMP=split(strVar," ")
    for i=lbound(arrTMP) to ubound(arrTMP)
    if instr("e/de/da/do/das/dos",arrTMP(i))=0 then
    arrTMP(i)=ucase(mid(arrTMP(i),1,1)) & mid(arrTMP(i),2)
    end if
    next
    ProperCase=Join(arrTMP)
    End Function


    wscript.echo strTargetOU
    wscript.echo
    wscript.echo "Changing Display names of users in " & strTargetOU

    Set oTargetOU = GetObject("LDAP://" & strTargetOU)
    oTargetOU.Filter = Array("user")
    For each usr in oTargetOU
    if instr(usr.SamAccountName, "$") = 0 then
    'usr.Put "givenName",
    'usr.Put "sn",
    usr.put "displayName", ProperCase(usr.displayName)
    usr.setinfo
    wscript.echo usr.displayName
    end if
    Next



    []s,

    Vinicius
    quarta-feira, 1 de novembro de 2006 13:57
    Moderador

Todas as Respostas

  • Só pra tentar adiantar o seu lado , segue um que converte a string para as iniciais maiusculas(ProperCase), mas a alteração do AD vou ficar devendo agora. Já tentou o script center?

    wscript.echo ProperCase("FABIO DE PAULA JUNIOR")


    FUNCTION ProperCase(strVar)
     'Fábio Jr - fabiopjr(15kg)gmail.com - 2004

     strVar=lcase(strVar)

     arrTMP=split(strVar," ")

     for i=lbound(arrTMP) to ubound(arrTMP)
      if instr("e/de/da/do/das/dos",arrTMP(i))=0 then
       arrTMP(i)=ucase(mid(arrTMP(i),1,1)) & mid(arrTMP(i),2)
      end if
     next
     ProperCase=Join(arrTMP)
    END FUNCTION

    terça-feira, 31 de outubro de 2006 16:08
    Moderador
  • Vc pode estar incluindo esta consulta. Este script vai retornar os usuário do AD.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT Caption FROM Win32_UserAccount",,48)
    For Each objuser in colItems
        wscript.Echo objuser.Caption
    Next

    quarta-feira, 1 de novembro de 2006 04:26
  • Só uma correção: O script acima não retorna nada do AD, mas sim os usuários locais que o WMI tem acesso.


    []s,


    Vinicius 
    MVP Visual Developer - Scripting
    quarta-feira, 1 de novembro de 2006 13:44
    Moderador
  • Segue minha contribuição. Não testei, pode conter erros... 
    e o nome da OU precisa ser adaptado. Basta salvar com extensão .VBS


    'by Vinicius Canto <scripterbr at gmail dot com>
    'MVP Visual Developer - Scripting
    '
    ' blog sobre scripting: http://viniciuscanto.blogspot.com


    strTargetOU = "OU=MyOU,DC=MyDomain,DC=com"

    Function ProperCase(strVar)
    'Fábio Jr - fabiopjr(15kg)gmail.com - 2004

    strVar=lcase(strVar)
    arrTMP=split(strVar," ")
    for i=lbound(arrTMP) to ubound(arrTMP)
    if instr("e/de/da/do/das/dos",arrTMP(i))=0 then
    arrTMP(i)=ucase(mid(arrTMP(i),1,1)) & mid(arrTMP(i),2)
    end if
    next
    ProperCase=Join(arrTMP)
    End Function


    wscript.echo strTargetOU
    wscript.echo
    wscript.echo "Changing Display names of users in " & strTargetOU

    Set oTargetOU = GetObject("LDAP://" & strTargetOU)
    oTargetOU.Filter = Array("user")
    For each usr in oTargetOU
    if instr(usr.SamAccountName, "$") = 0 then
    'usr.Put "givenName",
    'usr.Put "sn",
    usr.put "displayName", ProperCase(usr.displayName)
    usr.setinfo
    wscript.echo usr.displayName
    end if
    Next



    []s,

    Vinicius
    quarta-feira, 1 de novembro de 2006 13:57
    Moderador
  • Correção....

    Na verdade o script deve ser rodado local no DC.

    quarta-feira, 1 de novembro de 2006 15:01
  • OK. Obrigado! Está conversão de String foi utilizado no script postado abaixo, então foi muito útil. Agradeço a ajuda e atenção!

    quarta-feira, 1 de novembro de 2006 15:45
  • Vinícius desde já agradeço a atenção! O que acontece que preciso mudar todos os dados dos usuários que estão em letras maiúsculas para MM no AD e conseqüentemente Exchange/Catálogo de endereços Outlook. Seu escript está funcionando já testei, em seguida vi que não foi suficiente trocar o display name! Tem uma forma de consultar os propriedades dos campos para tentar inserir FRIST NAME, LAST NAME e E-MAIL nesta troca?

     

     

    Obs: Tenho mais de um nivel de OU!

    quarta-feira, 1 de novembro de 2006 15:54
  • Hmmm... fiquei curioso agora. Pelo que tá no WMI, ele mexe usuários locais. O problema é que um DC não usa usuários locais...

    Queria testar pra ver se funciona mesmo... mas to sem uma VM aqui pra testar. Alguém se habilita?

    []s,

    --
    Vinicius Canto <scripterbratgmaildotcom>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    sexta-feira, 3 de novembro de 2006 17:04
    Moderador
  • Só uma dica: comece a procurar aqui também:
    http://www.microsoft.com/technet/scriptcenter/scripts/ad/users/default.mspx
    Tem quilos de scripts prontos... só precisa combinar e adaptar pro que vc precisa.

    Esse aqui eu também não testei. Estou sem minhas VMs.


    'by Vinicius Canto <scripterbr at gmail dot com>
    'MVP Visual Developer - Scripting
    '
    ' blog sobre scripting: http://viniciuscanto.blogspot.com


    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"

    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection

    objCommand.CommandText = _
        "<LDAP://dc=NA,dc=fabrikam,dc=com>;" & _
        "(&(objectCategory=user)(cn=ATL*));" & _
        "ADsPath;subtree"
     
    Set objRecordSet = objCommand.Execute

    While Not objRecordSet.EOF
        strADsPath = objRecordSet.Fields("ADsPath")
        Set objUser = GetObject(strADsPath)
        objUser.Put "displayName", ProperCase(objUser.displayName)
        objUser.Put "givenName", ProperCase(objUser.givenName)
        objUser.Put "initials", ProperCase(objUser.initials)
        objUser.Put "sn", ProperCase(objUser.sn)
        objUser.Put "userPrincipalName", ProperCase(objUser.userPrincipalName)
        objComputer.SetInfo
        objRecordSet.MoveNext
    Wend
    Wscript.Echo objRecordSet.RecordCount & " computers objects modified."

    objConnection.Close

    Function ProperCase(strVar)
     'Fábio Jr - fabiopjr(15kg)gmail.com - 2004

     strVar=lcase(strVar)
     arrTMP=split(strVar," ")
     for i=lbound(arrTMP) to ubound(arrTMP)
      if instr("e/de/da/do/das/dos",arrTMP(i))=0 then
       arrTMP(i)=ucase(mid(arrTMP(i),1,1)) & mid(arrTMP(i),2)
      end if
     next
     ProperCase=Join(arrTMP)
    End Function


    []s,

    --
    Vinicius Canto <scripterbratgmaildotcom>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com

    sexta-feira, 3 de novembro de 2006 17:23
    Moderador
  • Oi Vinicius....

    Eu tinha testado antes em minha VM com Windows 2003. Aparentemente deu certo......

    domingo, 5 de novembro de 2006 19:15
  • Vinicius,

     

                Fiz o teste com este script, mais não obtive sucesso! Não entendi a linha: <LDAP://dc=na,dc=LABORATORIO,dc=com> quando coloco os dados do meu ambiente da erro. O primeiro campo DC=NA?  Se altero para OU=nome ou, aparece a mensagem 0 computer objects modified se deixo igual a NA o erro é table does not exist, code: 80040e37, surce: provides

    terça-feira, 7 de novembro de 2006 17:05