获取 ADUser 按不为我工作的成员排序

Get ADUser sort by memberof not working for me

我需要提取特定 OU 中属于同一组的所有成员的列表。问题是它只有在我使用 -match 时才有效,但是它也会选择具有相似名称的组。如果我使用 -eq 它什么也检索不到,尽管用户是该特定组的成员。谁能帮我弄清楚我做错了什么?

我一直在使用的 powershell 脚本;

Get-ADUser -Filter * -SearchBase 'OU=NewUsers,DC=LOCAL' -properties memberof | Where-Object {$_.memberof -eq 'APP-KMD'} | Select SamAccountName

您的问题出在比较运算符上,以下是它们之间的一些差异:

人数比较:

  • eq(等于)
  • ne(不等于)
  • gt(大于)
  • lt(小于)
  • le(小于等于)
  • ge(大于等于)

字符串比较:

  • -like 和 -notLike(通配符字符串比较,通配符为 * 和 ?),不要与 -contains 运算符混淆。

正则表达式比较

  • -match 和-notMatch(正则表达式匹配)

如果您知道组的确切名称,您可能应该使用 -like "GROUPNAME",这样您就只会得到该组的用户。

显然你不能直接匹配,但如果你抓取给定组的匹配项并拉出该组的成员并进行比较,它会给出预期的输出。

$brugere = Get-ADUser -Filter * -SearchBase 'OU=NewUsers,DC=LOCAL' -Properties * | Select-Object SamAccountName
$gruppemedlem = Get-ADGroupMember -Identity app-kmd | select SamAccountName

ForEach ($bruger in $brugere)
{   

If ($gruppemedlem.samaccountname -contains $bruger.SamAccountName) {
    Write-Host $bruger }
} 

请记住,memberOf 属性的值是组的 DN,因此您需要匹配整个 DN,而不仅仅是组的 CN。您可以在子查询中获取组的 DN 并直接在过滤器中使用它,即:

Get-ADUser -LDAPFilter "(memberof=$(Get-ADGroup APP-KMD))" -SearchBase 'OU=NewUsers,DC=LOCAL' | Select SamAccountName