迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 PowerShell 中执行 LDAP 查询

作者:迹忆客 最近更新:2024/03/04 浏览次数:

使用 PowerShell 查询 Active Directory 时最常见的挑战之一是如何正确构建过滤器语法。

不幸的是,所有 Active Directory PowerShell 模块 cmdlet 上的过滤器和 LDAP 过滤器参数对许多人来说都是一个黑匣子。

本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。


在 PowerShell 中安装 Active Directory 模块

在继续之前,需要一些先决条件。

  • 已安装 PowerShell Active Directory 模块。
  • 加入域的计算机。
  • 成功连接并验证到 Active Directory 域控制器。

通常,运行命令 Install-Module 应该从远程 CDN 获取软件包并将其安装在你的计算机上。尽管如此,对于 Active Directory 模块,我们必须建立一个先决条件包才能成功。

我们需要安装的必备包是 `RSAT 或 Remote Server Administration Tools。

你可以运行下面的 PowerShell 脚本在你的计算机或服务器上安装 RSAT

为 Windows 10 安装 RSAT:

Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online

为 Windows Server 安装远程服务器管理工​​具(2008 至 2016 的多个版本):

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

在你的计算机上安装远程服务器管理工​​具功能还将安装适用于 Windows PowerShell 的 Active Directory 模块。


为 PowerShell 过滤器使用 Filter 参数

PowerShell 筛选器使用标准的 Windows PowerShell 表达式语法。此方法通常称为 Active Directory 搜索筛选器语法。

这些过滤器与 Filter 参数一起使用。

在过滤器中,你将使用运算符比较各种 AD 对象属性。例如,Get-ADUser 命令返回 Name 属性。

因此,如果我们想查找与特定名称匹配的所有用户,你可以使用:

Get-ADUser -Filter "Name -eq 'John'"

属性名称可以是 LDAP 名称或随 Active Directory cmdlet 返回的属性的规范名称。

属性值通常用单引号或双引号括起来。唯一接受的通配符是星号*

我们可以在上面看到过滤器周围有双引号,但 John 被单引号覆盖。


在 PowerShell 中为 LDAP 过滤器使用 -LDAPFilter 参数

轻量级目录访问协议 (LDAP) 是一种与供应商无关的协议,用于访问和修改目录数据。

当听到目录这个词时,我们可能会想到电话簿,但这在 Active Directory 的上下文中意味着更多。

AD 存储和访问了许多不同的对象类型,LDAP 协议用于保护这些数据。由于 AD 可以保留许多不同的数据类型,因此应用程序和用户需要轻松查询该目录。

Active Directory 实现了 LDAP,即轻量级目录访问协议。将 -LDAPFilter 参数与 cmdlet 一起使用,你可以使用 LDAP 过滤器,例如在 Active Directory 用户和计算机中创建的过滤器。

LDAP 搜索过滤器的语法在 RFC 编号 4515 中定义。每个过滤器规则都用圆括号 () 括起来。

以下是一些使用 Active Directory 组过滤器作为基础开始创建你自己的过滤器的示例。

  • 所有名称 (CN) 为 Department 的组。
`'(cn=Department)'
  • 名称为 Department 且描述为 Prod 的所有组。
'(&(cn=Department)(description=Prod))'
  • 名称为部门共享访问的所有组。
'(|(cn=Professional Services Department)(cn=Share Access))'
  • 所有组都没有 Prod 的描述。包括根本没有描述字段的那些。
'(!(description=Prod))'
  • 所有带有 Prod 描述但不带有 Department 名称的组。
'(&(description=Prod)(!(cn=Department)))'
  • 描述为 \\fileserver1\share 的所有组。
'(description=\5c\5cfileserver1\5cshare)'

上一篇:在 PowerShell 中运行可执行文件

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 PowerShell 中显示消息框

发布时间:2024/03/03 浏览次数:103 分类:编程语言

本文将讨论名为 Message Boxes 的 PowerShell GUI 的重要功能,我们将学习如何使用 PowerShell 编写和输出它们。

在 PowerShell 中输出信息性消息

发布时间:2024/03/03 浏览次数:75 分类:编程语言

本文将区分多个写入命令,例如写入信息、警告和错误消息,并提供我们可以在 PowerShell 中何时何地使用它们的情况。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便