Como posso alterar uma substring de um atributo personalizado no Powershell?

1

Tenho certeza de que isso é bastante básico, mas não consigo me dar conta disso e, a essa altura, seria quase mais prudente fazer isso manualmente, mas parece uma boa oportunidade de aprendizado.

Eu criei um atributo personalizado no AD. Todos os usuários definem como email a sincronização por meio de um aplicativo de terceiros, não associado ao Active Directory. Eu preciso alterar o nome de domínio em todos eles através do Powershell de [email protected] para [email protected]. Parece fácil, mas por algum motivo não consigo fazer com que o Set-ADUser altere a propriedade de cada usuário e substitua com base no nome de usuário original. Eu preciso remover os últimos 27 caracteres do nome de domínio antigo, concatenar o nome de logon atual com o novo nome de domínio e, em seguida, defini-lo. Parece tão simples, mas continuo recebendo argumentos inválidos, não importa o quanto eu experimente em Powershell.

Até agora eu tenho algo parecido com:

$Users = Get-ADUser -Filter "*" -SearchBase 'OU=test,DC=adDomain,DC=org' -Properties customattribute
ForEach-Object {
  $fullAttribute = Get-ADUser $_{customattribute}
  $logon -replace "fullAttribute.{27}$"
  $newLogon = $logon + "newdomainname.com"
  Set-ADUser $_ -replace @{customattribute=$newLogon}
}

Continuo tentando em etapas, mas continuo a executar erros de sintaxe.

    
por Zombian 10.08.2017 / 23:58

1 resposta

2

Isso deve começar. É difícil testar sem os detalhes solicitados pelo @Zordache.

$olddomain ="billybob.com"
$newdomain = "newdomainname.com"

$Users = Get-ADUser -Filter "*" -SearchBase 'OU=test,DC=adDomain,DC=org' -Properties customattribute
ForEach-Object {
  $user = $_
  $fullAttribute = ($user.customattribute).tostring()
  $newattr = $fullAttribute.replace $olddomain $newdomain
  $user.customattribute=$newattr
  Set-ADUser -instance $user 
}
    
por 15.08.2017 / 22:58