none
PowerShellによるLDAP接続について RRS feed

  • 質問

  • 表題の通り、PowerShellによるLDAP接続で悩んでいます。

    処理の概要としては

    ①WindowsServer2008R2からLinux(RedHat)へLDAPS接続を行う。

    ②Linuxが持つ、ユーザー情報を取得する。

    以上です。

    .NetFramework、System.DirectoryServices等のコマンドレットを調べてみましたが有意義な情報が得られていません。

    ざっくりした質問となってしまいましたが、ご教授頂きたいです。

    よろしくお願い致します。

    2012年8月20日 7:02

回答

すべての返信

  • Linuxで動作しているのはOpenLDAPでしょうか?

    基本はADSIを用いてActiveDirectoryにアクセスするのと同様に、OpenLDAPにアクセスすることもできるようです。

    PowerShellでADSIを使ってADにアクセスするサンプルであればTechnetにたくさんあるので、この辺りを参考に進められてみてはいかがでしょうか。

    http://gallery.technet.microsoft.com/scriptcenter/site/search?query=ADSI%20powershell&f[1].Value=ADSI%20powershell&f[1].Type=SearchText&f[0].Value=Hey%2C%20Scripting%20Guy&f[0].Type=User&ac=8

    • 回答としてマーク 星 睦美 2012年8月27日 7:07
    2012年8月22日 11:28
    モデレータ
  • 牟田口大介様

    ご回答頂き有難うございます。

    お教え頂いたADSIで対象のLDAPサーバのIPアドレスを設定することで接続することが出来ました。

    LDAP接続に関して探していた途中で

    System.DirectoryServices.Protocols.LdapConnection

    を利用した接続の仕方を発見したのですが、ADSIと同等の接続形態だと認識してもよろしいのでしょうか?

    重ねての質問となってしまい、大変申し訳ございませんがご回答を頂けると幸いです。

    2012年8月24日 10:01
  • 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サーバーに接続するという意味では同じですが提供される機能が異なる、と考えればいいかと思います。

    2012年8月24日 11:24
    モデレータ
  • なお補足になりますが、Windows Server 2008 R2からはActiveDirectoryモジュールが使用可能です。

    これを使うと[adsi]や[adsisearcher]を利用するよりさらに簡単にADにアクセスができます。

    ADモジュールは

    Import-Module ActiveDirectory

    とすることで利用可能です。このモジュールに含まれるコマンドレットは

    Get-Command -Module ActiveDirectory

    とすることで調べられます。

    ただしこのモジュールがAD以外のLDAPサーバーにも利用できるかどうかは、未確認です。

    2012年8月24日 11:29
    モデレータ
  • 牟田口大介様

    ご回答頂き有難うございます。

    System.DirectoryServices.Protocols.LdapConnectionクラスとADSIの利便性と情報の違いについて理解できました。

    また、ADモジュールを利用してみましたが、やはりADに直接接続を行ってしまうようですね。

    初心者の質問にも関わらず、丁寧なご回答をして頂き感謝しております。

    2012年8月28日 0:49