PowerShell で LDAP クエリを実行する方法

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

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)'
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn