none
Preecnher campo "postOfficeBox" de vários usuários no AD RRS feed

  • Pergunta

  • Pessoal,

    Tenho uma simples planilha.xlsx com apenas duas colunas, uma com o login de usuários e outra com os números do CPF.

    Preciso preencher o campo P. O. Box das propriedades dos usuários no AD com o CPF, como posso fazer isso com script.vbs?

    Obrigado

    segunda-feira, 21 de julho de 2014 18:45

Respostas

  • Se quiser tentar em PowerShell.

    1) Copie as duas colunas da sua planilha e cole em um arquivo txt (os dados ficarão separados por {tab}), chamaremos este arquivo de cpf.txt

    Meu cpf.txt ficou assim:

    login	cpf
    technet	111.222.333-55
    isa.0001	222.333.111-45
    

    2) Coloque o arquivo cpf.txt na mesma pasta do script powershell

    3) Código do script PowerShell

    Import-Module ActiveDirectory
    
    $ArquivoConteudo = Import-Csv (join-path $PSScriptRoot "cpf.txt") -Delimiter `t 
    
    foreach($Registro in $ArquivoConteudo){
    
        Set-ADUser -Identity $Registro.login -PostalCode $Registro.cpf
        
    
    }
    Fiz o teste e funcionou.


    Fábio de Paula Junior

    • Marcado como Resposta Marco_AM quarta-feira, 23 de julho de 2014 12:05
    terça-feira, 22 de julho de 2014 14:10
    Moderador
  • Olá Fabio, na verdade consegui uma maneira mais simples ainda.

    Linha do PowerShell:

    Set-ADUser -Identity meulogin -POBox 12345678910

    Montei a planilha preenchendo todas as linhas, copiei e colei no PowerShell, 100% funcional tbm.

    De qualquer forma obrigado pela ajuda.

    • Marcado como Resposta Marco_AM quarta-feira, 23 de julho de 2014 12:05
    quarta-feira, 23 de julho de 2014 12:05

Todas as Respostas

  • Marco,

    Veja se este link ajuda, ele atualiza outro campo, basta você trocar este campo.

    Carga no AD com lista do Excel

    http://social.technet.microsoft.com/Forums/pt-BR/0f399937-ebc4-4a4a-8729-1f9141b3bf5b/carga-no-ad-com-lista-do-excel?forum=scriptadminpt


    Fábio de Paula Junior

    terça-feira, 22 de julho de 2014 00:47
    Moderador
  • Oi Fabio, segue o script alterado conforme indicou, pode conferir, por favor? Pois deu o seguinte erro:

    Linha: 39

    Caract: 4

    Erro: Uma referência foi retornada do servidor

    Na minha planilha, tenho simplesmente na primeira coluna o login (Ex: mmiranda) e na segunda coluna o CPF (Ex: 12345678910)

    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:\Scripts\CPF\CPF_CWB.xlsx")
    intRow = 1
    
    Do Until objExcel.Cells(intRow,1).Value = ""
    
    	'nome do usuario
    	login = objExcel.Cells(intRow, 1).Value
    	'e-mail na coluna 2
    	cpf = objExcel.Cells(intRow, 2).Value
    
    	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=cwb,dc=dominio,dc=pr' " & _
    		"WHERE objectCategory='user' And name = '"& login & "'"
    
    	Set objRecordSet = objCommand.Execute
    
    	objRecordSet.MoveFirst
    
    	Do Until objRecordSet.EOF
    
    		cn = objRecordSet.Fields("distinguishedname").Value
    		Set objUser = GetObject("LDAP://" & cn)
    		objUser.postOfficeBox = cpf
    		objUser.SetInfo
    	Loop
    	intRow = intRow + 1
    Loop
    
    objExcel.Quit
    
    wscript.quit




    • Editado Marco_AM terça-feira, 22 de julho de 2014 12:03 Correção
    • Editado Fábio JrModerator terça-feira, 22 de julho de 2014 13:53 código
    terça-feira, 22 de julho de 2014 11:59
  • Qual é a linha 39?

    Fábio de Paula Junior

    terça-feira, 22 de julho de 2014 13:52
    Moderador
  • Se quiser tentar em PowerShell.

    1) Copie as duas colunas da sua planilha e cole em um arquivo txt (os dados ficarão separados por {tab}), chamaremos este arquivo de cpf.txt

    Meu cpf.txt ficou assim:

    login	cpf
    technet	111.222.333-55
    isa.0001	222.333.111-45
    

    2) Coloque o arquivo cpf.txt na mesma pasta do script powershell

    3) Código do script PowerShell

    Import-Module ActiveDirectory
    
    $ArquivoConteudo = Import-Csv (join-path $PSScriptRoot "cpf.txt") -Delimiter `t 
    
    foreach($Registro in $ArquivoConteudo){
    
        Set-ADUser -Identity $Registro.login -PostalCode $Registro.cpf
        
    
    }
    Fiz o teste e funcionou.


    Fábio de Paula Junior

    • Marcado como Resposta Marco_AM quarta-feira, 23 de julho de 2014 12:05
    terça-feira, 22 de julho de 2014 14:10
    Moderador
  • Olá Fabio, na verdade consegui uma maneira mais simples ainda.

    Linha do PowerShell:

    Set-ADUser -Identity meulogin -POBox 12345678910

    Montei a planilha preenchendo todas as linhas, copiei e colei no PowerShell, 100% funcional tbm.

    De qualquer forma obrigado pela ajuda.

    • Marcado como Resposta Marco_AM quarta-feira, 23 de julho de 2014 12:05
    quarta-feira, 23 de julho de 2014 12:05