A modificação de usuários AD em massa envolve a configuração de uma ou mais propriedades para o mesmo valor para um conjunto de usuários ou a leitura nos valores que você precisa de uma fonte de dados de algum tipo.

Preparamos alguns dados de teste na última publicação, então vamos ver como a usamos.

  $ Users = Import-Csv -Path. \ Users.csv
 Foreach ($ usuário em $ usuários) {
  Get-ADUser -Identity $ user.Id |
  Set-ADUser -Division $ user.Division -EmployeeNumber $ user.EmployeeNumber
 }

A maneira mais simples é ler nos dados e armazenar como uma coleção de objetos. Use foreach para iterar através do conjunto de informações do usuário. Get-ADUser obtém a conta AD apropriada que é canalizada para Set-ADUser. Set-ADUser é um ótimo cmdlet porque tem parâmetros para a maioria das propriedades do usuário.

No entanto, sabemos que alguns usuários não possuem números de funcionários. Isso significa um pouco mais de trabalho. Duas abordagens são possíveis – use splatting e os parâmetros usados ​​acima ou use a opção -Replace

Vamos olhar para splatting primeiro

  $ Users = Import-Csv -Path. \ Users.csv  
 Foreach ($ usuário em $ usuários) {
  $ Params = @ {
 Divisão = $ user.Division
 EmployeeNumber = 0
  }
 
  Se ($ user.EmployeeNumber) {
 $ Params.EmployeeNumber = $ user.EmployeeNumber
  }
  outro {
 $ Params.Remove ('EmployeeNumber')
  }
 
  Get-ADUser -Identity $ user.Id |
  Set-ADUser @params
 }

Como antes, leia as informações do usuário na variável $ users. Iterate sobre os usuários com foreach. Crie um hashtable para os parâmetros e seus valores. A divisão está sempre presente para que possa ser configurada diretamente. O número de funcionários deve ser testado e, se presente, o valor do suporte do local deve ser substituído pelo valor correto, caso contrário, o número de empregado é removido da hashtable.

A conta de usuário é encontrada e Set-ADUser define os valores corretos. Observe como o hashtable é especificado no cmdlet.

Splatting é uma ótima maneira de configurar dinamicamente os parâmetros que você está usando em um cmdlet específico.

Set-ADUser tem uma alternativa – o parâmetro -Replace.

  $ Users = Import-Csv -Path. \ Users.csv 
 Foreach ($ usuário em $ usuários) {
  $ Params = @ {
 Divisão = $ user.Division
 EmployeeNumber = 0
  }
 
  Se ($ user.EmployeeNumber) {
 $ Params.EmployeeNumber = $ user.EmployeeNumber
  }
  outro {
 $ Params.Remove ('EmployeeNumber')
  }
 
  Get-ADUser -Identity $ user.Id |
  Set-ADUser -Replace $ params
 }

Isso é muito parecido com o exemplo de splatting, mas em vez de splatting o hashtable você o usa como entrada de valor para o parâmetro Replace. Se você escreveu o comando, ficaria assim:

  Set-ADUser -Replace @ {division = 'Division B';  EmployeeNumber = 100}

Com -Replace você está usando os nomes LDAP das propriedades em vez do nome GUI ou PowerShell – há diferenças para o exemplo, sobrenome é sn no LDAP.

A modificação de usuários AD em massa é direta com o PowerShell e é relativamente fácil lidar com valores perdidos se você adotar uma das idéias acima. Splatting é provavelmente o mais fácil neste caso.

Anúncios