none
PowerShell RRS feed

  • Вопрос

  • Здравствуйте, наверно я вас уже замучал, но без вас никак )))!

    Есть лес, 15 доменами 1 родительский root.local  и 14 дочерних domain1.root.local, domain2.root.local и ну и так по порядку.

    Имеется файл csv со списком пользователей которые находятся во всех этих доменах. Необходимо найти эти УЗ и добавить их в группу безопасности родительского домена. Вот код:

    $gcs = @("dc1.root.local","dc1.domain1.root.local","dc1.domain2.root.local")
    $lusers = @(Import-Csv -Path "$Path" -Encoding Default)
    Foreach ($gc in $gcs)
        {
            
            $lusers = @(Import-Csv -Path "$Path" -Encoding Default)
            Foreach ($luser in $lusers)
                {
                    Get-ADUser -Server "$gc" -Filter {Name -like "$luser"}
                }
        }
    Данный запрос выполняет только поиск УЗ.

    Вроде запускается, что то пытается искать, долго думает, ошибок не выдает, но выводимый результат пустой. Что не так? Может такой способ не является верным, если это так, то каким образом можно сформировать запрос? Подскажите, пожалуйста.

    Заранее, спасибо!

    15 августа 2018 г. 10:39

Ответы

  • Не совсем понимаю, зачем указывать $($lUser.Name) если стоит такой код:

    $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} где Name уже указан.

    В какой части когда тогда вставлять $($lUser.Name)?

    Выделенным жирным часть нужно заменить на $($lUser.Name)

    Получится нечто подобное:

     $UsersFromALLDomains | Where {$_.Name -like "*$($luser.name)*"} 


    The opinion expressed by me is not an official position of Microsoft



    15 августа 2018 г. 14:22
    Модератор

Все ответы

  • кавычки?

    -Filter {name -like $luser}

    15 августа 2018 г. 11:57
  • кавычки?

    -Filter {name -like $luser}

    или звездочки -Filter {name -like "*$luser*"}

    а еще импортирование CSV 4 раз - 1 вне цикла и 3 в цикле (при этом в последних 3х нет необходимости)

    А еще можно не делать запросы по каждому пользюку в базу а выгрузить всех пользюков во всех доменах и работать с ними в памяти (сожрет больше памяти но результат получите значительно быстрее)

    $gcs = @("dc1.root.local","dc1.domain1.root.local","dc1.domain2.root.local") $lusers = @(Import-Csv -Path "$Path" -Encoding Default) $UsersFromALLDomains = @()
    Foreach ($gc in $gcs) {
    $UsersFromALLDomains += Get-AdUser -filter * -Server $GC -Properties Name
    }

    $forestGroup = Get-ADGroup YourGroup

    Foreach ($luser in $lusers) { $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} | Foreach {

         Add-ADPrincipalGroupMembership $_ -MemberOf $forestGroup

    } }

    https://blogs.msdn.microsoft.com/adpowershell/2010/01/20/addingremoving-members-from-another-forest-or-domain-to-groups-in-active-directory/


    The opinion expressed by me is not an official position of Microsoft




    15 августа 2018 г. 12:05
    Модератор
  • Все здорово до момента:

    $forestGroup = Get-ADGroup YourGroup
    Foreach ($luser in $lusers)
    {
       $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} | Foreach {
    
         Add-ADPrincipalGroupMembership $_ -MemberOf $forestGroup
       }
    }

    Результат пустой. Переменная $luser заполняется, но вывода от общей команды нет. В группу никто не попадает. Сама группа видна и ее описание появляется в переменной $forestGroup

    15 августа 2018 г. 13:24
  • Все здорово до момента:

    $forestGroup = Get-ADGroup YourGroup
    Foreach ($luser in $lusers)
    {
       $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} | Foreach {
    
         Add-ADPrincipalGroupMembership $_ -MemberOf $forestGroup
       }
    }

    Результат пустой. Переменная $luser заполняется, но вывода от общей команды нет. В группу никто не попадает. Сама группа видна и ее описание появляется в переменной $forestGroup

    Деталей бы немного побольше.

    Что конкретно попадает в $luser и каков результат

    $UsersFromALLDomains | Where {$_.Name -like "*$luser*"}

    Если результат пустой, то ищите по неправильному параметру.


    The opinion expressed by me is not an official position of Microsoft

    15 августа 2018 г. 13:44
    Модератор
  • в $luser падает Фамилия Имя Отчество УЗ, например Иванов Иван Иванович. Структура csv файла такая:

    1 Name

    2 Иванов Иван Иванович

    3 Петров Петр Петрович

    и так далее, на выходе в $lusers такое:

    Name

    ----

    Иванов Иван Иванович

    Петров Петр Петрович  

    и так далее...

    15 августа 2018 г. 14:10
  • Т.е. В $luser после отработки кода стоит последнее значения из списка $lusers
    15 августа 2018 г. 14:11
  • в $luser падает Фамилия Имя Отчество УЗ, например Иванов Иван Иванович. Структура csv файла такая:

    1 Name

    2 Иванов Иван Иванович

    3 Петров Петр Петрович

    и так далее, на выходе в $lusers такое:

    Name

    ----

    Иванов Иван Иванович

    Петров Петр Петрович  

    и так далее...

    если вам нужно получить значение переменной $lUser то вам нужно указать какой конкретно параметр вам нужен, даже если он один. В вашем случае в коде должна использоваться конструкция $($lUser.Name)


    The opinion expressed by me is not an official position of Microsoft

    15 августа 2018 г. 14:14
    Модератор
  • Т.е. В $luser после отработки кода стоит последнее значения из списка $lusers

    Проверьте что у вас в переменной $UsersFromALLDomains : если среди параметров Name, соответсвует ли он тому что у вас записано в $LUser.Name


    The opinion expressed by me is not an official position of Microsoft

    15 августа 2018 г. 14:16
    Модератор
  • Не совсем понимаю, зачем указывать $($lUser.Name) если стоит такой код:

    $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} где Name уже указан.

    В какой части когда тогда вставлять $($lUser.Name)?

    15 августа 2018 г. 14:18
  • Не совсем понимаю, зачем указывать $($lUser.Name) если стоит такой код:

    $UsersFromALLDomains | Where {$_.Name -like "*$luser*"} где Name уже указан.

    В какой части когда тогда вставлять $($lUser.Name)?

    Выделенным жирным часть нужно заменить на $($lUser.Name)

    Получится нечто подобное:

     $UsersFromALLDomains | Where {$_.Name -like "*$($luser.name)*"} 


    The opinion expressed by me is not an official position of Microsoft



    15 августа 2018 г. 14:22
    Модератор
  • ReMCatcheR, как ваши успехи?


    The opinion expressed by me is not an official position of Microsoft

    22 августа 2018 г. 20:39
    Модератор