Usuário com melhor resposta
Script Para Troca do Display Name!

Pergunta
-
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 - 2004strVar=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 -
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
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 - 2004strVar=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 -
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 -
-
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 -
-
-
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!
-
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 -
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 -
-
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