Сложно объяснить вопрос в одном предложении.
Проблема
Я создал функцию, которая должна добавлять всех пользователей из группы (огромная группа с тысячами пользователей) в массив. Каждый раз, когда функция видит группу, она вызывает себя с этой группой.
Проблема в том, что основная часть и только эта строка $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
}
}
Я не понимаю. Я поместил несколько операторов "write-host" в то, что печатается, а что нет. Первая строка $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 пользователей в этой переменной, как я и хотел.
Что я делаю не так? Вы можете найти проблему?