如何使用该变量在Powershell中将对象/ OU路径替换为LDAPFilter

问题描述 投票:0回答:1

我试图在我们的工作环境中检索一个特定安全组的特定办公室的成员资格,而不是Get-ADGroupMember,这是一个很慢的用户列表时总是得到time-out

我的代码如下:

Import-module ActiveDirectory
**$groupinfo** = Get-ADGroup -identity "vip"

Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof='**$groupinfo.DistinguishedName**'))' -Properties office,title | where {$_.office -like 'New York'} | select name,samaccountname,office,title |Export-csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

我收到以下错误

Get-ADUser : A positional parameter cannot be found that accepts argument '**CN=vip,OU=Groups,DC=contoso,DC=com**'.
At line:2 char:2
+  Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof='$group.Dis ...
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADUser

谁能告诉我如何在$groupinfo中使用这个变量LDAPFilter?我需要一个交叉点吗?

Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof=**CN=vip,OU=Groups,DC=contoso,DC=com**))' -Properties office,title | where {$_.office -like 'New York'} | select name,samaccountname,office,title |Export-csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

当没有变量时,这个确实有用。

powershell
1个回答
0
投票

如果在LDAPFilter周围使用双引号,则使用变量的内容而不是变量名称文字。

尝试:

Get-ADuser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(memberOf=$($groupinfo.DistinguishedName)))" -Properties office,title | 
    Where-Object {$_.office -like '*New York*'} | 
    Select-Object name,samaccountname,office,title |
    Export-Csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

注意:我没有尝试将所有这些放在一个单一的语言中,因为这样做只是为了解决难以发现的错误。此外,我将(objectcategory=user)更改为(objectCategory=person)(objectClass=user)以确保仅返回用户对象。见Filter on objectCategory and objectClasO

© www.soinside.com 2019 - 2024. All rights reserved.