Powershell | Substitua mailNickname por variável

1

tentando substituir mailNickname para todos os usuários com seus próprios samaccountname:

Import-Module activedirectory

$SAM = (Get-ADUser -SearchBase "OU=Staged,OU=corp,DC=mycompany,DC=com" -Filter * | select samaccountname)

foreach ($User in $SAM.samaccountname)
{
    Set-ADUser $User -Replace @{mailNickName = "$SAM"}
    }

Este script define mailNickName em branco. Qualquer ideia? Obrigado

    
por BashN00b 31.10.2016 / 20:43

2 respostas

4

Para corrigir seu problema com a menor alteração de código necessária, você deve alterar sua referência $SAM para $User na chamada Set-ADUser . Você está definindo mailNickName para o objeto de usuário retornado por Get-ADUser e não para o sAMAccountName no qual você está interagindo.

Seus nomes de variáveis são um pouco confusos, porque são nomeados um pouco opostos ao que os nomes realmente representam. Em seu código $SAM é, na verdade, uma lista de objetos ADUser que possuem todas as suas propriedades filtradas, exceto para samaccountname. Sua variável $User no loop foreach é, na verdade, a string samaccount de cada objeto de usuário.

Aqui está uma pequena variação do seu código com nomes de variáveis alterados e a instrução select estranha removida.

$users = Get-ADUser -SearchBase "OU=Staged,OU=cor,DC=mycompany,DC=com" -Filter *
foreach ($user in $users) {
    Set-ADUser $user -Replace @{ mailNickName = "$($user.samaccountname)" }
}

Aqui está outra variação que usa% al_de% alias de ForEach-Object diretamente contra os resultados da chamada % .

Get-ADUser -SearchBase "OU=Staged,OU=cor,DC=mycompany,DC=com" -Filter * | %{
    Set-ADUser $_.DistinguishedName -Replace @{ mailNickName = $_.samaccountname }
}
    
por 31.10.2016 / 21:10
0

Aqui está o método simples de atualizar o mailNickName de todos os usuários pelo Nome do Samaccount do usuário por meio do csv.

Prepare o arquivo csv com o cabeçalho Samaccount e NickName e execute o script abaixo. Eu usei o book4.csv na raiz da minha unidade D como meu csv.

Import-Csv "D:\Book4.csv" | % {Get-ADUser -Identity $_.Samaccount -Properties MailNickName | Set-ADUser -Replace @{MailNickName = "$($_.NickName)"}} 
    
por 06.06.2017 / 06:56