无法查询功能中的AD用户

时间:2018-09-04 11:41:38

标签: powershell recursion

一句话很难解释这个问题。

问题

我创建了一个函数,该函数应将一个组(具有1000个用户的巨大组)中的所有用户添加到数组中。每当函数看到一个组时,它都会使用该组进行调用。

问题是主要部分,仅$tempUsers = Get-ADUser -LDAPFilter "(&(memberof=$($myGroup.distinguishedname)))"这一行根本没有执行。

启动脚本后,它便完成了脚本。

功能

function Get-AllMembersFromGroup {
  [CmdletBinding()]
  [Alias()]
  Param
  (
      # Postfach auf dieses Berechtigt werden soll
      [Parameter(Mandatory=$false,
                ValueFromPipelineByPropertyName=$true,
                Position=0)]
      [string]
      $Identity
  )

  Begin {
      $users = @()
      $myGroup = Get-ADGroup $Identity
      $tempUsers = Get-ADUser -LDAPFilter "(&(memberof=$($myGroup.distinguishedname)))"
  }

  Process {
      foreach($user in $tempUsers) {
          if($user.GetType().Name -eq "ADPrincipal") {
              Get-AllMembersFromGroup -Identity $user
          } else {
              $users += $user
          }
      }
  }

  End {
      #$users.count
  }

}

我不明白。我在要打印的内容和未打印的内容上放置了几个“写入主机”语句。第一行$myGroup = Get-ADGroup $Identity开始运行,并且其中包含一个广告组。

但是之后$tempUsers = Get-ADUser -LDAPFilter "(&(memberof=$($myGroup.distinguishedname)))"-> $tempUsers只是空的。

如果我取消注释最后一条语句$users.count,它将在启动脚本后立即显示0

当我在普通的Powershell中运行命令时:

$tempUsers = Get-ADUser -LDAPFilter "(&(memberof=$($myGroup.distinguishedname)))"

它可以正常工作,经过10秒钟的等待时间,正如我想要的那样,该变量中有3000个用户。

我在做什么错?你能找到问题吗?

0 个答案:

没有答案