进入.属性[属性名称].ToString() == “mobile” 没有评估为真
本文关键字:属性 mobile 评估 ToString 进入 | 更新日期: 2023-09-27 18:31:01
namespace SignatureCreator
{
class Program
{
static void Main(string[] args)
{
string delimiter = ",";
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find currently logged in user
UserPrincipal up = UserPrincipal.Current;
string displayName = up.DisplayName;
string title = up.Description;
string phoneNumber = up.VoiceTelephoneNumber;
string[] userName = displayName.Split(new string[] { delimiter }, StringSplitOptions.None);
string firstName = userName[1];
string lastName = userName[0];
firstName = firstName.Substring(1);
firstName = firstName.ToUpper();
lastName = lastName.ToUpper();
Console.WriteLine(firstName +" "+ lastName);
Console.WriteLine(title);
Console.WriteLine(phoneNumber);
DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry;
System.DirectoryServices.PropertyCollection props = entry.Properties;
/*
*
*/
foreach (string propName in props.PropertyNames)
{
if (entry.Properties[propName].ToString() == "mobile")
{
Console.WriteLine(propName + " = " + entry.Properties[propName].Value);
}
else
{
Console.WriteLine(propName + " = NULL");
}
}
Console.ReadKey();
StringBuilder sb = new StringBuilder();
}
}
}
我正在尝试循环浏览活动目录信息以查找用户的手机号码。但是我不知道如何循环并返回它。即使我只是评估 propname == 手机,它也不会返回 true。我做错了什么?
你可以尝试使用DirectoryEntry.RefreshCache
,它会将指定属性的值加载到属性缓存中。
您还可以使用方法检查给定的属性是否包含在DirectoryEntry
中DirectoryEntry.Properties.Contains
。 如果属性存在,则可以在不循环所有属性的情况下获取它的值。
entry.RefreshCache(new string[]{"mobile"});
if(entry.Properties.Contains("mobile"))
Console.WriteLine("mobile= " + entry.Properties["mobile"].Value);
else
Console.WriteLine("mobile = NULL");