powershell - 我应该使用 Active Directory 模块 cmdlet 还是 DirectoryServices .NET 类

标签 powershell active-directory directoryservices adsi

我有一个非常简单的问题。用什么比较好?当尝试连接到 AD 并从域中提取所有计算机、用户和组时,AD 模块(即 Get-ADComputer)或 DirectoryServices .NET 类。还是根本不重要?

我判断使用哪种方法的关键因素是:

  1. 哪种方法的脚本运行速度更快?
  2. 这会减少网络/AD 的负载
  3. 每种方法可能有哪些限制?

我知道 AD 模块仅默认安装在 Win Server 2008 R2 及更高版本上,因此这显然是旧服务器上的一个缺点,默认情况下不安装该模块。但在当今世界,这确实不是什么大问题,因为没有很多环境中的所有服务器都早于 2008 R2。

我想做的就是将所有用户对象(以及一些重要的字段/属性)、所有计算机对象和所有组对象提取到 .csv。因此,基本上是“搜索”AD 对象并循环遍历每个结果行,然后保存到表中以导出为 .csv。

最佳答案

ActiveDirectory cmdlet 比使用 System.DirectoryServices 直观得多,但是您可能会失去 System.DirectoryServices 提供的一些控制。对于大多数情况,尤其是对于 PowerShell 新手来说,我建议使用 ActiveDirectory cmdlet

就速度而言,就像 @sodawillow 建议的那样,您可以测量每个的执行时间,然后使用最快的。我可以给你讲一些轶事,但它们不能代表每个人的经历。

关于powershell - 我应该使用 Active Directory 模块 cmdlet 还是 DirectoryServices .NET 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862471/

相关文章:

powershell - 使用Powershell Windows 2008导出特定进程

ssl - 无法使用 DirectoryServices.Protocols.LdapConnection 打开 SecureSocketLayer

c# - 如何连接到 RootDSE 和/或使用 System.DirectoryServices.Protocols 检索 highestCommittedUSN?

active-directory - System.DirectoryServices 编译问题

powershell - 将三个命令的输出减少到一行

powershell - 在资源管理器中添加 VHD 作为操作系统磁盘时出错

azure - 如何从 Powershell 脚本非交互地运行 Azure Log Analytics 查询?

linux - ldapmodify - 无法将成员添加到 AD 组

azure - ADAL:在哪里可以查看资源 ID?

Azure Active Directory B2C、404 错误、URL 中出现意外问号