[ADSI] F# で System.DirectoryServices を使ってみる

 こんにちは、ぴろとでございます。Visual Studio 2010 がついに RTM されました!ということで、私たちの ADSI/ILM チームでも “ざわ…ざわ… ” しておりました。なぜかというと、Visual Studio 2010 では新しい言語 F# が追加になっています。その準備を行っていなかったためです。せっかくリリースされた F# を本ブログで取り上げないわけにはいきません!(使命感メラメラ)

ちなみに、画面はこんな感じ。なんか青くて Coooooool なイメージです。(そういえば、MSDN も青いですね!)

 

というわけで、画面にあるように、F# で sAMAccountName を取得するだけの非常に簡単なサンプルを作ってみました。

  1. //--------------------- Sample コード ------------------------
  2. open System.DirectoryServices
  3.  
  4. let ds = new DirectoryEntry(
  5.     "LDAP://dc.contoso.com/CN=Administrator,CN=Users,DC=contoso,DC=com",
  6.     "contoso\Administrator",
  7.     "P@ssword")
  8.  
  9. let strValue = ds.InvokeGet("sAMAccountName").ToString()
  10. ds.Dispose()
  11. printf "%s\n" strValue
  12. //---------------------------------------------------------------
 //--------------------- Sample コード ------------------------ 
 open System.DirectoryServices
  
 let ds = new DirectoryEntry(
         "LDAP://dc.contoso.com/CN=Administrator,CN=Users,DC=contoso,DC=com",
         "contoso\Administrator",
         "P@ssword")
  
 let strValue = ds.InvokeGet("sAMAccountName").ToString()
 ds.Dispose()
 printf "%s\n" strValue
 //--------------------------------------------------------------- 

おおー、ここだけ見ると、VB とか C# とあんまり変わらないですね。空のコンソールアプリケーションを作成すると、VB や C# と違ってエディタ上にコメント一行しかでていないため、「main とか、ないんだ…。」と一瞬あせりました…。

英語になってしまいますが、F# のサンプルや、ドキュメントがありますので、以下に掲載いたしました。

- 参考情報

Microsoft F# Developer Center

https://msdn.microsoft.com/ja-jp/fsharp/default(en-us).aspx

ちなみに、WMI のサンプルはすでに、Jomo Fisher さんの Blog で紹介されていました。

How to Enumerate all WMI Classes (Sharp Things)

https://blogs.msdn.com/jomo_fisher/archive/2010/05/18/how-to-enumerate-all-wmi-classes.aspx

皆様 F# をつかってみてください!それではご機嫌よう!

ぴろと@娘のオムツを替えている最中に(ry