当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将 AD 用户批量移动到另一个 OU

作者:精品下载站 日期:2024-12-15 00:41:44 浏览:16 分类:玩电脑

使用 PowerShell 将 AD 用户批量移动到另一个 OU


您已经了解了如何将用户邮箱批量转换为共享邮箱。这次我们想将 AD 对象批量移动到新的 OU(组织单位)。 Active Directory (AD) 中有一百多个共享邮箱。如果我们在AD中搜索共享邮箱并将其移动到OU中,则需要时间。这是使用 PowerShell 自动执行任务的绝佳方法。在本文中,您将了解如何使用 PowerShell 将 AD 用户从 CSV 文件批量移动到另一个 OU。

开始批量移动 AD 用户之前

如果您在一个 OU 中拥有 AD 用户列表,则可以选择 AD 对象并将其移动到 Active Directory 用户和计算机中。是的,拖放就是这么简单。如果您的用户位于不同的 OU 中怎么办?在我们的例子中,有一百多个共享邮箱。搜索和移动它们将花费大量时间。这就是为什么我们必须聪明地工作并利用 PowerShell。

在 Active Directory 中创建目标 OU

如果没有目标 OU,请创建一个。我们建议保持整洁并将所有共享邮箱移动到目标 OU SharedMailbox

[玩转系统] 使用 PowerShell 将 AD 用户批量移动到另一个 OU

获取专有名称

您可以在 Active Directory 中获取 OU 可分辨名称。右键单击目标 OU,然后单击属性。转到属性编辑器选项卡。在属性列表中查找属性distuingedName。双击打开字符串并复制。您将在下一部分中需要它。

[玩转系统] 使用 PowerShell 将 AD 用户批量移动到另一个 OU

您还可以使用 PowerShell 获取组织部门的可分辨名称。

使用 AD 用户创建 CSV 文件

在运行脚本之前,我们需要有一个包含 AD 用户 SamAccountName 的 CSV 文件。在我们的示例中,共享邮箱将被移动。当您创建邮箱时,AD 中会自动创建一个 AD 对象。

[玩转系统] 使用 PowerShell 将 AD 用户批量移动到另一个 OU

以管理员身份运行 Exchange 命令行管理程序。第一个 cmdlet 将为我们提供结果。第二个 cmdlet 将结果导出到 CSV 文件。

[PS] C:\>Get-Mailbox -Filter {RecipientTypeDetails -eq "SharedMailbox"} | Select Name, SamAccountName, OrganizationalUnit, DistinguishedName

Name  SamAccountName OrganizationalUnit                         DistinguishedName
----  -------------- ------------------                         -----------------
Sales sales          exoip.local/Company/Exchange/SharedMailbox CN=Sales,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local
Info  info           exoip.local/Company/Exchange/SharedMailbox CN=Info,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local
HR    hr             exoip.local/Company/Exchange/SharedMailbox CN=HR,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local

[PS] C:\>Get-Mailbox -Filter {RecipientTypeDetails -eq "SharedMailbox"} | Select Name, SamAccountName, OrganizationalUnit, DistinguishedName | Export-Csv -Path "C:\temp\shared_mailboxes.csv" -NTI

导出 CSV 文件后,下一步是使用 PowerShell 读取 CSV 文件内容。

检查 CSV 文件中的内容

验证 CSV 文件在 PowerShell 中是否可读。

[PS] C:\>Import-Csv "C:\temp\shared_mailboxes.csv"

Name  SamAccountName OrganizationalUnit                         DistinguishedName
----  -------------- ------------------                         -----------------
Sales sales          exoip.local/Company/Exchange/SharedMailbox CN=Sales,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local
Info  info           exoip.local/Company/Exchange/SharedMailbox CN=Info,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local
HR    hr             exoip.local/Company/Exchange/SharedMailbox CN=HR,OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local

将 AD 用户批量移动到另一个 OU PowerShell 脚本

下载 Move-ADUsers.ps1 PowerShell 脚本或将以下代码复制并粘贴到记事本中。将其命名为 Move-AdUsers.ps1 并将其放置在 C:\scripts 文件夹中。如果没有,请创建一个 scripts 文件夹。

# Import AD Module
Import-Module ActiveDirectory
 
# Import the data from CSV file and assign it to variable
$Import_csv = Import-Csv -Path "C:\temp\shared_mailboxes.csv"

# Specify target OU where the users will be moved to
$TargetOU = "OU=SharedMailbox,OU=Exchange,OU=Company,DC=exoip,DC=local"
 
$Import_csv | ForEach-Object {

    # Retrieve DN of User
    $UserDN = (Get-ADUser -Identity $_.SamAccountName).distinguishedName

    Write-Host "Moving Accounts....."

    # Move user to target OU. Remove the -WhatIf parameter after you tested.
    Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
} 
Write-Host "Completed move"
  • 第 5 行:编辑 CSV 文件名和路径。

  • 第 8 行:编辑目标 OU。

在下一步中,我们将查看批量移动 AD 用户 PowerShell 脚本。

使用 CSV 文件将 AD 用户批量移动到另一个 OU

运行 PowerShell 脚本将 AD 用户批量移动到另一个 OU。值得高兴的是,脚本中添加了一个 -WhatIf 参数。如果运行该脚本,环境中不会发生任何事情。您将得到一个输出,显示将会发生什么。

[PS] C:\>cd \scripts
[PS] C:\scripts>.\Move-ADUsers.ps1
Moving Accounts.....
What if: Performing the operation "Move" on target "CN=Sales,OU=Company,DC=exoip,DC=local".
Moving Accounts.....
What if: Performing the operation "Move" on target "CN=Info,OU=Company,DC=exoip,DC=local".
Moving Accounts.....
What if: Performing the operation "Move" on target "CN=HR,OU=Company,DC=exoip,DC=local".
Completed move

一切看起来都不错。我们可以删除 -WhatIf 参数并重新运行 PowerShell 脚本。

[PS] C:\scripts>.\Move-ADUsers.ps1
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Completed move

验证结果

查看 Active Directory 用户和计算机。 CSV 文件中的共享邮箱将移动到另一个 OU。在本例中,为 SharedMailbox OU。

[玩转系统] 使用 PowerShell 将 AD 用户批量移动到另一个 OU

另一次检查,但这次使用 PowerShell。

[PS] C:\>Get-Mailbox -Filter {RecipientTypeDetails -eq "SharedMailbox"} | Select Name, SamAccountName, OrganizationalUnit

Name  SamAccountName OrganizationalUnit
----  -------------- ------------------
Sales sales          exoip.local/Company/Exchange/SharedMailbox
Info  info           exoip.local/Company/Exchange/SharedMailbox
HR    hr             exoip.local/Company/Exchange/SharedMailbox

一切看起来都很棒。这是否有助于您将 AD 对象批量移动到另一个 OU?

了解更多:使用 PowerShell 在 Exchange Server 中创建批量邮箱 »

结论

在本文中,您了解了如何使用 PowerShell 将 AD 用户批量移动到另一个 OU。下载 Move-ADusers.ps1 PowerShell 脚本,编辑 CSV 路径和目标 OU。运行脚本并验证 AD 对象是否已成功移动到新的 OU。

您喜欢这篇文章吗?您可能还喜欢使用 Powershell 更改用户 UPN。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯