[英]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.