Kullanıcı yeni bir kullanıcı istediğinde çalıştırılacak bir komut dosyası var.C# ASP.NET - Aktif ve 'askıya alınmış' kullanıcılar için AD ara
Bu betik kullanıcı tarafından sağlanan kullanıcı adını alacak ve var olup olmadığını görmek için AD'yi arayacaktır. Bu kesinlikle gayet iyi çalışıyor, ancak BT departmanımızın hesaplarda son kullanma tarihleri var. Bu, hesabın, ayrılan personel için ayrı bir YB'ye taşınana kadar, bir tür "askıya alınmış" durumda, devre dışı değilken sonuçlanmasıyla sonuçlanır.
C# AD araması bu askıya alınmış hesapları yok sayıyor.
Daha önce bu konuyla karşılaşan var mı? Ya da bu kullanıcılar için bu kullanıcılara nasıl uyum sağlayacağı konusunda bir ipucu var mı?
public static string ADSearch(string ADPart, string Alias)
{
System.DirectoryServices.DirectoryEntry dirEntry = default(System.DirectoryServices.DirectoryEntry);
System.DirectoryServices.DirectorySearcher dirSearcher = default(System.DirectoryServices.DirectorySearcher);
try
{
dirEntry = new System.DirectoryServices.DirectoryEntry("LDAP://LDAP DETAILS HERE");
dirSearcher = new System.DirectoryServices.DirectorySearcher(dirEntry);
dirSearcher.Filter = "(samaccountname=" + Alias + ")";
dirSearcher.PropertiesToLoad.Add("GivenName");
//Users first name
dirSearcher.PropertiesToLoad.Add("sn");
//Users last name
dirSearcher.PropertiesToLoad.Add("mail");
//Users e-mail
dirSearcher.PropertiesToLoad.Add("samaccountname");
//Samaccount
StringBuilder groupNames = new StringBuilder(); //stuff them in | delimited
SearchResult sr = dirSearcher.FindOne();
//return false if user isn't found
if (sr != null)
if (ADPart == "GivenName")
return sr.Properties["GivenName"][0].ToString().Replace("'", "");
else if (ADPart == "sn")
return sr.Properties["sn"][0].ToString().Replace("'", "");
else if (ADPart == "mail")
return sr.Properties["mail"][0].ToString().Replace("'", "");
else if (ADPart == "alias")
return sr.Properties["samaccountname"][0].ToString().Replace("'", "");
else
return null;
else
return null;
// return false if exception occurs
}
catch (Exception ex)
{
return ex.Message;
}
}
Bu kodu yazmadım ve yerine zaten belirterek değerinde olabilir.
Herhangi bir yardım çok takdir edilmektedir.
Merhaba Gabriel, ayrıntılar yanıtı için çok teşekkürler. Ne hakkında konuştuğunu kesinlikle biliyorsun. Ne yazık ki, bu sorgu süresi dolmuş hesapları görmediğinden, bu durum ihtiyaçlarıma uymuyor, dolayısıyla bunları sayamaz. Tekrar teşekkürler! –
Bu özel arama, bir kerede yalnızca bir hesap arıyor, buna dayanarak: "(samaccountname =" + Alias + ")". Öyleyse hesap isimlerini bu yönteme ne veriyor? –
Bir yöneticinin bir kullanıcı adı girebileceği bir metin kutusu var. Yazdıkları her şey aramada kullanılır. –