Active Directory移行PowerShellスクリプト
Export-ADData

どうも、Windowsの Active Directory からユーザやグループをエクスポートしてまた別の AD へインポートする、ニートでまともな道具が世の中にあまり存在しないようだ。そこで、そういう PowerShellスクリプト を一から作った。

Table of Contents

提供場所 - GitHub

GitHub export-ADData

機能

GitHubの README から抜粋して日本語にしたものを以下に示す。

README 抜粋

Export-ADData

概要

Export-ADData は、Active Directory (AD) のユーザーおよびグループをCSVファイルにエクスポートするための PowerShell スクリプトです。柔軟なエクスポートオプションを備えています。

Import-ADData は、エクスポートされたCSVファイルから AD ユーザーおよびグループを Active Directory にインポートするためのスクリプトです。

インポート先の AD は、エクスポート元と同じである必要はありません。異なるドメインベースを指定すると、自動的にパスを変換します。また、インポート時に必要な中間層の OU が存在しない場合、自動的に作成する機能を備えています。

当スクリプトの想定される使用方法としては、ドメインの基底を指定してエクスポートすることで、オブジェクトの必要な属性を失うことなく出力。必要に応じて、エクスポートされたCSVファイルを編集し、不要なエントリを削除するなどの調整を行ってからインポートに使用することも可能です。いくつかのユーザーにパスワードを設定したい場合は、ユーザーCSV に "Password" 列を追加し、パスワードを平文で記入してください (エクスポート時のCSVにはパスワード列はありません)。アカウントの "Enabled" フラグを復元するにはパスワードが必須であることに注意してください。

インポート時には、主に以下の 3 つのプランを想定しています。

  1. DC=domain,DC=local でエクスポートし、同じ DC=domain,DC=local へインポート
  2. DC=olddomain,DC=local でエクスポートし、DC=newdomain,DC=local へインポート
  3. DC=domain,DC=local でエクスポートし、OU=osaka,DC=domain,DC=local へインポート

Compare-ADCSV は、AD からエクスポートされた 2 つのCSVファイルを比較 するためのスクリプトです。インポート前後の検証に活用できます。

Check-ADUserPassword は、ユーザーのパスワードが 想定通りに設定されているか をチェックするためのシンプルなユーティリティスクリプトです。

機能

Export-ADData
Import-ADData
Compare-ADCSV
Check-ADUserPassword

使用例

ADデータのエクスポート

ドメイン基底からユーザとグループをフォルダ "C:\ADExport" のCSVファイルにエクスポート

.\export-ADData.ps1 -DNPath "DC=mydomain,DC=local" -OutPath "C:\ADExport"
ADデータのインポート

グループをCSVから別のドメイン基底へインポート(システムオブジェクトは除外)

.\import-ADData.ps1 -DNPath "DC=newdomain,DC=local" -GroupFile "C:\ADExport\Groups_mydomain_local.csv"

ユーザをCSVからドメイン上のOUへインポート。CSVファイル選択を誘導するダイアログが表示される

.\import-ADData.ps1 -DNPath "OU=unit,DC=newdomain,DC=local" -User