(最近仕事で関わったネタの備忘録。ちょっと内容はマニアックです)
Windowsドメインのユーザーを作成したり修正したりする作業をプログラムで行う場合がある。
通常は ADSI を使ってユーザーを作る。(広く知れ渡っているので方法は略)
しかし、そのドメインに Exchangeサーバーが入っていて、ActiveDirectoryのスキーマが変更されている場合、
ADSIだけではユーザーのExchange関連のプロパティを扱い切れず、設定を変更できなかったりする。
こういう場合は Exchange関連の操作を行うオブジェクト CDO を利用する。
例えば以下、
Set loPerson= CreateObject( "CDO.Person" )
loPerson.DataSource.Open "LDAP://~~", , adModeReadWrite, , , gsAdminID, gsAdminPassword
loPerson.Fields( "sn" )= "hogehoge"
loPerson.EmailAddresses= Array( "SMTP:main@domain.com", "smtp:sub@domain.com" ) ' メールアドレスを複数付与する
:(略)
loPerson.DataSource.Open "LDAP://~~", , adModeReadWrite, , , gsAdminID, gsAdminPassword
loPerson.Fields( "sn" )= "hogehoge"
loPerson.EmailAddresses= Array( "SMTP:main@domain.com", "smtp:sub@domain.com" ) ' メールアドレスを複数付与する
:(略)
プロパティによってはインターフェイスというものを介して設定しなくてはいけない場合もある。
Set loMbxStore= loPerson.GetInterface( "IMailboxStore" )
IMailboxStore.EnableStoreDefaults= False
IMailboxStore.StoreQuota= 8000000 ' メールボックスの容量制限をする
IMailboxStore.OverQuotaLimit= 10000000
IMailboxStore.HardLimit= 12000000
:
Set loMbxStore= loPerson.GetInterface( "IMailRecipient" )
IMailRecipient.AutoGenerateEmailAddresses= False ' 受信者ポリシーでメールアドレスを自動付与しない
IMailboxStore.EnableStoreDefaults= False
IMailboxStore.StoreQuota= 8000000 ' メールボックスの容量制限をする
IMailboxStore.OverQuotaLimit= 10000000
IMailboxStore.HardLimit= 12000000
:
Set loMbxStore= loPerson.GetInterface( "IMailRecipient" )
IMailRecipient.AutoGenerateEmailAddresses= False ' 受信者ポリシーでメールアドレスを自動付与しない
いずれの設定も、まとめて以下で更新することになる。
:(略)
loPerson.Fields.Update
loPerson.DataSource.Save
loPerson.Fields.Update
loPerson.DataSource.Save
これらについての情報は Microsoft が提供している Developers 向けのドキュメント (MSDN Library)から
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/exchangesvr.asp
Servers and Enterprise Development
→ Microsoft Exchange Server
→ SDK Documentation
→ Reference をたどる。
ただし、日本語化されているドキュメントは皆無で、ほぼ英語でしか情報が得られない。