在 PowerShell 中執行 LDAP 查詢
- 在 PowerShell 中安裝 Active Directory 模組
-
為 PowerShell 過濾器使用
Filter
引數 -
在 PowerShell 中為 LDAP 過濾器使用
-LDAPFilter
引數
使用 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)'
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn