set-aduser dentro do loop foreach

1

Estou tentando fazer com que o script abaixo troque três coisas em uma conta do AD. Quero que ela expire a conta, altere um atributo e anexe a conta desativada à descrição atual. Ele faz tudo, exceto anexar a descrição. Como está, o script apenas substitui o campo de descrição por Conta desativada, em vez de anexá-lo ao que já está lá.

$Yesterday = (Get-Date).AddDays(-1)
$DisableUserList = Get-Content C:\Myscripts\test.csv
$DisableUsers = foreach ($user in $DisableUserList) { get-aduser -filter { mail -eq $user } }


ForEach ($user in $DisableUsers) {
        Set-ADUser $user -Description "Disabled Account $($_.Description)" -AccountExpirationDate $Yesterday -replace @{ businesscategory = "21" }
}

O arquivo .csv tem apenas uma coluna de endereços de e-mail.

Qualquer ajuda é apreciada.

Obrigado

    
por spanderson 17.05.2016 / 17:55

1 resposta

2

Seu problema é que a parte $($_.Description) do seu comando Set-ADUser está vazia. O motivo é que Get-ADUser não recupera a descrição da conta por padrão. Você precisa explicitamente pedir em seu comando assim:

get-aduser -filter { mail -eq $user } -Properties Description

Seu outro problema é que você não está referenciando seu usuário desabilitado corretamente em seu loop final. No momento, você está usando ForEach ($user in $DisabledUsers) , o que significa acessar as propriedades de cada usuário. Elas precisam ser prefixadas com $user.MyProperty em vez de $_.MyProperty . Se você quiser usar a notação $_ , você precisa mudar o estilo do seu loop para isto:

$DisabledUsers | ForEach-Object { 

Você também pode reduzir isso para:

$DisabledUsers | % {

Por fim, você diz que deseja anexar (adicionar ao final) seu texto à descrição atual, mas seu código está tentando prefixar (adicionar ao começo). Supondo que você realmente queira anexar, você precisa alterar sua definição de string de descrição para esta:

-Description "$($_.Description) Disabled Account"
    
por 17.05.2016 / 19:07

Tags