Tìm kiếm trang web

Di chuyển hàng loạt người dùng AD sang OU khác bằng PowerShell


Bạn đã học cách chuyển đổi hàng loạt hộp thư người dùng sang hộp thư chung. Lần này chúng tôi muốn di chuyển hàng loạt đối tượng AD sang OU (Đơn vị tổ chức) mới. Có hơn một trăm hộp thư dùng chung trên Active Directory (AD). Nếu chúng ta tìm kiếm các hộp thư dùng chung trong AD và chuyển chúng sang OU thì sẽ mất thời gian. Đây là một cách tuyệt vời để tự động hóa tác vụ với PowerShell. Trong bài viết này, bạn sẽ tìm hiểu cách di chuyển hàng loạt người dùng AD bằng PowerShell sang OU khác từ tệp CSV.

Trước khi bạn bắt đầu di chuyển hàng loạt người dùng AD

Nếu bạn có danh sách người dùng AD trong một OU, bạn có thể chọn các đối tượng AD và di chuyển chúng trong Người dùng và máy tính Active Directory. Vâng, việc kéo và thả thật đơn giản. Điều gì sẽ xảy ra nếu bạn có người dùng ở các OU khác nhau? Trong trường hợp của chúng tôi, có hơn một trăm hộp thư dùng chung. Sẽ mất rất nhiều thời gian để tìm kiếm và di chuyển chúng. Đó là lý do tại sao chúng ta phải làm việc thông minh và tận dụng PowerShell.

Tạo OU mục tiêu trong Active Directory

Tạo OU mục tiêu nếu bạn chưa có. Chúng tôi khuyên bạn nên giữ ngăn nắp và di chuyển tất cả các hộp thư dùng chung tới OU đích Hộp thư dùng chung.

Lấy tên phân biệt

Bạn có thể lấy tên phân biệt OU trong Active Directory. Nhấp chuột phải vào OU mục tiêu và nhấp vào Thuộc tính. Chuyển đến tab Trình chỉnh sửa thuộc tính. Tìm thuộc tính distuingedName trong danh sách thuộc tính. Nhấp đúp để mở chuỗi và sao chép giá trị. Bạn sẽ cần nó trong phần tiếp theo.

Bạn cũng có thể lấy tên phân biệt của Đơn vị tổ chức bằng PowerShell.

Tạo file CSV với người dùng AD

Trước khi có thể chạy tập lệnh, chúng tôi cần có tệp CSV với người dùng AD SamAccountName. Trong ví dụ của chúng tôi, các hộp thư dùng chung sẽ được di chuyển. Khi bạn tạo một hộp thư, một đối tượng AD sẽ tự động được tạo trong AD.

Chạy Exchange Management Shell với tư cách quản trị viên. cmdlet đầu tiên sẽ cho chúng ta kết quả. Lệnh ghép ngắn thứ hai sẽ xuất kết quả sang tệp 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

Sau khi xuất tệp CSV, bước tiếp theo là đọc nội dung tệp CSV bằng PowerShell.

Kiểm tra nội dung trong tệp CSV

Xác minh rằng tệp CSV có thể đọc được trong 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

Di chuyển hàng loạt người dùng AD sang tập lệnh OU PowerShell khác

Tải xuống tập lệnh Move-ADUsers.ps1 PowerShell hoặc sao chép và dán đoạn mã bên dưới vào Notepad. Đặt tên cho nó là Move-AdUsers.ps1 và đặt nó vào thư mục C:\scripts. Tạo thư mục scripts nếu bạn chưa có.

# 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"
  • Dòng 5: Chỉnh sửa tên tệp CSV và đường dẫn.

  • Dòng 8: Chỉnh sửa OU mục tiêu.

Trong bước tiếp theo, chúng ta sẽ xem xét tập lệnh PowerShell của người dùng AD di chuyển hàng loạt.

Di chuyển hàng loạt người dùng AD sang OU khác bằng tệp CSV

Chạy tập lệnh PowerShell để di chuyển hàng loạt người dùng AD sang một OU khác. Điều cần biết là có tham số -WhatIf được thêm vào tập lệnh. Nếu bạn chạy tập lệnh, sẽ không có gì xảy ra trong môi trường. Bạn sẽ nhận được một đầu ra cho thấy những gì sẽ xảy ra.

[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

Mọi thứ đều có vẻ tốt. Chúng ta có thể xóa tham số -WhatIf và chạy lại tập lệnh PowerShell.

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

Xác minh kết quả

Hãy xem Người dùng và Máy tính Active Directory. Các hộp thư dùng chung trong tệp CSV sẽ được chuyển sang một OU khác. Trong trường hợp này, OU SharedMailbox.

Một lần kiểm tra khác, nhưng lần này là với 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

Mọi thứ đều trông tuyệt vời. Điều này có giúp bạn di chuyển hàng loạt đối tượng AD sang OU khác không?

Đọc thêm: Tạo hộp thư hàng loạt trong Exchange Server bằng PowerShell »

Phần kết luận

Trong bài viết này, bạn đã tìm hiểu cách di chuyển hàng loạt người dùng AD sang một OU khác bằng PowerShell. Tải xuống tập lệnh PowerShell Move-ADusers.ps1, chỉnh sửa đường dẫn CSV và OU mục tiêu. Chạy tập lệnh và xác minh rằng các đối tượng AD đã được di chuyển thành công sang OU mới.

bạn có thích bài viết này? Bạn cũng có thể thích Thay đổi UPN người dùng bằng Powershell. Đừng quên theo dõi chúng tôi và chia sẻ bài viết này.

Bài viết liên quan