ADSearch リファレンスマニュアル
Version 1.4.1 | RSAT 不要の Active Directory / Exchange 構成・受信者情報取得ライブラリ
概要
ADSearch は System.DirectoryServices(ADSI/LDAP)を使用して Active Directory 情報を取得する PowerShell ライブラリです。RSAT(Remote Server Administration Tools)のインストールを必要とせず、ドメイン参加済みの一般端末・一般ユーザーで実行できます。
コマンド名と使い方は RSAT の ActiveDirectory モジュールに合わせており、実環境のサーバーで RSAT を使うときとのギャップを最小限にするよう設計されています。
前提条件
| 要件 | 内容 |
|---|---|
| PowerShell | 5.1 以上(Windows PowerShell) |
| OS | ドメイン参加済み Windows 端末、または DC への TCP 389(LDAPS は 636)が疎通できる端末 |
| 権限 | ドメインユーザー(Domain Users)で大半の機能が動作。PSO の読み取りは Domain Admins 以上が必要 |
| RSAT | 不要 |
| ネットワーク | DC への LDAP/LDAPS ポートが開いていること。UNC パスから読み込む場合は SMB(445)も必要 |
RemoteSigned または Unrestricted ポリシーが必要です。RemoteSigned の場合、ネットワーク上のスクリプトは署名が必要になります。環境に合わせて対応してください。
読み込み方法
モジュールとして(推奨)
Import-Module を使うと公開関数のみがエクスポートされ、内部関数は隠蔽されます。RSAT との共存も明示的に管理できます。
# ローカルパスから
Import-Module C:\Tools\ADSearch\ADSearch.psd1
# UNC パス(ファイルサーバー上に配置して共有)
Import-Module \\fileserver\tools\ADSearch\ADSearch.psd1
# ファイルが更新された場合の再読み込み
Import-Module \\fileserver\tools\ADSearch\ADSearch.psd1 -Force
dot-source(スクリプト内・一時利用)
dot-source では内部関数(ADSI_*)も現在スコープに展開されます。デバッグや一時利用向けです。
. \\fileserver\tools\ADSearch\ADSearch.ps1
RSAT との共存
Import-Module ActiveDirectory
Import-Module \\server\tools\ADSearch\ADSearch.psd1
# モジュール名を明示してどちらを使うか指定
ADSearch\Get-ADUser -Identity yamada -Server dc01
ActiveDirectory\Get-ADUser -Identity yamada
共通パラメータ
以下のパラメータはほぼすべての関数で共通です。
| パラメータ | 型 | 説明 |
|---|---|---|
-Server | string | 接続先 DC のホスト名または FQDN。省略時は現在ログオン中のドメインの DC に自動接続 |
-UseSSL | switch | LDAPS(ポート 636)を使用。DC に有効な証明書が必要。-Server の指定が必須です(v1.4 から。-Server を省略したサーバーレス接続は LDAPS に対応しないため、-UseSSL だけを指定するとエラーになります) |
-Credential | PSCredential | 接続に使用する資格情報。省略時は現在のログオンユーザー |
-SearchBase | string | 検索ルートとなる DN(例: OU=Tokyo,DC=corp,DC=local)。省略時はドメインルート |
-SearchScope | string | Subtree(既定)/ OneLevel / Base。Get-ADUser / Get-ADGroup / Get-ADComputer / Get-ADServiceAccount で指定可能 |
-Properties | string[] | 追加取得する属性名。* で全属性取得 |
-Filter | string | PowerShell 形式のフィルター(例: "Name -like 'srv*'")。使える演算子とプロパティは「フィルター構文」を参照 |
-LDAPFilter | string | 生の LDAP フィルター(例: "(sAMAccountName=yamada)") |
-Identity | string | DN / ObjectGUID / SID / sAMAccountName のいずれかで指定(v1.4 から。UPN・メールアドレス・表示名では指定できません)。詳しくは次の「-Identity の指定」を参照 |
-Identity の指定(v1.4 で変更)
v1.4 から -Identity は RSAT と同じ規則になりました。値の形から次のように判定し、1 つの属性だけで照合します。
| 指定した値 | 照合する属性 | 例 |
|---|---|---|
CN= / OU= / DC= で始まる | distinguishedName(DN) | "CN=yamada,OU=Users,DC=corp,DC=local" |
| GUID として読める | objectGUID | "0b1c2d3e-4f50-6172-8394-a5b6c7d8e9f0" |
S-1- で始まる | objectSid | "S-1-5-21-1111111111-2222222222-3333333333-1105" |
| 上記以外 | sAMAccountName(完全一致) | yamada |
- cn / name / UPN / mail による曖昧一致は廃止しました。以前は
yamada@corp.localのような値でも UPN やメールアドレスで一致していましたが、別のオブジェクトを取得してしまうのを防ぐため、現在は sAMAccountName としてしか照合しません。UPN・メールアドレス・表示名で探すときは-Filterを使ってください(例:-Filter "UserPrincipalName -eq 'yamada@corp.local'"、-Filter "EmailAddress -eq 'yamada@corp.local'")。 - 見つからないときは例外になります。
Get-ADUser/Get-ADGroup/Get-ADComputer/Get-ADOrganizationalUnit/Get-ADObject/Get-ADServiceAccountは、-Identityに一致するオブジェクトがないと「オブジェクトが見つかりません (Identity='…')」という例外を投げます(RSAT と同じ。以前は空を返していました)。これらを内部で呼ぶGet-ADGroupMemberとGet-ADGpoLinkも同様です。 - コンピュータの sAMAccountName は末尾に
$が付きます(PC001$)。Get-ADComputerと gMSA / sMSA(Get-ADServiceAccount)の-Identityは、RSAT と同じく$を省いても一致します(Get-ADComputer PC001。v1.4.1 から)。 -Identityを指定したときは-Filter/-LDAPFilterは使われません。
| コマンド | -Identity の扱い(上の規則と異なる点) |
|---|---|
Get-ADUserHealth | 上の 4 形式に加えて、@ を含む値は UPN またはメールアドレスとして検索します。見つからないときは例外 |
Get-ADComputerHealth | コンピュータ名は末尾 $ の有無どちらでも指定できます($ 無しで見つからなければ $ 付きで再検索)。見つからないときは例外 |
Get-ADOrganizationalUnit | OU には sAMAccountName と SID がないため、実際に一致するのは DN と ObjectGUID だけです。名前で探すときは -Filter "Name -eq 'Tokyo'" |
Get-ADTrust / Get-ADReplicationSite / Get-ADReplicationSiteLink / Get-ADReplicationSubnet / Get-ADReplicationConnection / Exchange 構成系(Get-ExchangeServer ほか 12 コマンド) | これらのオブジェクトには sAMAccountName がないため、DN・ObjectGUID に加えて名前(name 属性の完全一致)で照合します(例: Get-ADTrust -Identity child.corp.local、Get-AddressList -Identity "All Users"。v1.4.1 から。v1.4.0 では名前を指定しても一致しませんでした)。見つからないときは例外ではなく空を返します |
Get-ADDomain / Get-ADForest | -Server を省略したときに限り、-Identity の値(ドメイン名など)を接続先として使います |
Get-ADDomainController | 取得した DC の Name / HostName とワイルドカードで照合します(例: dc0*)。見つからないときは空 |
Exchange 受信者系(Get-Recipient ほか) | 独自の規則です(「Exchange 受信者系」参照)。v1.4 の変更の対象外です |
# sAMAccountName で取得
Get-ADUser -Identity yamada -Server dc01.corp.local
# UPN で探す場合は -Filter(-Identity に UPN を渡すと sAMAccountName として照合され、見つからず例外になる)
Get-ADUser -Filter "UserPrincipalName -eq 'yamada@corp.local'" -Server dc01.corp.local
# 見つからない場合は例外。存在確認に使うときは try/catch で受ける
try { Get-ADUser -Identity nonexistent -Server dc01.corp.local }
catch { "見つかりません: $($_.Exception.Message)" }
SID / ObjectGUID の型(v1.4 で変更)
SID は [System.Security.Principal.SecurityIdentifier]、ObjectGUID は [guid] のオブジェクトで返します(RSAT と同じ型)。-Properties * で取得したときの objectSid / objectGUID、Get-ADGroupMember の SID も同じです。文字列として比較するときは .Value(SID)/ .Guid(GUID)または .ToString() を使ってください。
$u = Get-ADUser -Identity yamada -Server dc01.corp.local
$u.SID.Value # "S-1-5-21-..."
$u.ObjectGUID.Guid # "0b1c2d3e-..."
$u.SID -eq 'S-1-5-21-...' # 文字列とは直接比較しない。$u.SID.Value -eq '...' とする
Get-ADDomain の DomainSID と、Exchange 受信者系の ExchangeGuid / ArchiveGuid は文字列で返します。フィルター構文
-Filter では以下の演算子が使用できます。
| 演算子 | 意味 | 例 |
|---|---|---|
-eq | 等しい | "SamAccountName -eq 'yamada'" |
-ne | 等しくない | 'Enabled -ne $true' |
-like | ワイルドカード(* を使用可) | "Name -like 'srv*'" |
-notlike | ワイルドカード否定 | "Name -notlike 'test*'" |
-ge / -le | 以上 / 以下 | "LastLogonDate -ge '2024-01-01'" |
-gt / -lt | より大きい / より小さい | "Created -gt '2024-04-01'" |
-approx | LDAP の近似一致(~=) | "DisplayName -approx 'yamada'" |
-and | AND 結合 | 'Enabled -eq $true -and Name -like "srv*"' |
-or | OR 結合 | "Name -like 'web*' -or Name -like 'app*'" |
-and と -or を入れ子・混在できます(v1.1 から。例: "Department -eq 'IT' -and (Title -like '*Manager*' -or Title -like '*Director*')")。演算子を含まない ( で始まる文字列は生の LDAP フィルターとしてそのまま使います。-Filter * は全件です。'Enabled -eq $false'、"Enabled -eq 'False'"、"Enabled -eq '`$false'" のどれでも同じ意味になります(v1.4.1 から。v1.4.0 までは $false そのものを引用符で囲むと真偽値として解釈されず、正しく絞り込めませんでした)。-Filter で使える拡張プロパティ(v1.4)
次のプロパティは LDAP 属性の形式に合わせて自動変換します(プロパティ名の大文字小文字は区別しません)。
| 種別 | プロパティ | 使える演算子 | 右辺の書き方 |
|---|---|---|---|
| 日時(FileTime 属性) | LastLogonDate / PasswordLastSet / AccountExpirationDate / LastBadPasswordAttempt / AccountLockoutTime | -eq -ne -ge -le -gt -lt | 日時文字列、または FileTime の整数値 |
| 日時(Generalized-Time 属性) | Created(whenCreated)/ Modified(whenChanged) | 同上 | 日時文字列 |
| userAccountControl のビット | Enabled / PasswordNeverExpires / PasswordNotRequired / SmartcardLogonRequired / TrustedForDelegation | -eq -ne | $true / $false(ビット判定の拡張マッチルール 1.2.840.113556.1.4.803 に変換) |
日時文字列として受け付ける形式は yyyy-MM-dd、yyyy-MM-dd HH:mm、yyyy-MM-dd HH:mm:ss、yyyy-MM-ddTHH:mm:ss、yyyy/MM/dd、yyyy/MM/dd HH:mm、yyyy/MM/dd HH:mm:ss です。月・日・時は 1 桁でも構いません(2026/1/5 9:05。v1.4.1 から)。端末の地域設定に左右されないよう、これ以外の形式(01/05/2026、Jan 5 2026 など)はエラーにしています。タイムゾーンの指定がない値はローカル時刻として扱います。
# 90 日以上パスワードを変更していないユーザー
$d = (Get-Date).AddDays(-90).ToString('yyyy-MM-dd')
Get-ADUser -Filter "PasswordLastSet -le '$d'" -Server dc01.corp.local
# 2024 年 4 月 1 日以降に作成されたコンピュータ
Get-ADComputer -Filter "Created -ge '2024-04-01'" -Server dc01.corp.local
# パスワード無期限のユーザー
Get-ADUser -Filter 'PasswordNeverExpires -eq $true' -Server dc01.corp.local
LockedOut / PasswordExpired / PasswordExpiryDate / MachinePasswordAge / IPv4Address / IPv6Address / LinkedGroupPolicyObjects は、DC が計算する構築属性や、取得後にこのライブラリが計算する値のため、サーバー側で絞り込めません。-Filter に指定するとエラーになります。取得後に Where-Object で絞り込んでください。Get-ADUser -Filter 'Enabled -eq $true' -Server dc01.corp.local | Where-Object LockedOut
Get-ADUser
ユーザーオブジェクトを検索・取得します。
構文
Get-ADUser [-Identity] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-SearchScope <string>] [-Properties <string[]>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-ADUser [-Filter <string>] [-LDAPFilter <string>] [-Server <string>] [-UseSSL]
[-Credential <PSCredential>] [-SearchBase <string>] [-SearchScope <string>]
[-Properties <string[]>] [-ResultSetSize <int>] [-Timeout <int>]
-Identity は DN / ObjectGUID / SID / sAMAccountName で指定し、見つからないときは例外になります(「-Identity の指定」参照)。-Identity と -Filter は同時に指定できません。
既定の出力プロパティ
DistinguishedName, Name, SamAccountName, UserPrincipalName, DisplayName, EmailAddress, Enabled, LockedOut, PasswordExpired, AccountExpirationDate, LastLogonDate, PasswordLastSet, MemberOf, ObjectClass, SID, ObjectGUID
SID と ObjectGUID は RSAT の既定出力に含まれるため、既定の出力に入れています。型は「SID / ObjectGUID の型」を参照してください。
アカウント状態のプロパティ(ログイントラブルの切り分け)
| プロパティ | 意味 | 取得元 |
|---|---|---|
Enabled | アカウントが有効か | userAccountControl(bit 0x2 が立っていれば無効) |
LockedOut | 現在ロックアウト中か | msDS-User-Account-Control-Computed(DC が計算。bit 0x10) |
PasswordExpired | パスワードが期限切れか | msDS-User-Account-Control-Computed(DC が計算。bit 0x800000) |
AccountExpirationDate | アカウントの有効期限(無期限は空) | accountExpires |
PasswordExpiryDate ※既定外 | パスワードの期限日時(無期限は空) | msDS-UserPasswordExpiryTimeComputed(DC が計算) |
PasswordNeverExpires ※既定外 | パスワード無期限の設定か | userAccountControl(bit 0x10000) |
※既定外のプロパティは -Properties で指定したときだけ返します。
LockedOut / PasswordExpired / PasswordExpiryDate は DC が計算する構築属性を読むため、ドメインのポリシー(lockoutDuration / maxPwdAge)やきめ細かいパスワードポリシーを別に調べる必要はありません。値は問い合わせた DC がその時点で計算したものです。これらは -Filter には使えないため、取得後に Where-Object で絞り込みます。LastLogonDate は lastLogonTimestamp から求めるため、最大で約 14 日の遅れがあります。「昨日ログオンしたのに古い日付が出る」のは正常な動作です。正確な最終ログオンが必要な場合は、すべての DC の lastLogon(DC 間で複製されない属性)を集める必要があります。使用例
# アカウント名(sAMAccountName)で取得
Get-ADUser -Identity yamada -Server dc01.corp.local
# 表示名で絞り込み
Get-ADUser -Filter "DisplayName -like '山田*'" -Server dc01.corp.local
# メールアドレスで探す(-Identity ではなく -Filter / -LDAPFilter を使う)
Get-ADUser -Filter "EmailAddress -eq 'yamada@corp.local'" -Server dc01.corp.local
Get-ADUser -LDAPFilter "(mail=yamada@corp.local)" -Server dc01.corp.local
# パスワードの期限日と無期限設定も取得
Get-ADUser -Identity yamada -Properties PasswordExpiryDate,PasswordNeverExpires -Server dc01.corp.local
# ロックアウト中の有効なユーザー
Get-ADUser -Filter 'Enabled -eq $true' -Server dc01.corp.local | Where-Object LockedOut
# 追加属性を取得
Get-ADUser -Identity yamada -Properties description,telephoneNumber -Server dc01.corp.local
# 全属性取得
Get-ADUser -Identity yamada -Properties * -Server dc01.corp.local
# 特定 OU 内のみ検索(OneLevel)
Get-ADUser -LDAPFilter "(objectClass=user)" -SearchBase "OU=Tokyo,DC=corp,DC=local" `
-SearchScope OneLevel -Server dc01.corp.local
# 無効ユーザーをすべて取得
Get-ADUser -Filter 'Enabled -eq $false' -Server dc01.corp.local
Get-ADGroup
グループオブジェクトを検索・取得します。
構文
Get-ADGroup [-Identity] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-SearchScope <string>] [-Properties <string[]>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-ADGroup [-Filter <string>] [-LDAPFilter <string>] [-Server <string>] [-UseSSL]
[-Credential <PSCredential>] [-SearchBase <string>] [-SearchScope <string>]
[-Properties <string[]>] [-ResultSetSize <int>] [-Timeout <int>]
-Identity はグループの DN / ObjectGUID / SID / sAMAccountName で指定し、見つからないときは例外になります。グループの表示名や cn で探すときは -Filter "Name -eq '…'" を使ってください。
既定の出力プロパティ
DistinguishedName, Name, SamAccountName, GroupScope, GroupCategory, Description, Member, MemberOf, ObjectGUID, SID, ObjectClass
使用例
# グループ名で取得
Get-ADGroup -Identity "IT-Staff" -Server dc01.corp.local
# セキュリティグループのみ取得
Get-ADGroup -LDAPFilter "(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648))" `
-Server dc01.corp.local
# グローバルスコープのグループを検索
Get-ADGroup -Filter "GroupScope -eq 'Global'" -Server dc01.corp.local
# メンバー一覧を含めて取得
Get-ADGroup -Identity "IT-Staff" -Properties member -Server dc01.corp.local
Get-ADGroupMember
グループのメンバーを取得します。
構文
Get-ADGroupMember [-Identity] <string> [-Recursive] [-Server <string>] [-UseSSL]
[-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
パラメータ
| パラメータ | 説明 |
|---|---|
-Identity 必須 | グループの DN / ObjectGUID / SID / sAMAccountName。グループが見つからないときは例外 |
-Recursive | ネストされたグループを再帰的に展開してすべてのメンバーを返す(ネストされたグループ自体は出力しない。RSAT と同じ) |
出力プロパティ
DistinguishedName, Name, SamAccountName, ObjectClass, SID(SID は SecurityIdentifier 型)
primaryGroupID によるメンバー(v1.4)
Domain Users や Domain Computers などのグループは member 属性が空で、メンバーはメンバー側の primaryGroupID 属性で表されています。v1.4 から Get-ADGroupMember はこの経路のメンバーも RSAT と同じように返します(-Recursive の有無どちらでも)。グループの SID の末尾(RID)で (primaryGroupID=<RID>) を検索し、member 属性のメンバーと重複を除いて連結します。
使用例
# 直接メンバーのみ取得
Get-ADGroupMember -Identity "IT-Staff" -Server dc01.corp.local
# 再帰展開(ネストグループのメンバーも含む)
Get-ADGroupMember -Identity "IT-Staff" -Recursive -Server dc01.corp.local
# 結果をユーザーのみに絞り込む
Get-ADGroupMember -Identity "IT-Staff" -Recursive -Server dc01.corp.local |
Where-Object ObjectClass -eq 'user'
-Recursive はグループを 1 つずつ段階的に展開します(v1.1 から)。循環参照の検出と重複の除去を行い、1500 件を超えるグループも range 取得で取りこぼしません。大規模グループでは時間がかかるため、必要に応じて -ResultSetSize / -Timeout を指定してください。検索ベースの外(他ドメインのメンバーや ForeignSecurityPrincipal)で解決できなかったメンバーがあると、件数を警告で表示します。Get-ADComputer
コンピュータオブジェクトを検索・取得します。
構文
Get-ADComputer [-Identity] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-SearchScope <string>] [-Properties <string[]>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-ADComputer [-Filter <string>] [-LDAPFilter <string>] [-Server <string>] [-UseSSL]
[-Credential <PSCredential>] [-SearchBase <string>] [-SearchScope <string>]
[-Properties <string[]>] [-ResultSetSize <int>] [-Timeout <int>]
-Identity は DN / ObjectGUID / SID / sAMAccountName で指定し、見つからないときは例外になります。コンピュータの sAMAccountName は末尾に $ が付きます(PC001$)が、RSAT と同じく $ を省いて Get-ADComputer PC001 と指定しても一致します(v1.4.1 から)。
既定の出力プロパティ
DistinguishedName, Name, SamAccountName, DNSHostName, OperatingSystem, Enabled, LastLogonDate, PasswordLastSet, MachinePasswordAge, IPv4Address, ObjectGUID, SID, ObjectClass
MachinePasswordAge はマシンアカウントのパスワードを最後に設定してからの経過日数です(pwdLastSet から計算)。既定の更新周期は 30 日なので、30 日を大きく超えている場合は長期間オフラインか、セキュアチャネル(信頼関係)が壊れている可能性があります。IPv4Address は dNSHostName を DNS で名前解決した結果です。どちらも -Filter には使えません。使用例
# コンピュータ名で取得(sAMAccountName は末尾 $ 付き)
Get-ADComputer -Identity 'PC001$' -Server dc01.corp.local
# $ を省いても同じ(v1.4.1 から)
Get-ADComputer PC001 -Server dc01.corp.local
# OS で絞り込み
Get-ADComputer -Filter "OperatingSystem -like '*Server 2022*'" -Server dc01.corp.local
# 無効なコンピュータ一覧
Get-ADComputer -Filter 'Enabled -eq $false' -Server dc01.corp.local
# マシンパスワードが 30 日以上更新されていないコンピュータ(信頼関係失敗の疑い)
Get-ADComputer -Filter "OperatingSystem -like '*Windows 1*'" -Server dc01.corp.local |
Where-Object { $_.MachinePasswordAge -gt 30 }
# IPv6 アドレスも含めて取得(DNS で名前解決)
Get-ADComputer -Identity 'PC001$' -Properties IPv6Address -Server dc01.corp.local
Get-ADOrganizationalUnit
OU(組織単位)オブジェクトを検索・取得します。
構文
Get-ADOrganizationalUnit [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-Properties <string[]>]
[-ResultSetSize <int>] [-Timeout <int>]
-Identity は OU の DN または ObjectGUID で指定します(OU には sAMAccountName がないため、名前では一致しません)。見つからないときは例外になります。
既定の出力プロパティ
DistinguishedName, Name, Description, Created, Modified, ObjectGUID, ObjectClass, LinkedGroupPolicyObjects
LinkedGroupPolicyObjects は gPLink 属性から取り出した、リンクされている GPO の DN の配列です(v1.3 で追加。-Filter には使えません)。
使用例
# すべての OU を取得
Get-ADOrganizationalUnit -Filter * -Server dc01.corp.local
# 名前で絞り込み
Get-ADOrganizationalUnit -Filter "Name -like 'Tokyo*'" -Server dc01.corp.local
# DN で指定
Get-ADOrganizationalUnit -Identity "OU=Tokyo,OU=Corp,DC=corp,DC=local" -Server dc01.corp.local
# GPO リンク情報を含めて取得
Get-ADOrganizationalUnit -Filter * -Properties gPLink -Server dc01.corp.local
Get-ADObject
種類を問わず AD オブジェクトを検索・取得します。削除済みオブジェクトの検索も可能です。
構文
Get-ADObject [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-IncludeDeletedObjects] [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-Properties <string[]>] [-ResultSetSize <int>] [-Timeout <int>]
-Identity は DN / ObjectGUID / SID / sAMAccountName で指定し、見つからないときは例外になります。
既定の出力プロパティ
DistinguishedName, Name, ObjectClass, ObjectGUID, SID, Created, Modified
パラメータ(追加)
| パラメータ | 説明 |
|---|---|
-IncludeDeletedObjects | AD ごみ箱が有効な環境で削除済みオブジェクトも検索対象に含める |
使用例
# DN で任意のオブジェクトを取得
Get-ADObject -Identity "CN=yamada,OU=Users,DC=corp,DC=local" -Server dc01.corp.local
# すべてのオブジェクトタイプを検索
Get-ADObject -LDAPFilter "(name=yamada)" -Server dc01.corp.local
# 削除済みオブジェクトを検索(AD ごみ箱が有効な環境のみ)
Get-ADObject -LDAPFilter "(isDeleted=TRUE)" -IncludeDeletedObjects -Server dc01.corp.local
-IncludeDeletedObjects は AD ごみ箱(Recycle Bin)が有効な環境でのみ機能します。無効な環境では削除済みオブジェクトはすぐに消去されます。Get-ADServiceAccount
管理サービスアカウント(gMSA / sMSA)を検索・取得します。
構文
Get-ADServiceAccount [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-Properties <string[]>] [-SearchScope <string>]
[-ResultSetSize <int>] [-Timeout <int>]
-Identity は DN / ObjectGUID / SID / sAMAccountName で指定し、見つからないときは例外になります。サービスアカウントの sAMAccountName は末尾に $ が付きます(例: svc-web$)。-SearchScope / -ResultSetSize / -Timeout は v1.3 で追加しました。
既定の出力プロパティ
DistinguishedName, Name, SamAccountName, DNSHostName, Enabled, ObjectGUID, SID, ObjectClass
使用例
# すべての管理サービスアカウントを取得
Get-ADServiceAccount -Server dc01.corp.local
# gMSA のみ取得
Get-ADServiceAccount -LDAPFilter "(objectClass=msDS-GroupManagedServiceAccount)" -Server dc01.corp.local
# 名前で検索
Get-ADServiceAccount -Filter "Name -like 'svc-*'" -Server dc01.corp.local
Get-ADDomain
ドメイン情報を取得します。
構文
Get-ADDomain [-Identity <string>] [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力プロパティ
| プロパティ | 説明 |
|---|---|
| DNSRoot | ドメインの DNS 名(例: corp.local) |
| DistinguishedName | ドメインの DN(例: DC=corp,DC=local) |
| Forest | フォレストルートの DNS 名 |
| NetBIOSName | ドメインの NetBIOS 名(構成パーティションの crossRef の nETBIOSName) |
| DomainMode | ドメイン機能レベル名(例: Windows2016Domain) |
| DomainSID | ドメインの SID(文字列) |
| PDCEmulator / RIDMaster / InfrastructureMaster | 各 FSMO 役割を持つ DC のホスト名 |
-Identity は -Server を省略したときだけ接続先として使います。
使用例
Get-ADDomain -Server dc01.corp.local
# Identity にドメイン名を指定(Server として扱われる)
Get-ADDomain -Identity corp.local
Get-ADDomainController
ドメインコントローラー情報を取得します。
構文
Get-ADDomainController [-Identity <string>] [-Filter <string>] [-Discover]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力プロパティ
| プロパティ | 説明 |
|---|---|
| Name | DC のホスト名 |
| HostName | DC の FQDN |
| Site | DC が所属するサイト名 |
| IsGlobalCatalog | グローバルカタログか(NTDS Settings の options bit 0x1) |
| IsReadOnly | 読み取り専用 DC(RODC)か |
| Domain | 接続先 DC のドメインの DNS 名 |
| Forest | フォレストルートの DNS 名 |
構成パーティションの NTDS Settings(nTDSDSA)を列挙し、フォレスト内のすべての DC を返します(v1.3 から)。-Discover を付けると、以前と同じく接続先 DC 1 台だけを返します(このとき Site / IsGlobalCatalog / IsReadOnly は空)。
-Identity は取得した DC の Name / HostName とワイルドカードで照合します(例: -Identity 'dc0*')。-Filter は * または省略で全件です。それ以外の -Filter は現在は解釈されず、全件を返します。Domain は各 DC の所属ドメインではなく、接続先 DC のドメインです。使用例
Get-ADDomainController -Server dc01.corp.local
Get-ADDomainController -Identity 'dc0*' -Server dc01.corp.local
Get-ADDomainController -Discover -Server dc01.corp.local
Get-ADForest
フォレスト情報を取得します。
構文
Get-ADForest [-Identity <string>] [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力プロパティ
| プロパティ | 説明 |
|---|---|
| Name | フォレストルートの DNS 名 |
| RootDomain | フォレストルートドメインの DNS 名 |
| ForestMode | フォレスト機能レベル名(例: Windows2016Forest) |
| SchemaMaster / DomainNamingMaster | 各 FSMO 役割を持つ DC のホスト名 |
| Domains | フォレスト内のドメインの DNS 名の一覧 |
| UPNSuffixes | 追加の UPN サフィックスの一覧 |
| Sites | サイト名の一覧 |
-Identity は -Server を省略したときだけ接続先として使います。
使用例
Get-ADForest -Server dc01.corp.local
Get-ADDefaultDomainPasswordPolicy
ドメインの既定パスワードポリシーを取得します。
構文
Get-ADDefaultDomainPasswordPolicy [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力プロパティ
| プロパティ | 説明 |
|---|---|
| DistinguishedName | ドメインの DN |
| MinPasswordLength | 最小パスワード長 |
| PasswordHistoryCount | パスワード履歴の保存件数 |
| LockoutThreshold | アカウントロックアウトのしきい値 |
| MaxPasswordAge / MinPasswordAge | パスワードの最大 / 最小有効期間(TimeSpan。無期限は空) |
| LockoutDuration | ロックアウトの継続時間(TimeSpan) |
| LockoutObservationWindow | ロックアウトカウンターのリセットまでの時間(TimeSpan) |
| ComplexityEnabled | 複雑さの要件が有効か(pwdProperties bit 0x1) |
| ReversibleEncryptionEnabled | 元に戻せる暗号化で保存するか(pwdProperties bit 0x10) |
使用例
Get-ADDefaultDomainPasswordPolicy -Server dc01.corp.local
CN=Password Settings Container の ACL 制限のため、LDAP では通常ユーザーから読み取れません。PSO の確認は DC 上で RSAT を使用してください。Get-ADTrust
ドメイン信頼関係を取得します。
構文
Get-ADTrust [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力プロパティ
| プロパティ | 説明 |
|---|---|
| DistinguishedName / Name | 信頼オブジェクト(CN=System 配下の trustedDomain)の DN と名前 |
| Source | 接続先ドメインの DNS 名 |
| Target | 信頼先(trustPartner) |
| Direction | Disabled / Inbound / Outbound / Bidirectional |
| TrustType | Downlevel / Uplevel / MIT / DCE |
| ForestTransitive | フォレストの推移的な信頼か(trustAttributes bit 0x8) |
| IntraForest | 同じフォレスト内の信頼か(trustAttributes bit 0x20) |
-Identity は DN / ObjectGUID で指定します。信頼先の名前で探すときは -Filter を使ってください。見つからないときは空を返します。
使用例
# すべての信頼関係を取得
Get-ADTrust -Server dc01.corp.local
# 信頼先ドメイン名で検索
Get-ADTrust -Filter "Name -like 'partner*'" -Server dc01.corp.local
Get-ADReplicationSite
AD サイトを取得します。サイト情報はフォレスト共通です。
構文
Get-ADReplicationSite [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力: Name, DistinguishedName, Description。-Identity は DN / ObjectGUID で指定します(サイト名では一致しません)。見つからないときは空を返します。
使用例
Get-ADReplicationSite -Server dc01.corp.local
# サイト名で絞り込む場合は -Filter
Get-ADReplicationSite -Filter "Name -eq 'Default-First-Site-Name'" -Server dc01.corp.local
Get-ADReplicationSiteLink
サイトリンクを取得します。
構文
Get-ADReplicationSiteLink [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力: Name, DistinguishedName, siteList(リンクされているサイトの DN), cost。-Identity は DN / ObjectGUID で指定します。見つからないときは空を返します。
使用例
Get-ADReplicationSiteLink -Server dc01.corp.local
Get-ADReplicationSiteLink -Filter "Name -like 'DEFAULTIPSITELINK*'" -Server dc01.corp.local
Get-ADReplicationSubnet
サイトに関連付けられたサブネットを取得します。
構文
Get-ADReplicationSubnet [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力: Name, DistinguishedName, siteObject(関連付けられたサイトの DN), location。-Identity は DN / ObjectGUID で指定します(サブネット名では一致しません)。見つからないときは空を返します。
使用例
Get-ADReplicationSubnet -Server dc01.corp.local
# サブネット名で絞り込む場合は -Filter
Get-ADReplicationSubnet -Filter "Name -eq '192.168.10.0/24'" -Server dc01.corp.local
Get-ADReplicationConnection
DC 間のレプリケーション接続オブジェクトを取得します。
構文
Get-ADReplicationConnection [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>]
出力: Name, DistinguishedName, fromServer(複製元 DC の NTDS Settings の DN), options。-Identity は DN / ObjectGUID で指定します。見つからないときは空を返します。
使用例
Get-ADReplicationConnection -Server dc01.corp.local
Get-ADGpoLink 追加機能
指定した OU にリンクされている GPO の一覧と状態を取得します。
構文
Get-ADGpoLink [-Target] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
パラメータ
| パラメータ | 説明 |
|---|---|
-Target 必須 | 対象 OU の DN(例: OU=Tokyo,OU=Corp,DC=corp,DC=local)。内部で Get-ADOrganizationalUnit -Identity を呼ぶため、OU が見つからないときは例外になります |
出力プロパティ
| プロパティ | 説明 |
|---|---|
| TargetOU | 対象 OU の DN |
| GpoName | GPO の表示名 |
| GpoGuid | GPO の GUID |
| LinkEnabled | リンクが有効か(True/False) |
| Enforced | 強制適用(Enforced)か(True/False) |
| Order | リンク順序(1 が最高優先) |
使用例
# OU にリンクされた GPO を確認
Get-ADGpoLink -Target "OU=Tokyo,OU=Corp,DC=corp,DC=local" -Server dc01.corp.local
# 強制適用されている GPO のみ表示
Get-ADGpoLink -Target "OU=Tokyo,OU=Corp,DC=corp,DC=local" -Server dc01.corp.local |
Where-Object Enforced -eq $true
Get-ADDnsRecord 追加機能
AD 統合 DNS のレコードを取得します。A / AAAA レコードの IP アドレスも解析して返します。
構文
Get-ADDnsRecord [-Name <string>] [-ZoneName <string>] [-Partition <Both|Domain|Forest>]
[-ComputerName <string>] [-UseSSL] [-Credential <PSCredential>]
パラメータ
| パラメータ | 説明 |
|---|---|
-Name | レコード名(ホスト部分)の完全一致でフィルター(例: pc001) |
-ZoneName | 特定のゾーンに絞り込む(例: corp.local)。省略時は全ゾーン検索 |
-Partition | 探索先の DNS アプリケーション パーティション。Both(既定)/ Domain / Forest。DomainDnsZones はドメイン NC 配下、ForestDnsZones はフォレストルート NC 配下にあり、子ドメインでは両者の DN が異なる(例: DC=DomainDnsZones,DC=child,DC=corp,DC=local と DC=ForestDnsZones,DC=corp,DC=local)。ForestDnsZones のゾーンだけを見たいときは -Partition Forest |
-ComputerName | 接続先 DC。-Server でも指定できます(-Server は -ComputerName の別名)。-UseSSL を使うときは指定が必須 |
出力プロパティ
| プロパティ | 説明 |
|---|---|
| ZoneName | DNS ゾーン名(例: corp.local) |
| Name | レコード名(ホスト部分) |
| RecordType | レコード種別(A, AAAA, NS, CNAME, SOA, PTR, MX, TXT, SRV など) |
| Data | A / AAAA レコードは IP アドレス文字列。その他は null |
| DistinguishedName | AD 内の DN |
| WhenChanged | 最終更新日時 |
使用例
# ホスト名で DNS レコードを取得
Get-ADDnsRecord -Name pc001 -ComputerName dc01.corp.local
# ゾーン内のすべての A レコードを取得
Get-ADDnsRecord -ZoneName corp.local -ComputerName dc01.corp.local |
Where-Object RecordType -eq 'A'
# フィルタなし(全ゾーン・全レコード)
Get-ADDnsRecord -ComputerName dc01.corp.local
# 子ドメインの DNS を取得(DC を切り替える)
Get-ADDnsRecord -ComputerName dc01.child.corp.local -ZoneName child.corp.local
# ForestDnsZones だけを探索(_msdcs ゾーンなど)
Get-ADDnsRecord -ComputerName dc01.child.corp.local -Partition Forest
-Partition Both)では DomainDnsZones と ForestDnsZones の両方を検索します。存在しないパーティションやゾーンは読み飛ばします。IP アドレス解析: A レコード(IPv4)と AAAA レコード(IPv6)の Data フィールドに IP アドレスを返します。他のレコード種別は Data が null になります。
Invoke-ADSearchSelfTest
ライブラリの読み込み状態と AD への接続を確認します。
構文
Invoke-ADSearchSelfTest [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SampleGroup <string>]
パラメータ
| パラメータ | 説明 |
|---|---|
-Server | 省略時は関数ロードのチェックのみ実施(ドメインには接続しません) |
-SampleGroup | Get-ADGroupMember -Recursive のテストに使用するグループ(既定: Domain Admins)。-Identity と同じく sAMAccountName などで指定 |
結果は Test / Result(Pass・Fail)/ Detail の表で返します。公開関数の一覧は ADSearch.psd1 の FunctionsToExport(42 関数)から読み、すべて読み込まれているか、モジュールとして読み込んだ場合はエクスポートと一致しているかを確認します。-Server を指定すると、接続・Get-ADUser・Get-ADGroup・Get-ADGroupMember -Recursive の動作も確認します。
使用例
# 関数ロード確認のみ(サーバー未指定)
Invoke-ADSearchSelfTest
# 接続テストも含めて実行
Invoke-ADSearchSelfTest -Server dc01.corp.local
Get-ADUserHealth v1.3
1 ユーザーのアカウント状態・メール(ハイブリッド)状態・グループ所属を 1 オブジェクトにまとめて返す診断コマンドです。内部で Get-ADUser を 1 回呼び出し、Exchange 属性も合わせて取得します。オンプレ AD にスタンプされた値のみが対象で、Exchange Online 側でしか分からない情報(実メールボックスサイズ・EXO 側のブロック状態等)は取得できません。
構文
Get-ADUserHealth [-Identity] <string> [-Recursive] [-Server <string>] [-UseSSL]
[-Credential <PSCredential>] [-SearchBase <string>] [-Timeout <int>]
-Identity は DN / ObjectGUID / SID / sAMAccountName に加えて、@ を含む値を UPN またはメールアドレスとして受け付けます(v1.4 の -Identity 厳格化の後も、このコマンドでは UPN・メールアドレスで引けるようにしています)。見つからないときは例外になります。
出力: Name, SamAccountName, UserPrincipalName, DisplayName, Description, Enabled, LockedOut, PasswordExpired, PasswordExpiryDate, PasswordNeverExpires, AccountExpirationDate, PasswordLastSet, LastLogonDate, BadLogonCount, AccountLockoutTime, WhenCreated, WhenChanged, MailEnabled, PrimarySmtpAddress, EmailAddresses, RemoteRoutingAddress, RemoteRecipientType, RecipientTypeDetails, HiddenFromAddressLists, GroupCount, Groups, DistinguishedName。
アカウント状態の各プロパティの意味は Get-ADUser の「アカウント状態のプロパティ」と同じです。
-Recursive はグループ所属を LDAP_MATCHING_RULE_IN_CHAIN(OID: 1.2.840.113556.1.4.1941)でネスト展開し、単一クエリで全所属グループを返します。既定(指定なし)は直接所属(memberOf)のみ。WhenCreated/WhenChanged はアカウント作成時期・最終変更の切り分けに使用します。Get-ADUserHealth -Identity yamada -Server dc01.corp.local
Get-ADUserHealth -Identity yamada@contoso.com -Server dc01.corp.local -Recursive
Get-ADUserHealth -Identity yamada -Server dc01.corp.local | Format-List
Search-ADAccount v1.4
RSAT の Search-ADAccount と同様のパラメーターセット(-AccountInactive / -AccountDisabled / -AccountExpired / -PasswordExpired / -PasswordNeverExpires / -LockedOut)で、非アクティブ・無効・期限切れ等のアカウントを棚卸しします(RSAT のサブセット互換)。既定ではユーザー・コンピューターの両方が対象で、-UsersOnly / -ComputersOnly で絞り込めます。
構文
Search-ADAccount [-AccountInactive] [-TimeSpan <TimeSpan>] [-DaysInactive <int>] [<共通>]
Search-ADAccount -AccountDisabled [<共通>]
Search-ADAccount -AccountExpired [<共通>]
Search-ADAccount -PasswordExpired [<共通>]
Search-ADAccount -PasswordNeverExpires [<共通>]
Search-ADAccount -LockedOut [<共通>]
<共通> = [-UsersOnly] [-ComputersOnly] [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-ResultSetSize <int>] [-Timeout <int>]
| スイッチ | 内容 |
|---|---|
-AccountInactive(-TimeSpan または -DaysInactive と併用) | 指定期間ログオンのないアカウント(未ログオンも含む)。両方を指定したときは -TimeSpan を使います。どちらも指定しないとエラー |
-AccountDisabled | 無効化されているアカウント |
-AccountExpired | アカウント有効期限切れ(有効期限が未設定・無期限のものは含まない) |
-PasswordExpired | パスワード期限切れ(無効化されているアカウントは含まない) |
-PasswordNeverExpires | パスワード無期限設定 |
-LockedOut | 現在ロックアウト中(ロックアウト時間が過ぎて自動解除されたものは含まない) |
-UsersOnly / -ComputersOnly | 対象オブジェクトの絞り込み(同時指定不可。指定するとエラー) |
出力: DistinguishedName, Name, SamAccountName, ObjectClass, SID, Enabled, LockedOut, PasswordExpired, PasswordNeverExpires, AccountExpirationDate, LastLogonDate, PasswordLastSet。
- 条件のスイッチは 1 回の実行で 1 つだけ指定できます(パラメーターセットが別のため、2 つ以上指定するとエラー)。
- 条件のスイッチを何も付けないときは
-AccountInactiveとして扱うため、-TimeSpanか-DaysInactiveが必要です。 -SearchBase配下をサブツリー全体で検索します(-SearchScopeはありません)。
-AccountInactive は lastLogonTimestamp を判定に使うため、レプリケーション遅延(既定で最大約14日)により結果に同程度の誤差を含みます(RSAT も同じ制約)。
-PasswordExpired / -LockedOut は DC が計算する構築属性のためサーバー側フィルターができず、取得後にクライアント側で絞り込みます(-LockedOut は lockoutTime が設定されているものだけをサーバー側で候補にします)。大規模環境では -SearchBase で対象を絞ることを推奨します。この 2 つでは -ResultSetSize を絞り込んだ後の件数に適用します。# 90日以上ログオンのないユーザー
Search-ADAccount -AccountInactive -DaysInactive 90 -UsersOnly -Server dc01.corp.local
# TimeSpan で期間を指定(コンピューターのみ)
Search-ADAccount -AccountInactive -TimeSpan (New-TimeSpan -Days 60) -ComputersOnly -Server dc01.corp.local
# ロックアウト中のアカウント
Search-ADAccount -LockedOut -Server dc01.corp.local
# 特定 OU のパスワード期限切れユーザー
Search-ADAccount -PasswordExpired -UsersOnly -SearchBase "OU=Tokyo,DC=corp,DC=local" -Server dc01.corp.local
Get-ADComputerHealth v1.4
Get-ADUserHealth のコンピュータ版です。信頼関係(セキュアチャネル)トラブルの一次切り分けに必要な情報を 1 オブジェクトで返します。内部で Get-ADComputer を 1 回呼び出します。
構文
Get-ADComputerHealth [-Identity] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-Timeout <int>]
出力: Name, SamAccountName, DNSHostName, Description, Enabled, LastLogonDate, PasswordLastSet, MachinePasswordAge, MachinePasswordStale, OperatingSystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address, IPv6Address, DnsRegistered, Location, ManagedBy, SPNCount, GroupCount, Groups, WhenCreated, WhenChanged, DistinguishedName。
-Identity はコンピュータ名を末尾 $ の有無どちらでも受け付けます(sAMAccountName は PC001$ 形式のため、$ 無しで指定した場合は内部でまず $ 無しで検索し、見つからなければ $ 付きで再試行します)。DN / ObjectGUID / SID でも指定できます。見つからないときは例外になります。認証や接続のエラーは再試行せず、そのまま返します。| プロパティ | 内容 |
|---|---|
Name | sAMAccountName から末尾の $ を除いた名前 |
MachinePasswordAge | マシンアカウントのパスワードを最後に設定してからの経過日数(pwdLastSet から計算) |
MachinePasswordStale | MachinePasswordAge -gt 30 なら $true(pwdLastSet が取れないときは空) |
DnsRegistered | IPv4Address または IPv6Address が取得できれば $true(dNSHostName を DNS で名前解決した結果) |
SPNCount | servicePrincipalName の件数 |
Groups / GroupCount | 直接所属しているグループ(MemberOf の各 DN の先頭 CN)とその件数 |
MachinePasswordAge -gt 30(既定のマシンパスワード更新周期は30日)。$true の場合、そのPCが長期間オフラインだったか、セキュアチャネル(信頼関係)が壊れている可能性があります。PC側での Test-ComputerSecureChannel 実行を推奨します。
Get-ADComputerHealth -Identity PC001 -Server dc01.corp.local
Get-ADComputerHealth -Identity 'PC001$' -Server dc01.corp.local | Format-List
Exchange 構成の取得 v1.1
Exchange Management Shell に接続せず、AD の構成パーティション(CN=Microsoft Exchange,CN=Services,<ConfigNC>)に格納された 構成情報のみ を読み取ります。すべて読み取り専用です。
| 共通パラメータ | 説明 |
|---|---|
-Server | 接続先 DC。省略時は現在のドメイン |
-UseSSL / -Credential | 他コマンドと同様(-UseSSL には -Server が必要) |
-Filter / -LDAPFilter | 条件で絞り込み(他コマンドと同様)。名前で絞るときは -Filter "Name -eq '…'" |
-Identity | DN / ObjectGUID で指定。v1.4 の -Identity 規則により、それ以外の値は sAMAccountName として照合されますが、構成オブジェクトには sAMAccountName がないため、名前を指定しても一致しません。見つからないときは空を返します |
-Timeout | クライアント側タイムアウト秒(0=無制限) |
Get-ExchangeServer
Exchange サーバーの一覧・役割・バージョンを取得します(msExchExchangeServer)。
Get-ExchangeServer [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
| 出力 | 説明 |
|---|---|
| Name | サーバー名 |
| Fqdn | FQDN(networkAddress から抽出) |
| ServerRole | 役割(Mailbox / ClientAccess / HubTransport / EdgeTransport 等) |
| Edition | バージョン文字列(serialNumber) |
| Site | 所属サイト |
| DistinguishedName | 構成パーティション内の DN |
Get-ExchangeServer -Server dc01.corp.local
Get-ExchangeServer -Filter "Name -like 'EX*'" -Server dc01.corp.local
Get-ReceiveConnector
受信コネクタの構成を取得します(msExchSmtpReceiveConnector)。出力: Name, Server, Bindings, RemoteIPRanges, DistinguishedName。
Get-ReceiveConnector [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-ReceiveConnector -Server dc01.corp.local
Get-SendConnector
送信コネクタの構成を取得します(msExchRoutingSMTPConnector)。出力: Name, SmartHosts, SourceServers, DistinguishedName。
Get-SendConnector [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-SendConnector -Server dc01.corp.local
Get-AcceptedDomain
受理ドメインを取得します(msExchAcceptedDomain)。出力: Name, DomainName, DomainType(Authoritative / Relay), DistinguishedName。
Get-AcceptedDomain [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-AcceptedDomain -Server dc01.corp.local
Get-RemoteDomain
リモートドメインを取得します(msExchDomainContentConfig)。出力: Name, DomainName, DistinguishedName。
Get-RemoteDomain [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-RemoteDomain -Server dc01.corp.local
Get-TransportRule
トランスポートルールを取得します(msExchTransportRule)。出力: Name, Priority, State, DistinguishedName。
Get-TransportRule [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-IncludeXml] [-Timeout <int>]
msExchTransportRuleXml)で格納されています。完全な復元は行わず、-IncludeXml を付けると生 XML を RuleXml に格納して返します。Get-TransportRule -Server dc01.corp.local
Get-TransportRule -Server dc01.corp.local -IncludeXml
Get-MailboxDatabase
メールボックスデータベースの構成を取得します(msExchPrivateMDB)。出力: Name, Server, DistinguishedName。マウント状態・サイズ等の動的情報は含みません。
Get-MailboxDatabase [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-MailboxDatabase -Server dc01.corp.local
Get-DatabaseAvailabilityGroup
データベース可用性グループ(DAG)の構成を取得します(msExchMDBAvailabilityGroup)。出力: Name, Servers, DistinguishedName。
Get-DatabaseAvailabilityGroup [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-DatabaseAvailabilityGroup -Server dc01.corp.local
Get-AddressList v1.2
アドレスリストの構成を取得します(addressBookContainer — "All Address Lists" 配下)。出力: Name, RecipientFilter, LdapRecipientFilter, Container, DistinguishedName。
Get-AddressList [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
RecipientFilter は msExchQueryFilter(OPATH 文字列)、LdapRecipientFilter は purportedSearch(LDAP フィルター文字列)をそのまま返します。Get-AddressList -Server dc01.corp.local
Get-AddressList -Identity "All Users" -Server dc01.corp.local # 名前で 1 件(v1.4.1 から)
Get-GlobalAddressList v1.2
グローバルアドレスリスト(GAL)の構成を取得します(addressBookContainer — "All Global Address Lists" 配下)。出力: Name, RecipientFilter, LdapRecipientFilter, Container, DistinguishedName。
Get-GlobalAddressList [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
Get-GlobalAddressList -Server dc01.corp.local
Get-OfflineAddressBook v1.2
オフラインアドレス帳(OAB)の構成を取得します(msExchOAB)。出力: Name, AddressLists, IsDefault, DistinguishedName。
Get-OfflineAddressBook [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
IsDefault は msExchOABFlags の bit 1 から判定(ベストエフォート。属性名は公式ドキュメントに一覧なし)。AddressLists は各 DN の先頭 CN を返します。Get-OfflineAddressBook -Server dc01.corp.local
Get-EmailAddressPolicy v1.2
電子メールアドレスポリシーの構成を取得します(msExchRecipientPolicy)。出力: Name, Priority, RecipientFilter, LdapRecipientFilter, EnabledEmailAddressTemplates, DistinguishedName。
Get-EmailAddressPolicy [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-Timeout <int>]
msExchPolicyOrder, gatewayProxy)はベストエフォートです。公式ドキュメントに一覧なし。Priority は値が小さいほど高優先。Get-EmailAddressPolicy -Server dc01.corp.local
Exchange 受信者(Recipient)系 v1.2
Exchange がスタンプした AD 属性をドメイン NC(既定の名前付けコンテキスト)から読み取ります。Exchange サーバーへの接続は不要です。
- 取得できるのは AD にスタンプされたスナップショットのみ。メールボックスサイズ・キュー・サービス稼働状態などの動的情報は取得不可。
- AD と EMS で属性名・値が異なる場合があります(例:
OrganizationalUnitは EMS の "domain/OU" 形式ではなく親 DN 文字列を返します)。 - 動的配布グループの
RecipientFilterは OPATH 文字列をそのまま返します。 - Exchange 未導入環境では空を返します(警告なし)。
Identity パラメータは受信者系独自の規則で照合し、v1.4 の -Identity 厳格化の対象外です。
| 指定した値 | 照合する属性 |
|---|---|
| DN / GUID / SID | distinguishedName / objectGUID / objectSid(他コマンドと同じ) |
@ を含む値(user@contoso.com) | userPrincipalName / mail / proxyAddresses(smtp: 付き)のいずれか |
| 上記以外 | sAMAccountName / cn / name / mailNickname(alias)のいずれか |
複数の属性で照合するため、複数の受信者が一致することがあります。見つからないときは例外ではなく空を返します(Get-DistributionGroupMember だけは、グループが見つからないと例外になります)。
Get-Recipient v1.2
mailNickname が設定された全受信者オブジェクトを取得します。出力: Name, Alias, DisplayName, PrimarySmtpAddress, RecipientType, RecipientTypeDetails, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-Recipient [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-Recipient -Server dc01.corp.local
Get-Recipient -Identity user@contoso.com -Server dc01.corp.local
Get-Recipient -Filter "DisplayName -like '山田*'" -Server dc01.corp.local
Get-Mailbox v1.2
homeMDB が設定されたメールボックスユーザーを取得します(objectCategory=person かつ homeMDB=*)。出力: Name, Alias, DisplayName, PrimarySmtpAddress, UserPrincipalName, SamAccountName, Database, ExchangeGuid, RecipientTypeDetails, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-Mailbox [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
Database は homeMDB DN の先頭 CN(例: Mailbox Database 1)。ServerName は homeMDB から確実に取れないため常に null。
ExchangeGuid は msExchMailboxGuid を GUID に変換した値。
Get-Mailbox -Server dc01.corp.local
Get-Mailbox -Identity yamada@contoso.com -Server dc01.corp.local
Get-RemoteMailbox v1.2
msExchRemoteRecipientType が設定されたリモートメールボックスユーザーを取得します(Exchange Online ハイブリッド)。出力: Name, Alias, DisplayName, PrimarySmtpAddress, RemoteRoutingAddress, RemoteRecipientType, RecipientTypeDetails, ExchangeGuid, UserPrincipalName, SamAccountName, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-RemoteMailbox [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
RemoteRoutingAddress は targetAddress から smtp: プレフィックスを除いたアドレス。RemoteRecipientType はビットマスクをデコードした文字列(例: "Migrated", "ProvisionMailbox, ProvisionArchive")。Get-RemoteMailbox -Server dc01.corp.local
Get-RemoteMailbox -Identity user@contoso.com -Server dc01.corp.local
Get-MailUser v1.2
外部メールアドレス(targetAddress)を持ち、ローカルメールボックスとリモートメールボックスがないユーザーを取得します。出力: Name, Alias, DisplayName, PrimarySmtpAddress, ExternalEmailAddress, RecipientTypeDetails, ExchangeGuid, UserPrincipalName, SamAccountName, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-MailUser [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
ExternalEmailAddress は targetAddress をそのまま(smtp: プレフィックス付き)返します。Get-MailUser -Server dc01.corp.local
Get-MailUser -Identity external@example.local -Server dc01.corp.local
Get-MailContact v1.2
mailNickname が設定されたコンタクトオブジェクト(objectClass=contact)を取得します。出力: Name, Alias, DisplayName, PrimarySmtpAddress, ExternalEmailAddress, RecipientTypeDetails, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-MailContact [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-MailContact -Server dc01.corp.local
Get-MailContact -Identity external@example.local -Server dc01.corp.local
Get-DistributionGroup v1.2
mailNickname が設定されたグループオブジェクトを取得します(配布グループ・メール対応セキュリティグループ)。出力: Name, Alias, DisplayName, PrimarySmtpAddress, GroupType, GroupCategory, RecipientTypeDetails, ManagedBy, SamAccountName, EmailAddresses, HiddenFromAddressListsEnabled, OrganizationalUnit, DistinguishedName。
Get-DistributionGroup [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
Get-DistributionGroup -Server dc01.corp.local
Get-DistributionGroup -Identity "All Staff" -Server dc01.corp.local
Get-DistributionGroup -Filter "DisplayName -like 'HR*'" -Server dc01.corp.local
Get-DynamicDistributionGroup v1.2
動的配布グループ(msExchDynamicDistributionList)を取得します。出力: Name, Alias, DisplayName, PrimarySmtpAddress, RecipientFilter, LdapRecipientFilter, RecipientContainer, EmailAddresses, HiddenFromAddressListsEnabled, DistinguishedName。
Get-DynamicDistributionGroup [-Identity <string>] [-Filter <string>] [-LDAPFilter <string>]
[-Server <string>] [-UseSSL] [-Credential <PSCredential>] [-SearchBase <string>]
[-ResultSetSize <int>] [-Timeout <int>]
RecipientFilter は msExchQueryFilter(OPATH 文字列)をそのまま返します。LdapRecipientFilter は msExchDynamicDLFilter(LDAP フィルター文字列)、RecipientContainer は msExchDynamicDLBaseDN。属性名は Microsoft Learn で確認済み。
実際のメンバーは動的計算のため取得不可。
Get-DynamicDistributionGroup -Server dc01.corp.local
Get-DynamicDistributionGroup -Identity "All Users" -Server dc01.corp.local
Get-DistributionGroupMember v1.2
配布グループの直接メンバーを取得します(非再帰。EMS の Get-DistributionGroupMember と同様)。Identity は必須。出力: Name, Alias, DisplayName, PrimarySmtpAddress, RecipientTypeDetails, SamAccountName, ObjectClass, DistinguishedName。
Get-DistributionGroupMember [-Identity] <string> [-Server <string>] [-UseSSL] [-Credential <PSCredential>]
[-SearchBase <string>] [-ResultSetSize <int>] [-Timeout <int>]
Get-DistributionGroupMember -Identity "All Staff" -Server dc01.corp.local
Get-DistributionGroupMember -Identity "DL-HR@contoso.com" -Server dc01.corp.local -ResultSetSize 500
件数上限・タイムアウト・進捗 v1.1
AD への過負荷を避けるための安全策です。次のコマンドで利用できます。
| パラメータ | 使えるコマンド |
|---|---|
-ResultSetSize と -Timeout | Get-ADUser / Get-ADGroup / Get-ADComputer / Get-ADOrganizationalUnit / Get-ADObject / Get-ADServiceAccount / Get-ADGroupMember / Search-ADAccount / Exchange 受信者系 8 コマンド |
-Timeout のみ | Exchange 構成系 12 コマンド / Get-ADUserHealth / Get-ADComputerHealth |
| パラメータ | 既定 | 説明 |
|---|---|---|
-ResultSetSize | 0(無制限) | 取得件数の上限。超過時は警告を出して打ち切り |
-Timeout | 0(無制限) | 処理のタイムアウト秒。超過時は警告を出して打ち切り |
- 大量取得時は
Write-Progressで進捗を表示します(完了時に自動クリア)。 - 既定は無制限のため、従来の取得結果は変わりません。安全に絞りたいときに明示指定してください。
- 内部的に 1000 件ページングを使用し、サーバー負荷を平準化します。
# 最大 500 件、60 秒で打ち切り
Get-ADUser -Filter 'Enabled -eq $true' -Server dc01 -ResultSetSize 500 -Timeout 60
# 巨大グループの再帰展開を安全に
Get-ADGroupMember -Identity "All-Staff" -Recursive -Server dc01 -ResultSetSize 5000 -Timeout 120
-Filter のネスト・混在(v1.1)
括弧でグループ化し、-and / -or を入れ子・混在できます。生の LDAP フィルターは自動判別してそのまま使用されます。
Get-ADUser -Filter "Department -eq 'IT' -and (Title -like '*Manager*' -or Title -like '*Director*')" -Server dc01
RSAT 互換プロパティ
Get-ADUser と Get-ADComputer は、RSAT の同名コマンドレットが -Properties で返すものと同じ名前のプロパティを取得できます。RSAT 向けに書いたスクリプトをそのまま使えます。
# 個人情報・組織情報
Get-ADUser yamada -Properties GivenName,Surname,Department,Title,Manager,Office,MobilePhone -Server dc01.corp.local
# ログオン統計・ロックの詳細
Get-ADUser yamada -Properties LogonCount,BadLogonCount,LastBadPasswordAttempt,AccountLockoutTime -Server dc01.corp.local
# userAccountControl のビット
Get-ADUser yamada -Properties PasswordNotRequired,SmartcardLogonRequired,TrustedForDelegation -Server dc01.corp.local
# コンピューター
Get-ADComputer 'PC001$' -Properties OperatingSystemVersion,Location,ManagedBy,ServicePrincipalName,IPv6Address -Server dc01.corp.local
主な追加プロパティ(ユーザー)
| プロパティ | LDAP 属性 | 備考 |
|---|---|---|
| GivenName / Surname / Initials | givenName / sn / initials | 名・姓・イニシャル |
| Title / Department / Company | title / department / company | 役職・部署・会社 |
| Manager / Office / Division / Organization | manager / physicalDeliveryOfficeName / division / o | 上司の DN・事務所・部門・組織 |
| OfficePhone / MobilePhone / HomePhone / Fax | telephoneNumber / mobile / homePhone / facsimileTelephoneNumber | 電話 |
| StreetAddress / City / State / PostalCode / Country / POBox | streetAddress / l / st / postalCode / c / postOfficeBox | 住所 |
| HomeDirectory / HomeDrive / ProfilePath / ScriptPath | 同名の LDAP 属性 | プロファイル・ログオンスクリプト |
| EmployeeID / EmployeeNumber | employeeID / employeeNumber | 社員番号 |
| LogonCount / BadLogonCount | logonCount / badPwdCount | ログオン統計 |
| LastBadPasswordAttempt / AccountLockoutTime | badPasswordTime / lockoutTime | 日時に変換済み |
| ProxyAddresses / PrimaryGroupID | proxyAddresses / primaryGroupID | メールアドレス一覧・プライマリグループの RID |
| PasswordNotRequired | userAccountControl bit 0x20 | PASSWD_NOTREQD |
| SmartcardLogonRequired | userAccountControl bit 0x40000 | SMARTCARD_REQUIRED |
| TrustedForDelegation | userAccountControl bit 0x80000 | TRUSTED_FOR_DELEGATION |
主な追加プロパティ(コンピューター)
| プロパティ | LDAP 属性 |
|---|---|
| OperatingSystemVersion / OperatingSystemServicePack | operatingSystemVersion / operatingSystemServicePack |
| Location / ManagedBy | location / managedBy |
| ServicePrincipalName | servicePrincipalName |
| IPv6Address | dNSHostName を DNS で名前解決した IPv6 アドレス |
意図的な省略
- CannotChangePassword:ACL を調べる必要があり、1 つの LDAP 属性からは判定できないため省略しています。
- PrimaryGroup の名前解決:ドメイン SID から組み立て直す必要があるため、
PrimaryGroupID(数値)だけを返します。 - 上記以外の属性は、LDAP 属性名を
-Propertiesに指定するか、-Properties *でそのまま取得できます。
実行ポリシー(RemoteSigned)対策
ネットワーク共有上の .ps1/.psm1 は RemoteSigned 環境では署名が必要で、Import-Module や . .\ADSearch.ps1 が弾かれることがあります。同梱の Import-ADSearch.ps1 は各ファイルを文字列として読み込み ScriptBlock 化して取り込むため、ファイル実行ポリシーの影響を受けません。
# ① ローダー自身も ScriptBlock 化して取り込む(1回だけ)
. ([scriptblock]::Create((Get-Content '\\server\tools\ADSearch\Import-ADSearch.ps1' -Raw)))
# ② フォルダを指定して読み込む
Import-ADSearch -Path '\\server\tools\ADSearch'
Get-ChildItem <フォルダ> | Unblock-File してから通常どおり読み込む方法もあります。制限事項
| 機能 | 制限内容 |
|---|---|
| PSO(きめ細かいパスワードポリシー) | CN=Password Settings Container の既定 ACL により、Domain Admins 以外は LDAP で読み取り不可。RSAT(ADWS)を使用してください |
| グローバルカタログ検索 | GC(ポート 3268)を使ったフォレスト横断検索には非対応。ドメインごとに -Server を切り替えて使用 |
| DC 列挙 | Get-ADDomainController は構成パーティションからフォレスト内の全 DC を列挙する。-Filter(* 以外)は解釈せず全件を返す |
| -Identity の名前指定 | DN / ObjectGUID / SID / sAMAccountName のみ。UPN・メールアドレス・表示名・cn では指定できない(-Filter を使用)。sAMAccountName を持たないオブジェクト(OU・サイト・サブネット・信頼・Exchange 構成)は DN / ObjectGUID でのみ指定可能 |
| 書き込み操作 | このライブラリはすべて読み取り専用(Get 系)です |
| DNS データの詳細解析 | A / AAAA 以外のレコード(SRV, MX, TXT など)の Data フィールドは null。詳細解析が必要な場合は RSAT の DNS Server モジュールを使用 |
| フォレスト機能レベル | Windows Server 2016 までの機能レベル(値 7)に対応。2025 Server 等で新しいレベルが追加された場合は Unknown(n) と表示されます |
| Exchange の動的情報 | キュー・メールボックスサイズ・サービス稼働状態などは AD に存在せず取得不可。構成スナップショットのみ対応 |
| Exchange トランスポートルール | 本体は XML blob のため完全復元は行わず、メタデータ と生 XML(-IncludeXml)のみ返す |
| 再帰メンバーの範囲 | Get-ADGroupMember -Recursive は接続先ドメイン内のみ展開。別ドメインメンバー・ForeignSecurityPrincipal は展開・解決されない |
マルチドメイン・マルチフォレスト環境
ADSearch は接続先 DC のドメインを対象として動作します。別ドメインの情報を取得するには -Server でそのドメインの DC を指定してください。
# フォレスト: example.local
# ドメイン構成: hq.example.local / branch1.example.local / branch2.example.local
# hq ドメインのユーザーを取得
Get-ADUser -Identity yamada -Server dc01.hq.example.local
# branch1 ドメインのグループを取得
Get-ADGroup -Identity "Branch1-Staff" -Server dc01.branch1.example.local
# サイト・サブネット情報(フォレスト共通 → どのドメインの DC でも同じ結果)
Get-ADReplicationSite -Server dc01.hq.example.local
Get-ADReplicationSubnet -Server dc01.branch1.example.local # 同一結果
| 取得対象 | スコープ | 備考 |
|---|---|---|
| ユーザー / グループ / コンピュータ / OU | ドメイン単位 | 接続先 DC のドメインのみ |
| サイト / サブネット / サイトリンク | フォレスト共通 | どのドメインの DC に接続しても同じ結果 |
| GPO | ドメイン単位 | 接続先 DC のドメインのみ |
| DNS | DomainDnsZones はドメイン単位 / ForestDnsZones はフォレスト共通 | Get-ADDnsRecord -Partition で探索先を選べる |
| フォレスト情報 | フォレスト共通 | どのドメインの DC でも同じ結果 |
| 信頼関係 | ドメイン単位 | 接続先ドメインの信頼のみ |
変更履歴
1.4.1(2026-09-24)
1.4.0 のドキュメントとコードを突き合わせて見つかった不具合を修正しました。
- -Filter の真偽値:
"PasswordNeverExpires -eq '`$true'"のように$true/$falseを引用符で囲むと一致しなかった問題を修正 - Get-ADComputer / Get-ADServiceAccount:
-Identityで末尾$を省いた名前(Get-ADComputer PC001)が見つからなかった問題を修正(RSAT と同じ動きに) - 構成オブジェクトの -Identity:
Get-ADTrust/Get-ADReplication*/ Exchange 構成系で、1.4.0 の厳格化により名前で指定しても一致しなくなっていた問題を修正。DN・ObjectGUID・名前で照合します - -Filter の日時:月・日・時の 1 桁(
2026/1/5)を受け付けるように変更 - テスト:AD なしで
-Filter/-Identityの変換を確かめるforTest/Test-ADSearchOffline.ps1を追加
1.4.0(2026-07-09)
RSAT との差異の見直しを受けて互換性を強化し、トラブルシュート向けのコマンドを追加しました。
- -Identity の厳格化(破壊的変更):受け付ける形式を DN / ObjectGUID / SID / sAMAccountName に限定し、cn / name / UPN / mail での曖昧一致を廃止。見つからない場合は空ではなく例外を返すように変更(詳細)
- SID / ObjectGUID の型:文字列ではなく、RSAT と同じ SecurityIdentifier / [guid] 型で返すように変更(詳細)
- -Filter の拡張:日時プロパティ(LastLogonDate など FileTime 系、Created / Modified)と userAccountControl のビット(PasswordNeverExpires など)に対応。サーバー側で絞り込めないプロパティはエラーにする
- Get-ADGroupMember:primaryGroupID によるメンバー(Domain Users など)も返すように変更
- コマンド追加:
Search-ADAccountとGet-ADComputerHealth - -UseSSL:
-Serverの指定を必須に変更 - 修正:見直しで見つかった回帰(
Get-ADUserHealthの UPN / メールアドレスでの検索ができなくなっていた問題など)と、Import-Moduleで読み込んだときに新しい関数がエクスポートされていなかった問題を修正。公開関数の一覧をADSearch.psd1に一本化
1.3
- 診断コマンド
Get-ADUserHealthを追加
1.2
- Exchange 受信者系コマンド(
Get-Recipient/Get-Mailbox/Get-RemoteMailbox/Get-MailUser/Get-MailContact/Get-DistributionGroup/Get-DynamicDistributionGroup/Get-DistributionGroupMember)を追加 - Exchange 構成系に
Get-AddressList/Get-GlobalAddressList/Get-OfflineAddressBook/Get-EmailAddressPolicyを追加
1.1
- Exchange 構成の取得(
Get-ExchangeServerなど)を追加 -ResultSetSize/-Timeoutと進捗表示を追加-Filterで括弧によるグループ化と-and/-orの混在に対応
ADSearch v1.4.1 | 対象環境: Windows PowerShell 5.1 以上 / Active Directory(RSAT 不要)