在 C# 中使用 Active Directory 有点痛苦,当然 3.5 添加了一些新的类来提供帮助,但是为了纯粹的生产力,我喜欢使用 Powershell 和 Quest 的免费PowerShell 命令用于 Active Directory
,在这种情况下,代码看起来像
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