一句话很难解释这个问题。
问题
我创建了一个函数,该函数应将一个组(具有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个用户。
我在做什么错?你能找到问题吗?