Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

UserPrincipal 情報を取得する

C#でUserPrincipal情報の取得について備忘録、例によってLINQPadでの実行コード。System.DirectoryServices.AccountManagement の参照設定とNamespaceの設定が必要です。

void Main()
{
    // 対象はLocalMachine
    using (var context = new PrincipalContext(ContextType.Machine))
    {
        // こんな方法や
        using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
        {
            searcher.QueryFilter.SamAccountName = "Guest";
            searcher.FindOne().Dump();
        }

        // こんな方法で検索できます
        var up = UserPrincipal.FindByIdentity(context, "Guest");
        up.Dump();
    }
}

ちなみにDumpメソッドはLINQPadの拡張で、オブジェクトの中身をダンプしてくれる便利なメソッドです。

Domainの場合や、全部だす場合はこんな感じ。

void Main()
{
    // ドメインの場合
    using (var context = new PrincipalContext(ContextType.Domain, "hoge.local"))
    {
        // 全部出す
        using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
        {
            foreach (var result in searcher.FindAll()) 
            {
                  result.Dump()
            }
        }
    }
}