Powershell 无法在函数中查询广告用户

Powershell 无法在函数中查询广告用户,powershell,recursion,Powershell,Recursion,很难用一句话解释这个问题 问题 我创建了一个函数,可以将一个组(拥有1000个用户的庞大组)中的所有用户添加到一个数组中。每次函数看到一个组时,它都使用该组调用自己 问题是,主要部分和这一行$tempUsers=Get ADUser-LDAPFilter“(&(memberof=$($myGroup.differentiedname))”根本无法执行 在我开始之后,它刚刚完成脚本 功能 function Get-AllMembersFromGroup { [CmdletBinding()]

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

问题

我创建了一个函数,可以将一个组(拥有1000个用户的庞大组)中的所有用户添加到一个数组中。每次函数看到一个组时,它都使用该组调用自己

问题是,主要部分和这一行
$tempUsers=Get ADUser-LDAPFilter“(&(memberof=$($myGroup.differentiedname))”
根本无法执行

在我开始之后,它刚刚完成脚本

功能

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.differentiedname))”
->
$tempUsers
只是空的

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

在普通powershell中运行命令时:

$tempUsers = Get-ADUser -LDAPFilter "(&(memberof=$($myGroup.distinguishedname)))"
它可以工作,经过10秒的等待时间,这个变量中有3000个用户,正如我所希望的那样


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

你的代码对我有用。您使用的Powershell版本是什么?难以用一句话解释问题。如果你试图用一句话来解释,那就太糟糕了。$tempUsers只是空的。这可能是Get-ADUser-LDAPFilter没有返回任何内容吗?您的函数不正是像Get-ADGroupMember那样做的吗?对,只需使用
Get-ADGroupMember-Recurse