2

我正在尝试从 bitlocker 活动目录对象中提取一些属性,我可以使用 PowerShell 并在其中输入所有信息来做到这一点。例如

Get-ADObject -filter 'CN -like "*A3F850A4*"' `
             -Properties CanonicalName,msFVE-RecoveryPassword

可以很好地提取属性,但我不知道如何在 -filter 参数中使用变量并让它返回任何信息,这是我尝试过的代码。

[string]$passwordId = Read-Host `
                  "What is the first 8 charcters of the recovery password id?"
Get-ADObject -filter {CN -like $passwordId} ` 
             -Properties CanonicalName,msFVE-RecoveryPassword

任何帮助将不胜感激,尤其是有关在脚本中使用变量的任何信息。谢谢。

4

2 回答 2

3

AD cmdlet 筛选器实际上并不像通常的 PowerShell 语法那样起作用。

我建议-LdapFilter改用(它更易于移植到其他工具,并且通常与 PowerShell-ish 过滤器没有太大区别):

Get-ADObject -LdapFilter "(cn=*$passwordId*)"

如果您坚持使用 -Filter: 只需确保首先获得正确的字符串:

$likePattern = "*$passwordId*"
Get-ADObject -Filter {cn -like $likePattern}

或者使用字符串表示法(带有一些额外的引号)代替:

Get-ADObject -Filter "cn -like '*$passwordId*'"

但同样:这些过滤器不能在 MS AD 模块之外工作,LDAP 过滤器可用于我见过的用于搜索 AD 的所有工具(包括 ADSISearcher 和 Quest cmdlet for AD)。

于 2013-08-17T06:50:07.873 回答
1

是的,但这仍然不适用于“-LDAPFilter '(anr=variable)':

$user = Read-Host -Prompt "What user or email?
Get-ADUser -LdapFilter '(anr=$user)' -Properties * |Select SamAccountName, Mail, CanonicalName
于 2019-09-26T16:27:44.500 回答