Usuário com melhor resposta
Mudar valor de atributo

Pergunta
-
Respostas
-
Olá,
Utilize o script abaixo para gerar um arquivo no formato correto:
Const ADS_SCOPE_SUBTREE = 2
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Usuarios.csv", True)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
"WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
nome = objRecordSet.Fields("name").Value
descricao = objRecordSet.Fields("description").Value
cn = objRecordSet.Fields("distinguishedname").Value
OutPutFile.WriteLine nome & ";" & cn
objRecordSet.MoveNext
Loop
'===============================================================================================
Utilize este script para atualizar os dados da planilha no AD
Const ForReading = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objExcel = CreateObject("Excel.Application")
'caminho do arquivo excel
Set objWorkbook = objExcel.Workbooks.Open ("c:\Lista_de_Usuarios.csv")
intRow = 2
Do Until objExcel.Cells(intRow,1).Value = ""
nome = objExcel.Cells(intRow, 1).Value
cn = objExcel.Cells(intRow, 2).Value
cargo = objExcel.Cells(intRow, 3).Value
departamento = objExcel.Cells(intRow, 4).Value
telefone =objExcel.Cells(intRow, 5).Value
Set objUser = GetObject("LDAP://" & cn)
objUser.TelephoneNumber = telefone
objUser.Description = cargo
objUser.Title = cargo
objUser.Department = departamento
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
Altere para os atributos que você desejar.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Fábio JrModerator terça-feira, 27 de novembro de 2012 13:45
Todas as Respostas
-
Olá,
Verifique o script abaixo:
Const ForReading = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
"WHERE objectCategory='user' "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
cn = objRecordSet.Fields("distinguishedname").Value
Set objUser = GetObject("LDAP://" & cn)
objUser.extensionAttribute4 = "valor"
objUser.SetInfo
Loop
O script acima insere o valor "valor" em todos os usuáriod do dominio contoso.local
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique -
Prezado Jesiel,
Fiz os testes porém não funcionou, alterei o script de acordo com o meu domain, ele roda, não dá nenhum erro porém o valor do atributo não aparece, o que pode ser?
Obrigado.
------------------------------------------------------------------------------------------------------------------------------------------------
Const ForReading = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=lab01,dc=com,dc=br' " & _
"WHERE objectCategory='user' "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
cn = objRecordSet.Fields("distinguishedname").Value
Set objUser = GetObject("LDAP://" & cn)
objUser.extensionAttribute4 = "teste1234"
objUser.SetInfo
Loop
---------------------------------------------------------------------------------------------------------------------------------------------------
Thales Laray -
-
Olá,
Thales, o nome do seu dominio é lab01.com.br ?
Fiz os testes e funcionou... (só fiz uma correção no final e coloquei um alerta para checar se está pegando os nomes corretamente)
Segue abaixo:
Const ForReading = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
"WHERE objectCategory='user' "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
cn = objRecordSet.Fields("distinguishedname").Value
'somente para verificar se está mostrando os usuários, se funcionar, pode apagar a linha abaixo
wscript.echo cn
Set objUser = GetObject("LDAP://" & cn)
objUser.extensionAttribute4 = "valor"
objUser.SetInfo
objRecordSet.MoveNext
Loop
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique- Editado Jesiel S. Pereira quinta-feira, 13 de agosto de 2009 15:47
-
Estou testando em meu AD de testes, cujo nomé é o lab01.com.br
Só alterei a linha do dominio para:
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=lab01,dc=com,dc=br' " & _
"WHERE objectCategory='user' "
E deu essa msg de erro abaixo na linha em que eu especifiquei o dominio.
http://www.computerperformance.co.uk/Logon/code/code_800A0409.htm
Thales Laray -
-
Olá,
Utilize o script abaixo para gerar um arquivo no formato correto:
Const ADS_SCOPE_SUBTREE = 2
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Usuarios.csv", True)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=contoso,dc=local' " & _
"WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
nome = objRecordSet.Fields("name").Value
descricao = objRecordSet.Fields("description").Value
cn = objRecordSet.Fields("distinguishedname").Value
OutPutFile.WriteLine nome & ";" & cn
objRecordSet.MoveNext
Loop
'===============================================================================================
Utilize este script para atualizar os dados da planilha no AD
Const ForReading = 1
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objExcel = CreateObject("Excel.Application")
'caminho do arquivo excel
Set objWorkbook = objExcel.Workbooks.Open ("c:\Lista_de_Usuarios.csv")
intRow = 2
Do Until objExcel.Cells(intRow,1).Value = ""
nome = objExcel.Cells(intRow, 1).Value
cn = objExcel.Cells(intRow, 2).Value
cargo = objExcel.Cells(intRow, 3).Value
departamento = objExcel.Cells(intRow, 4).Value
telefone =objExcel.Cells(intRow, 5).Value
Set objUser = GetObject("LDAP://" & cn)
objUser.TelephoneNumber = telefone
objUser.Description = cargo
objUser.Title = cargo
objUser.Department = departamento
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
Altere para os atributos que você desejar.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Fábio JrModerator terça-feira, 27 de novembro de 2012 13:45