Home > Net >  I need to add information from a .csv file in this OR exchange code
I need to add information from a .csv file in this OR exchange code

Time:04-20

I have this link that changes the AD user from OU through information coming from a .csv file.

In my IT structure, the information regiao and diretoria are the information that must also be contained in the Department field of the ad user.

How do I get the information and reuse it in the variables?

Department = $região ", " $Diretoria

Import-Csv -Path  C:\Users\leonan.martins\Desktop\teste2.csv | ForEach-Object {
    $target = [string]::Format(
        "OU={0},OU={1},OU={2},DC=lab,DC=suporti,DC=local",
        $_.Regiao, $_.Diretoria, $_.Area
       
    )
    Get-ADUser $_.User | Move-ADObject -TargetPath $target
    Write-Host "OUs dos usuários ALTERADAS!"
}

CodePudding user response:

If I understand correctly, you're looking to move the AD Object but also, set it's Department attribute, in which case you could either first set the user's attribute and then move it to the target Organizational Unit or vice-versa. You can use -PassThru to return the object you are working with which allows you to complete both operations in a streamed pipeline:

$ErrorActionPreference = 'Stop'

Import-Csv -Path C:\Users\leonan.martins\Desktop\teste2.csv | ForEach-Object {
    try {
        $target = [string]::Format(
            "OU={0},OU={1},OU={2},DC=lab,DC=suporti,DC=local",
            $_.Regiao, $_.Diretoria, $_.Area
        
        )

        Set-ADUser -Identity $_.User -Department ('{0},{1}' -f $_.Regiao, $_.Diretoria) -PassThru |
            Move-ADObject -TargetPath $target

        Write-Host "OUs dos usuários ALTERADAS!"
    }
    catch {
        Write-Warning $_.Exception.Message
    }
}
  • Related