Active Directory 工具
Active Directory 工具 - 帮助管理 Active Directory 操作(查询、更新和删除),具有易于使用的 GUI
引言
该应用程序的目标是为使用 Microsoft Active Directory Services 的任何组织构建用户管理助手应用程序。
- IT 管理员 – 以更友好、更定制化的方式获取自我定制的报告和信息
- IT 工作人员 – 验证用户和组对象中插入的数据,对 Active Directory 进行更新,并获取自我定制的报告
背景
这是大学期末项目的一部分。
必备组件
- 计算机上已安装 Framework 3.5(可以从 Microsoft 网站下载)
- 连接到 Microsoft Active Directory
- 已安装 Microsoft Office Excel(97 及更高版本)
- 组织中已安装 Microsoft SQL Server 2005
- 也可以通过“ini”文件而不是数据库来完成
- 开发计算机需要安装 Microsoft patterns & practices Version=4.1.0.0
使用应用程序
步骤 1 安装数据库 (MSSQL)
打开 Microsoft-SQL 2005 并从 EmptyDB.bak(位于 zip 文件中)还原数据库。
步骤 2 运行程序
- 编译并运行程序(
DirectoryGate
项目) - 选择安装数据库的数据库服务器。
- 单击“添加 - 编辑域列表”按钮并设置域
- 开始查询/更新/删除您的 Active Directory
- 结果在应用程序文件夹中的 Excel 文件中
关于代码
该解决方案分为 6 个项目
ActiveDirectoryDO
-static
类处理所有 Active Directory 操作DirectoryGate
- 该 UI 是应用程序的 UI,包括应用程序的所有窗体和 UIDirectoryGateDO
-static
类用于处理数据库层 - 使用 Microsoft patterns & practices 以获得最佳实践方法HandleError
-static
类处理应用程序中的所有错误消息OutputToExcel
- 用于将结果输出到 ExcelOutputToHTML
- 用于将结果输出到 HTML
ActiveDirectoryDO
CreateDirectoryEntry
- 根据给定的域返回 DirectoryEntry
。
它用于所有更新/查询/删除 Active Directory 方法。
public static DirectoryEntry CreateDirectoryEntry(string domainADPath)
{
// create and return new LDAP connection with desired settings
DirectoryEntry LDAPConnection =
new DirectoryEntry(domainADPath); //litwareinc.com
string[] DomainSplit = domainADPath.Split('.');
//LDAPConnection.Path = "LDAP://DC=litwareinc,DC=com";
LDAPConnection.Path = "LDAP://";
foreach (string Part in DomainSplit)
{
LDAPConnection.Path += "DC=" + Part + ",";
}
int LastCommaInd = LDAPConnection.Path.LastIndexOf(',');
LDAPConnection.Path = LDAPConnection.Path.Remove(LastCommaInd);
LDAPConnection.AuthenticationType = AuthenticationTypes.Secure;
return LDAPConnection;
}
Active Directory 查询方法的示例如下
public static void SearchObjectsInActiveDirectory(string domainADPath,
string searchString, ref List<string> deletionObjList)
{
// create LDAP connection object
using(DirectoryEntry LDAPConnection = CreateDirectoryEntry(domainADPath)){
using(DirectorySearcher SearchObj =
new DirectorySearcher(LDAPConnection)){
// Groups + Users Search
SearchObj.Filter = searchString;
SearchResultCollection Result = SearchObj.FindAll();
foreach (SearchResult SR in Result)
{
ResultPropertyCollection Fields = SR.Properties;
foreach (Object myCollection in Fields
["samAccountName"])
{
deletionObjList.Add
(myCollection.ToString());
}
}
}
}
}
DirectoryGateDO (使用 Microsoft Patterns & Practices)
用于检索数据库中所有域的 SQL 存储过程示例
public static SqlDataReader GetDomainsFromDB()
{
SqlDatabase db = new SqlDatabase(m_CStr);
// 1. create a command object identifying
// the stored procedure
DbCommand SComm = db.GetStoredProcCommand("spGetDomainsList");
// execute the command
SqlDataReader SDR = (SqlDataReader)db.ExecuteReader(SComm);
return SDR;
}
关注点
请提出改进应用程序的建议和想法。
历史
- 项目的 Alpha 版本