C# で Active Directory を操作するのは少し面倒です。確かに 3.5 では役立つ新しいクラスがいくつか追加されていますが、純粋な生産性のために、Powershell と Quest のActive Directory 用の無料の PowerShell コマンドを使用するの
が好きです。この場合、コードは次のようになります。
get-qaduser userid | select PhoneNumber,DisplayName
これを C# プログラムの一部として実行する必要がある場合は、それも実行できます。
public static IEnumerable<PSObject> Invoke(string script, params object[] input)
{
IList errors = null;
using (var run = new RunspaceInvoke())
{
var psResults = run.Invoke(script, input, out errors);
if (errors != null && errors.Count > 0)
Debug.WriteLine(errors.Count);
foreach (PSObject res in psResults)
yield return res;
}
}
PSObject psUser = POSHelp.Invoke(
@"add-pssnapin Quest.ActiveRoles.ADManagement
($userid) = $input | % { $_ }
get-qaduser $userid", "auserid").Single();
Debug.WriteLine(psUser.Properties["DisplayName"].Value);
Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll への参照を追加します。