PowerShellでLDAP
LDAPのデータ操作をPowerShellでやってみました。ActiveDirectoryでも同様にできると思いますが、汎用性と導入のしやすさを考えて、OpenLDAPを使いました。
環境 : PowerShell 2.0 / Windows 7 <-> OpenLDAP 2.4.31 / Ubuntu 14.04 LTS
OpenLDAPのインストールは以下のコマンドを実行しただけ。
apt-get install ldap-utils
apt-get install slapd
自動で起動し、使用可能となります。
認証は、cn=admin,dc=nodomain / password
ホスト名は設定していないので、nodomainのままですが、これで使えるようになるのはスゴイ!
テスト前に、データを適当に作成しておきます。(ldapmodifyでもいいですが、ApacheDirectoryStudioを使用)
まずデータの参照から。
$domain = "LDAP://192.168.11.11:389/dc=nodomain" $auth = [System.DirectoryServices.AuthenticationTypes]::FastBind $root = New-Object System.DirectoryServices.DirectoryEntry($domain,"cn=admin,dc=nodomain", "password", $auth) $query = New-Object System.DirectoryServices.DirectorySearcher($root,"(objectclass=*)") $entries = $query.FindAll() $entries | %{$_.Properties} $entries[5] | %{$_.Properties} $entries[5] | %{$_.Properties["cn"]} $entries[5] | %{$_.Properties}).PropertyNames
次に、属性の追加・更新。
$query = New-Object System.DirectoryServices.DirectorySearcher($root,"(&(objectclass=*)(uid=user02))") $entry = $query.FindOne().GetDirectoryEntry() $entry.description.Value="Add Value by PS" $entry.SetInfo() $entry.givenname.Value="Edit Test" $entry.SetInfo() $query.FindOne() | %{$_.Properties}
user02にデータが更新されていることが確認できます。
LDAPデータをPowerShellオブジェクトとして扱えるのは便利。