繁体   English   中英

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

[英]Move all AD users from one OU to another

我需要一些帮助,因为我一直在尝试编写一个简单的 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
    }

您无需在任何地方定义$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

您可以通过不使用变量将其设为一行

Get-ADUser -Filter 'Enabled -eq "True"' -SearchBase 'OU=test1,DC=contoso,DC=com' | Move-ADObject -TargetPath 'OU=Test2,DC=contoso,DC=com' -Verbose

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM