トップ回答者
PowerShellによるLDAP接続について

質問
回答
-
Linuxで動作しているのはOpenLDAPでしょうか?
基本はADSIを用いてActiveDirectoryにアクセスするのと同様に、OpenLDAPにアクセスすることもできるようです。
PowerShellでADSIを使ってADにアクセスするサンプルであればTechnetにたくさんあるので、この辺りを参考に進められてみてはいかがでしょうか。
- 回答としてマーク 星 睦美 2012年8月27日 7:07
すべての返信
-
Linuxで動作しているのはOpenLDAPでしょうか?
基本はADSIを用いてActiveDirectoryにアクセスするのと同様に、OpenLDAPにアクセスすることもできるようです。
PowerShellでADSIを使ってADにアクセスするサンプルであればTechnetにたくさんあるので、この辺りを参考に進められてみてはいかがでしょうか。
- 回答としてマーク 星 睦美 2012年8月27日 7:07
-
ADSIはActive Directory Services Interfacesの略で、その名の通りActive DirectoryにアクセスするためのAPI群を指します。
.NETクラスではSystem.DirectoryServices.DirectoryEntryクラスとSystem.DirectoryServices.DirectorySearcherクラスがADSIでアクセスするための機能を提供しています。
PowerShellではDirectoryEntryクラスの型エイリアスが[adsi]、DirectorySearcherクラスの型エイリアスが[adsisearcher]と定義されていて、さらに文字列からこれらの型への型変換が定義されています。
そのため、$searcher=[adsisearcher]"検索フィルタ"とすることで$searcher変数にはDirectorySearcherオブジェクトが、$entry=[adsi]"パス"とすることで$entry変数にはDirectoryEntryオブジェクトがそれぞれ生成されて格納されるわけです。
ADSIはADと名前がついているものの、AD以外のLDAPサーバーにアクセスすることも可能です。
一方、System.DirectoryServices.Protocols.LdapConnectionクラスは「生の」LDAP接続を作成し、アクセスする機能を提供しています。ADSIより細かな制御ができパフォーマンスも上ですが、ADSIのように簡便に処理を記述することはできません。
つまり、ADSIはLDAPサーバーへの簡便なアクセス方法を提供し、LdapConnectionクラスはより細かな制御をするときに利用する、というもので、LDAPサーバーに接続するという意味では同じですが提供される機能が異なる、と考えればいいかと思います。
-
なお補足になりますが、Windows Server 2008 R2からはActiveDirectoryモジュールが使用可能です。
これを使うと[adsi]や[adsisearcher]を利用するよりさらに簡単にADにアクセスができます。
ADモジュールは
Import-Module ActiveDirectory
とすることで利用可能です。このモジュールに含まれるコマンドレットは
Get-Command -Module ActiveDirectory
とすることで調べられます。
ただしこのモジュールがAD以外のLDAPサーバーにも利用できるかどうかは、未確認です。