どんなもの?
RSAT(リモートサーバー管理ツール)をインストールできない端末でも、一般のドメインユーザーのまま Active Directory・DNS・グループポリシー・Exchange の情報を取得できる PowerShell モジュールです。.NET の System.DirectoryServices(ADSI/LDAP)だけを使います。
- 書き方は RSAT とほぼ同じ:
Get-ADUser・Get-ADGroupMember・Get-ADComputerなどを同じ名前・同じパラメーターで使えます - すべて読み取り専用:公開しているコマンドは取得・検索・自己診断だけで、AD を書き換えません
- インストール不要:ファイル共有に置いて
Import-Moduleするだけ。実行ポリシーで読み込めない環境向けのローダーも同梱 - 無料・MIT ライセンス。PowerShell 5.1 以上
yorozu-craft の「しごと・べんり」の PowerShell ライブラリです。
入手と読み込み
- GitHub の「Code → Download ZIP」でダウンロードし、フォルダごと手元かファイル共有に置きます(
git clone https://github.com/YouheiOonuki/ADSearchでも可) - PowerShell で読み込みます
# モジュールとして(推奨)
Import-Module C:\tools\ADSearch\ADSearch.psd1
# ファイル共有から
Import-Module \\fileserver\tools\ADSearch\ADSearch.psd1 -Force
実行ポリシー(RemoteSigned など)で読み込めない場合は、同梱の Import-ADSearch.ps1 を使います。
. ([scriptblock]::Create((Get-Content 'C:\tools\ADSearch\Import-ADSearch.ps1' -Raw)))
Import-ADSearch -Path 'C:\tools\ADSearch'
ダウンロードしたファイルは、先に Get-ChildItem -Recurse | Unblock-File でブロックを解除すると通常どおり読み込めます。
使い方の例
# ユーザーを取得
Get-ADUser -Identity yamada -Server dc01.corp.local
# 条件で絞り込み
Get-ADUser -Filter "DisplayName -like '山田*'" -Server dc01.corp.local
# グループのメンバーを再帰的に
Get-ADGroupMember -Identity "IT-Staff" -Recursive -Server dc01.corp.local
# ロックアウト中の有効なアカウント
Get-ADUser -Filter "Enabled -eq '$true'" -Server dc01 | Where-Object LockedOut
# DNS レコード(IP アドレスつき)
Get-ADDnsRecord -Name pc001 -ComputerName dc01.corp.local
# 読み込めたか・DC に届くかの自己診断
Invoke-ADSearchSelfTest -Server dc01.corp.local
例のドメイン名・ユーザー名は架空のものです。
使えるコマンド(42 個)
ディレクトリ
Get-ADUserGet-ADGroupGet-ADGroupMemberGet-ADComputerGet-ADOrganizationalUnitGet-ADObjectGet-ADServiceAccountGet-ADDomainGet-ADDomainControllerGet-ADForestGet-ADDefaultDomainPasswordPolicyGet-ADTrust
サイト・レプリケーション・GPO・DNS
Get-ADReplicationSiteGet-ADReplicationSiteLinkGet-ADReplicationSubnetGet-ADReplicationConnectionGet-ADGpoLinkGet-ADDnsRecord
Exchange の構成
Get-ExchangeServerGet-ReceiveConnectorGet-SendConnectorGet-AcceptedDomainGet-RemoteDomainGet-TransportRuleGet-MailboxDatabaseGet-DatabaseAvailabilityGroupGet-AddressListGet-GlobalAddressListGet-OfflineAddressBookGet-EmailAddressPolicy
Exchange の受信者
Get-RecipientGet-MailboxGet-RemoteMailboxGet-MailUserGet-MailContactGet-DistributionGroupGet-DynamicDistributionGroupGet-DistributionGroupMember
診断・棚卸し
Invoke-ADSearchSelfTestGet-ADUserHealthSearch-ADAccountGet-ADComputerHealth
パラメーターと出力の詳細はリファレンスマニュアルと、GitHub の README にあります。
よくある質問
- RSAT(ActiveDirectory モジュール)が無くても使えますか?
- はい。.NET の System.DirectoryServices(ADSI/LDAP)だけを使うので、RSAT のインストールは要りません。ドメインに参加した Windows 端末で、一般のドメインユーザーのまま動きます。
- AD の情報を書き換えることはありますか?
- ありません。公開しているコマンドはすべて取得(Get)・検索(Search)と自己診断だけです。テスト用のデータを作るスクリプト(forTest フォルダ)は検証用の環境専用で、本番では使わないでください。
- RSAT の Get-ADUser と同じ結果になりますか?
- 主なパラメーターと出力のプロパティを RSAT に合わせています。-Identity は DN・ObjectGUID・SID・sAMAccountName を受け付け、見つからないときは RSAT と同じく例外になります。違いは README とリファレンスの「RSAT 互換プロパティ」「意図的な省略」に書いています。
- 実行ポリシーで読み込めません
- 同梱の Import-ADSearch.ps1 を使うと、ファイルを文字列として読み込んで取り込むため、ファイルの実行ポリシーの影響を受けません。ローカルにコピーできる場合は Unblock-File してから読み込む方法もあります。
プロキシの PAC ファイルを URL 一覧で一括評価する → PAC ファイル テスター
ご利用上の注意
- 社内の端末で使う前に、勤め先のルール(持ち込むソフトの扱い、ディレクトリへの問い合わせの可否)を確認してください
- 大量の検索を短い間隔で繰り返すと、DC に負荷がかかります。
-Filterと-SearchBaseで範囲を絞ってください - このページは紹介のためのもので、モジュールは端末の中だけで動き、このサイトに何かを送ることはありません
- ライセンスは MIT です。無保証で提供しています
ご要望・不具合の報告(Google フォーム):いただいた内容をもとに直します。お返事はしていません。GitHub の Issues でも受け付けます。
更新履歴
- バージョン 1.4.1:
-Filterの'$true'、Get-ADComputer PC001($なし)、信頼・サイト・Exchange 構成の名前での-Identityが効かなかった不具合を修正。AD なしで確かめられるテストを追加 - 公開(バージョン 1.4.0)