PowerShell で LDAP クエリを実行する方法
- PowerShell における Active Directory モジュールのインストール
-
PowerShell フィルターのための
Filter
パラメーターの使用 -
PowerShell での LDAP フィルターのための
-LDAPFilter
パラメーターの使用

PowerShell で Active Directory をクエリするときに最も一般的な課題の 1つは、フィルター構文を適切に構築する方法です。
残念ながら、すべての Active Directory PowerShell モジュール cmdlet の Filter および LDAP Filter パラメーターは、多くの人にとってブラックボックスです。
この記事では、Active Directory フィルターと LDAP フィルターの使用方法を深く理解します。
PowerShell における Active Directory モジュールのインストール
進む前にいくつかの前提条件が必要です。
- PowerShell Active Directory モジュールがインストールされていること。
- ドメインに参加したコンピュータ。
- Active Directory ドメインコントローラに正常に接続し、認証されること。
通常、Install-Module
コマンドを実行すると、リモート CDN からパッケージを取得し、コンピュータにインストールします。しかし、Active Directory
モジュールでは、成功するために前提条件パッケージを確立する必要があります。
前提条件パッケージとして RSAT
または Remote Server Administration Tools
をインストールする必要があります。
以下の PowerShell スクリプトを実行して、コンピュータまたはサーバーに RSAT
をインストールできます。
Windows 10 用の RSAT のインストール:
Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online
Windows Server 用のリモートサーバー管理ツールのインストール(2008 年から 2016 年の複数バージョン):
Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature
マシンにリモートサーバー管理ツール機能をインストールすると、Windows PowerShell 用の Active Directory モジュールもインストールされます。
PowerShell フィルターのための Filter
パラメーターの使用
PowerShell フィルターは、標準の Windows PowerShell 表現構文を使用します。この方法は一般的に Active Directory 検索フィルター構文と呼ばれています。
これらのフィルターは Filter
パラメーターと共に使用されます。
フィルター内では、さまざまな AD オブジェクトプロパティを演算子を使用して比較します。たとえば、Get-ADUser
コマンドは Name
プロパティを返します。
したがって、特定の名前に一致するすべてのユーザーを見つけたい場合は、次のように使用します:
Get-ADUser -Filter "Name -eq 'John'"
プロパティ名は、LDAP 名または Active Directory cmdlet から返されるプロパティの標準名になります。
プロパティ値は通常、シングルクオートまたはダブルクオートで囲まれます。受け入れられる唯一のワイルドカードはアスタリスク*
です。
上記を見ると、ダブルクオートがフィルターを囲んでいますが、John
はシングルクオートで囲まれています。
PowerShell での LDAP フィルターのための -LDAPFilter
パラメーターの使用
軽量ディレクトリアクセスプロトコル、または LDAP は、ディレクトリデータにアクセスし、修正するためのベンダーニュートラルなプロトコルです。
ディレクトリという言葉を聞くと電話帳を思い浮かべるかもしれませんが、これは Active Directory の文脈ではそれ以上の意味を持つのです。
AD によって保存され、アクセス可能にされるさまざまなオブジェクトタイプがあり、LDAP プロトコルはそのデータを保護するために機能します。AD はさまざまなデータタイプを保持できるため、アプリケーションやユーザーはそのディレクトリを簡単にクエリする必要があります。
Active Directory は、軽量ディレクトリアクセスプロトコルである LDAP を実装しています。cmdlet と共に -LDAPFilter
パラメーターを使用すると、Active Directory ユーザーとコンピュータで作成された LDAP フィルターを使用できます。
LDAP 検索フィルターの構文は RFC 番号 4515 で定義されています。各フィルタールールは ()
で囲まれています。
以下は、独自のフィルターを作成するための基盤として Active Directory グループフィルターを使用するいくつかの例です。
- 名前(CN)が
Department
のすべてのグループ。
`'(cn=Department)'
- 名前が
Department
で説明がProd
のすべてのグループ。
'(&(cn=Department)(description=Prod))'
- 名前が
Department
またはShare Access
のいずれかのすべてのグループ。
'(|(cn=Professional Services Department)(cn=Share Access))'
- 説明が
Prod
ではないすべてのグループ。説明フィールドが全くないものも含まれます。
'(!(description=Prod))'
- 説明が
Prod
だが、名前がDepartment
ではないすべてのグループ。
'(&(description=Prod)(!(cn=Department)))'
- 説明が
\\fileserver1\share
のすべてのグループ。
'(description=\5c\5cfileserver1\5cshare)'
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn