将所有AD用户从一个OU移至另一个

时间:2019-02-26 12:21:31

标签: powershell active-directory

我在尝试编写一个简单的PS脚本将用户转到下一个OU时遇到了困难,因此我需要一些帮助。

例如,我想将所有帐户从test1移至test2

$ou1 = 'OU=test1,OU=users,DC=contoso,DC=local'
$ou2 = 'OU=test 2,OU=users,DC=contoso,DC=local'

$adUserGroup = Get-ADUser -Filter {Enabled -eq "True"} -SearchBase ($ou1) -Properties $properties | Select-object $properties | Sort-Object samAccountName

foreach($user in $adUserGroup)
    {
    "Moving Active Directory user $($user.Name)"
    move-adobject -Identity "$user" -targetpath $ou2
    }

1 个答案:

答案 0 :(得分:0)

您没有在任何地方定义$properties,因此Select-Object实际上没有做任何事情。可以将其删除,因为此属性并不是必需的,因为默认属性很好。

除非您真的关心用户按照用户名的字母顺序移动,否则也不需要

Sort-Object

我也将更改Filter,因为它不需要脚本块{ } -只需引用' '

$ou1 = 'OU=test1,OU=users,DC=contoso,DC=local'
$ou2 = 'OU=test 2,OU=users,DC=contoso,DC=local'

$AdUsers = Get-ADUser -Filter 'Enabled -eq "True"' -SearchBase $ou1

foreach($user in $AdUsers) {
    Write-Output "Moving Active Directory user: $($user.Name)"
    Move-ADObject -Identity $user -TargetPath $ou2
}

实际上,您可以使用管道将流程设为单个命令,使用-Verbose提供有关移动的用户的输出:

$ou1 = 'OU=test1,OU=users,DC=contoso,DC=local'
$ou2 = 'OU=test 2,OU=users,DC=contoso,DC=local'

Get-ADUser -Filter 'Enabled -eq "True"' -SearchBase $ou1 | Move-ADObject -TargetPath $ou2 -Verbose