查询 LDAP 以查找过去 24 小时内创建的所有计算机对象

2024-07-04

我正在尝试使用 LDAP 查询返回过去 24 小时内创建的所有计算机对象。我的代码目前如下所示:

//Declare new DirectoryEntry and DirectorySearcher
DirectoryEntry domainRoot = new DirectoryEntry("LDAP://rootDSE");
string rootOfDomain = domainRoot.Properties["rootDomainNamingContext"].Value.ToString();
DirectorySearcher dsSearch = new DirectorySearcher(rootOfDomain);

//Set the properties of the DirectorySearcher
dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>" + dateFilter.ToString() + "))";
dsSearch.PageSize = 2000;
dsSearch.PropertiesToLoad.Add("distinguishedName");
dsSearch.PropertiesToLoad.Add("whenCreated");
dsSearch.PropertiesToLoad.Add("description");
dsSearch.PropertiesToLoad.Add("operatingSystem");
dsSearch.PropertiesToLoad.Add("name");

//Execute the search
SearchResultCollection computersFound = dsSearch.FindAll();

此代码不返回任何对象,并且我确定在过去 24 小时内创建了帐户。

EDIT:我用以下代码修复了这个问题:

GetCompList(DateTime.Now.AddDays(-1)); //This sets the filter to one day previous

//Declare new DirectoryEntry and DirectorySearcher
DirectoryEntry domainRoot = new DirectoryEntry("LDAP://rootDSE");
string rootOfDomain = domainRoot.Properties["rootDomainNamingContext"].Value.ToString();
DirectorySearcher dsSearch = new DirectorySearcher(rootOfDomain);

//Set the properties of the DirectorySearcher
dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>=" + dateFilter.ToString("yyyyMMddHHmmss.sZ") + "))";
dsSearch.PageSize = 2000;
dsSearch.PropertiesToLoad.Add("distinguishedName");
dsSearch.PropertiesToLoad.Add("whenCreated");
dsSearch.PropertiesToLoad.Add("description");
dsSearch.PropertiesToLoad.Add("operatingSystem");
dsSearch.PropertiesToLoad.Add("name");


//Execute the search
SearchResultCollection computersFound = dsSearch.FindAll();

秘密就在于这行:

dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>=" + dateFilter.ToString("yyyyMMddHHmmss.sZ") + "))";

事实证明,答案在于 whenCreated 过滤器的格式。根据这篇博文 http://blog.scottlowe.org/2006/10/11/finding-recently-created-active-directory-accounts/,whenCreated 的过滤器格式必须类似于“yyyyMMddHHmmss.sZ”,其中 Z 是相对于 UTC 的偏移量。我所做的是创建了一个名为

private void GetCompList(DateTime dateFilter) //This overloaded version of GetCompList takes a parameter of type DateTime, and only returns computers that were built after dateFilter
    {
        try
        {
            //Convert the dateFilter to a format appropriate for an LDAP query
            int offset = -8;
            //string strDateFilter = convertToCrazyFormat(dateFilter, offset);

            //string strDateFilter = dateFilter.ToString("yyyyMMddhhmmss");

            //Declare new DirectoryEntry and DirectorySearcher
            DirectoryEntry domainRoot = new DirectoryEntry("LDAP://rootDSE");
            string rootOfDomain = domainRoot.Properties["rootDomainNamingContext"].Value.ToString();
            DirectorySearcher dsSearch = new DirectorySearcher(rootOfDomain);

            //Set the properties of the DirectorySearcher
            dsSearch.Filter = "(&(objectClass=Computer)(whenCreated>=" + dateFilter.ToString("yyyyMMddHHmmss.s" + offset.ToString()) + "))";
            dsSearch.PageSize = 2000;
            dsSearch.PropertiesToLoad.Add("distinguishedName");
            dsSearch.PropertiesToLoad.Add("whenCreated");
            dsSearch.PropertiesToLoad.Add("description");
            dsSearch.PropertiesToLoad.Add("operatingSystem");
            dsSearch.PropertiesToLoad.Add("name");

然后我这样调用该方法:

GetCompList(DateTime.Now.AddDays(-1));//Pass in a negative value that represents the time period you want objects from, in this case the last day
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查询 LDAP 以查找过去 24 小时内创建的所有计算机对象 的相关文章

  • 在派生虚函数中强制执行正确的参数类型

    我发现很难非常简洁地描述这个问题 所以我附上了演示程序的代码 总的想法是 我们需要一组派生类 它们被迫从基类实现一些抽象 Foo 函数 每个派生的 Foo 调用都必须接受不同的参数作为输入 但所有参数也应该从 BaseInput 类派生 到
  • C#:秒到分钟到小时的转换?

    好吧 首先 我很确定我不会在这项作业中使用 TimeSpan 相反 当用户在文本框中输入秒数时 它会在消息框中显示秒 分钟和小时的公式系列 这就是我被困住的地方 我们应该用这个例子来检查我们的答案 7565 秒是 2 小时 6 分 5 秒
  • 如何在C语言中删除linux上的root权限?

    我想以非 root 用户身份分叉 执行和编程 同时父级保留 root 权限 伪代码 pid fork if pid 0 if RunAsUser ConvertStringToUserId John false stop if RunAsU
  • 如何实现一个单链表队列,使其入队和出队时间复杂度为O(1)?

    这是一个练习 来自CLRS 3rd 10 2 3 通过单向链表 L 实现队列 ENQUEUE 和 DEQUEUE 操作仍然需要 O 1 时间 使用单链表实现队列并不难 我的问题是关于时间复杂度的 如何实现耗时 O 1 的 ENQUEUE 和
  • C++:你会选择 boost::date_time 还是 icu::date/time 库?

    我的应用程序需要自定义时间和日期设置功能 我检查了 ICU 和 boost date time 库 从完整性的角度来看 两者似乎都满足我的要求 我想知道两者之间是否有任何偏好 依据是什么 哪一个会在表现上得分 如果没有有关您的特定用例和环境
  • node.js 本机插件 - 包装类的析构函数不运行

    我正在用 C 编写一个 Node js 插件 我使用 node ObjectWrap 包装一些类实例 以将本机实例与 JavaScript 对象关联起来 我的问题是 包装实例的析构函数永远不会运行 这是一个例子 point cc inclu
  • Google 的“编码折线算法”的 C# 实现

    有谁有 Google 的简洁而强大的实现吗 编码折线算法 http code google com apis maps documentation utilities polylinealgorithm html in C 我本质上想要实现
  • 当我将鼠标悬停在组合框项目上时引发事件

    当我将鼠标悬停在组合框项目上时 我无法找到要触发的事件 我正在使用 Windows 窗体来构建应用程序 我发现WPF有类似的东西 当我将鼠标悬停在组合框项目上时如何更改标签文本 https stackoverflow com questio
  • 基本镜面着色

    我正在使用一个生成阴影球体的简单代码 我还没有完全理解数学 但我在玩代码时正在弄清楚它 我想知道如何根据这段代码实现镜面反射着色 有什么建议么 for y 0 y
  • 多次声明全局变量时,GCC 没有警告或错误[重复]

    这个问题在这里已经有答案了 假设有以下代码 File a c include
  • SWIG Python 结构体数组

    我已经搜索了几天 试图弄清楚如何将结构数组转换为 Python 列表 我有一个函数返回指向数组开头的指针 struct foo int member struct foo bar struct foo t malloc sizeof str
  • pthread 线程状态

    是否有一种机制可以用来判断 pthread 线程当前是否正在运行或已退出 如果线程尚未退出 pthread join 是否有一种方法能够在特定时间段后超时 如果您仅针对 Linux 请使用http www kernel org doc ma
  • 在 C# 中捕获异常

    我有一个简单的添加按钮 ADD Click 代码是 protected void Add Click object sender EventArgs e string strConnectionString ConfigurationMan
  • 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量

    我想从设置了特定路径的 Qt 应用程序启动 cmd exe 我在 QProcessEnvironment 中插入 Path 并将该环境设置为 QProcess 然后我开始分离 cmd 在命令提示符上 路径与调用应用程序的路径相同 而不是我刚
  • 收据在打印文档中有重叠文本

    我正在 POS 项目中创建打印收据并附上输出的图片 我的问题是描述 数量 价格 金额的重叠 如何在这段代码的下一行显示数量 价格和金额 e Graphics DrawString Description new Font trebuchet
  • 如何(自动)生成 MVC + Entity 的 Web api 控制器或基因查询所有类型

    作为 MVC4 Entity WebAPI 的新手 我对仅仅拥有 GET POST 控制器处理程序和到数据模型的自定义映射感到沮丧 我想我要问的是有一个生成工具 例如从数据类创建控制器类 这样我就可以直接从数据执行简单的 GET 命令 制作
  • 在 ASP.NET MVC 2.0 中编辑实体框架中的对象并将其保存到数据库中

    所以我知道 EF 实体会跟踪它们自己的更改 并在调用 savechanges 时将它们保存到数据库中 但是这种情况怎么样 我有一个旨在编辑博客文章的页面 它有两种操作方法 HttpGet public ViewResult EditBlog
  • 基于路由参数的子容器注册

    我们有一个多租户 ASP NET MVC 应用程序 为多个客户端托管预订引擎 这些客户端中的每一个都有多个可以影响 Unity 容器配置的包 我们为每个请求创建一个子容器 并根据通过路由传递的客户端和包参数注册不同的接口实现 目前 我们正在
  • .NET 中是否有任何集合可以防止空条目?

    我特别考虑的是履行一套合同的集合 但我认为这个问题可以适用于任何类型 NET 框架中是否存在可以防止空条目的集合 我想要的具体行为是这样的 var set new HashSet bool added set Add null Consol
  • Windows 窗体应用程序中异常处理的最佳实践?

    我目前正在编写我的第一个 Windows 窗体应用程序 我现在已经阅读了几本 C 书籍 因此对 C 必须处理异常的语言特性有了相对较好的了解 然而 它们都非常理论化 因此我还没有了解如何将基本概念转化为应用程序中良好的异常处理模型 有人愿意

随机推荐

  • 从子列表中切片元素 - Python

    我想从中返回数字 5 list 1 1 2 3 4 5 6 我以为这会起作用 但事实并非如此 print list 1 1 1 它返回一个空列表 它是索引 1 第二个列表 和位置 1 列表中的第二个数字 这不应该起作用吗 您需要两个单独的操
  • 特别处理Akka流的第一个元素

    有没有一种惯用的方法来处理 Akka 流Source第一个元素以特殊的方式 我现在拥有的是 var firstHandled false source map elem gt if firstHandled handle specially
  • Django - 旋转图像并保存

    我想在 django 中为图像添加 向左旋转 和 向右旋转 按钮 这似乎很容易 但我浪费了一些时间 尝试了在 stackoverflow 上找到的一些解决方案 但还没有结果 我的模型有一个 FileField class MyModel m
  • 如何使用 Spark SQL 解析 JSON 对象数组

    现在 JSON 数据如下 Id 11 data package com browser1 activetime 60000 package com browser6 activetime 1205000 package com browse
  • 使用正则表达式替换换行符

    如何使用正则表达式替换所有类型的换行符 CR LF 和 CrLf 我尝试过 n 和 r 的不同组合 但没有找到全部 formatedString System Text RegularExpressions Regex Replace te
  • eslint 导入/订购反应打字稿

    我想将 eslint import order 配置为自定义配置 但我无法使其在反应打字稿文件中工作 这是我的规则 import order error groups builtin external internal pathGroups
  • 使用蒙特卡罗方法计算 PI 给出的答案不精确

    我正在尝试使用蒙特卡罗方法计算 PI 无论 MAXLEN 有多大 我的代码给出的结果都是 3 000 经过多次调试 我无法明白我做错了什么 include
  • Firefox 和 Chrome 中的字体看起来不同

    我正在使用 Google Web Font 的 PT sans font family PT Sans Arial serif 但在 Chrome 和 Firefox 中看起来有所不同 我需要添加什么才能使其在所有浏览器中看起来都相同吗 对
  • Rails rspec 和omniauth(集成测试)

    我的 Rails 3 2 应用程序使用 OmniAuth 和 Devise 通过 Twitter 登录 身份验证系统运行良好 我想在 rspec 中编写一个集成测试以确保一切正常 使用维基中的信息 我编写了以下内容 但我知道我遗漏了一些东西
  • “错误:在 Grad 类中找不到 Main 方法,请将 main 方法定义为:public static void main(String[] args)”

    我收到这条消息 通过java编译器 错误 在 Grad 类中找不到 Main 方法 请将 main 方法定义为 公共静态无效主 字符串 参数 这是我的 来自书中的 代码 class Grad String naziv nepoznat in
  • Symfony2 验证日期时间 1 应早于日期时间 2

    我正在查看 Symfony2 验证参考 但没有找到我需要的东西 我有一个就业班开始日期 and EndDate 我想添加一个 Assert 来验证开始日期始终早于结束日期 是否有比较类属性作为验证约束的标准方法 或者我应该创建自定义验证约束
  • typedef 和 Define 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 c中typedef和 define一样吗 https stackoverflow com questions 1666353 is typedef and define the same in c 对
  • 如何在C语言中删除linux上的root权限?

    我想以非 root 用户身份分叉 执行和编程 同时父级保留 root 权限 伪代码 pid fork if pid 0 if RunAsUser ConvertStringToUserId John false stop if RunAsU
  • 如何实现一个单链表队列,使其入队和出队时间复杂度为O(1)?

    这是一个练习 来自CLRS 3rd 10 2 3 通过单向链表 L 实现队列 ENQUEUE 和 DEQUEUE 操作仍然需要 O 1 时间 使用单链表实现队列并不难 我的问题是关于时间复杂度的 如何实现耗时 O 1 的 ENQUEUE 和
  • 使用 Python 在 Yandex Images 中反向搜索图像

    我对自动化反向图像搜索感兴趣 Yandex 特别适合捕捞鲶鱼 甚至比 Google 图片还要好 因此 请考虑以下 Python 代码 import requests import webbrowser try filePath C path
  • Facebook 回调 JSON 有时不返回电子邮件

    Facebook 图形 API 我正在请求电子邮件权限 除了某些用户之外 一切正常 json 不返回电子邮件字段 我不知道为什么会发生这种情况 代码是相同的 它适用于所有用户 返回电子邮件字段 除了 100 个左右的用户中的 1 个 其中
  • 隐藏另一个布局的浮动操作按钮

    我有一个FloatingActionButton五月之内activity main xml名为的布局fabBtn 我的应用程序是用ViewPager和三个Fragments 我想隐藏FloatingActionButton当我的第一次Fra
  • Android Studio 0.2.7 使用 Gradle 构建异常

    我正在从 Eclipse 迁移到 Android Studio 尽管由于 Android Studio 仍处于 预览 模式 但我正在缓慢且增量地迁移 自从更新到最新版本的 Android Studio 0 2 7 以来 我在默认构建过程中遇
  • 如何使用 PHP 在文件上传后重定向用户

    正如标题所说 我希望在用户上传文件后将用户重定向回主页 到目前为止 这些代码所做的只是显示一个包含相关信息 文件名 文件大小等 的页面 我想要将他们重定向到自定义成功页面 HTML
  • 查询 LDAP 以查找过去 24 小时内创建的所有计算机对象

    我正在尝试使用 LDAP 查询返回过去 24 小时内创建的所有计算机对象 我的代码目前如下所示 Declare new DirectoryEntry and DirectorySearcher DirectoryEntry domainRo