Не могу использовать Get-ADGroup в цикле foreach - PullRequest
0 голосов
/ 22 марта 2019

Я хочу использовать команду Get-ADGroup во вложенных циклах foreach.Но почему-то команда ничего не возвращает.Команда и фильтры являются corect, как вы можете видеть в самом низу после циклов, та же самая инструкция работает там отлично, по любой причине.

$file = "\\path"
$data = Import-Csv $file -Delimiter ";" -Encoding UTF7 |
        select -First 5

Measure-Command {
    foreach ($item in $data ) {
        $tiefe = $($item.'Tiefe')
        $pfad = $($item.'Pfad')
        $recht = $($item.'Recht')
        $trustee = $($item.'trustee')

        $LDAPDirectoryService = 'IP-Adresss'
        $DomainDN = 'o=enterprise'

        $LDAPFilter = "cn=$trustee"

        $null = [System.Reflection.Assembly]::LoadWithPartialName('System.DirectoryServices.Protocols')
        $null = [System.Reflection.Assembly]::LoadWithPartialName('System.Net')

        $LDAPServer = New-Object System.DirectoryServices.Protocols.LdapConnection $LDAPDirectoryService
        $LDAPServer.AuthType = [System.DirectoryServices.Protocols.AuthType]::Anonymous
        $LDAPServer.SessionOptions.ProtocolVersion = 3
        $LDAPServer.SessionOptions.SecureSocketLayer = $false

        $Scope = [System.DirectoryServices.Protocols.SearchScope]::Subtree
        $AttributeList = @('*')

        $SearchRequest = New-Object System.DirectoryServices.Protocols.SearchRequest -ArgumentList $DomainDN,$LDAPFilter,$Scope,$AttributeList

        $groups = $LDAPServer.SendRequest($SearchRequest)
        $groups

        #Prüft ob Gruppe existiert
        if ($groups.Entries.Count -eq 0) {
            Write-Host " Group not found!" `n -Foregroundcolor Red $LDAPFilter
            #Speichert alle nicht gefundenen Gruppen zur manuellen Nachbearbeitung
            Add-Content -Path \\Path -Value "$LDAPFilter"
        }

        foreach ($group in $groups.Entries) {
            #Listet alle Member der oben übergebenen Gruppe auf
            $users = $group.Attributes['member'].GetValues('string')

            foreach ($user in $users) {
                Write-Host $user
                #Hier den User zur AD Gruppe hinzufügen
                Write-Host "user zur Gruppe hinzufügen $pfad-$recht" -ForegroundColor Red

                # This little Boy doesnt work
                Get-ADGroup -Properties Name, Description -Filter 'Name -like "F-KT-*"' |
                    where {$_.Description -like "*$pfad" -and $_.Name.EndsWith($recht)}

                #Add-ADGroupMember -Identity S-1-5-21-219376080-2991882224-574971396-34759 -Members $user -Whatif
            }
        }
    }
}

# Here the command works without a fault
Get-ADGroup -Properties Name, Description -Filter 'Name -like "F-KT-*"' |
    where {$_.Description -like "*$pfad" -and $_.Name.EndsWith($recht)}

1 Ответ

0 голосов
/ 22 марта 2019

Я до сих пор не знаю, почему, но я нашел решение, работающее на меня.

$AD = Get-ADGroup -Properties Name, Description -Filter 'Name -like "F-KT-*"' | where {$_.Description -like "*$pfad" -and $_.Name.endswith($recht) }
write-Host $AD.Name -ForegroundColor Yellow

Может быть, кто-то может сказать мне, почему я должен объявить get-ADGroup как переменную в цикле, но вне ее работы без нее.

...