none
Powershell Синхронизация групп RRS feed

  • Вопрос

  • Добрый день!

    Суть вопроса

    Есть набор групп в AD

    $main_group = "main_group"

    $regional_group_one = "regional_group_one"

    $regional_group_two = "regional_group_two"

    $regional_group_three = "regional_group_three"

    # групп много, в пределах 50ти.

    #Нужно соединить все региональные по -property saMAccountName

    #Что-то типа

    $main = Get-AdGroupMember $main_group

    $one = Get-ADGroupMember $regional_group_one

    $two = Get-ADGroupMember $regional_group_two

    $three = Get-ADGroupMember $regional_group_three

    $all_regional_group = $one + $two + $three # +xx (до 50 групп)

    #Затем сравнить

    $cmp = Compare-Object $main $all_regional_group -IncludeEqual -property samAccountName

    #На выходе предполагается делать примерно следующее

    foreach ($user in $cmp) {
                    if ($user.SideIndicator -eq "<=") {
    write-host $user.samAccountName
    Remove-ADGroupMember -Identity $main -Member $user.samAccountName -Confirm:$false
                    }
                    if ($user.SideIndicator -eq "=>") {
    write-host $user.samAccountName
    Add-ADGroupMember -Identity $main -Member $user.samAccountName -Confirm:$false
                    }
    }

    Собственно как можно сложить таблицы $one + $two + etc ? 

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

    31 марта 2014 г. 10:05

Ответы

  • $all_regional_group = $one + $two + $three - Вполне рабочий вариант

    Можно упростить до:

    $groups = "regional_group_one","regional_group_two","regional_group_three"
    
    $main = Get-AdGroupMember "main_group"
    $reg_group = $groups | Foreach {Get-ADGroupMember $_}

    • Помечено в качестве ответа ArdasarXD 31 марта 2014 г. 10:38
    31 марта 2014 г. 10:24
    Отвечающий
  • PowerShell v2? Если да, то попробовать объявить, как массив:

    $all_regional_group  = @()
    $all_regional_group = $one + $two + $three 

    • Помечено в качестве ответа ArdasarXD 31 марта 2014 г. 10:47
    31 марта 2014 г. 10:45
    Отвечающий

Все ответы

  • $all_regional_group = $one + $two + $three - Вполне рабочий вариант

    Можно упростить до:

    $groups = "regional_group_one","regional_group_two","regional_group_three"
    
    $main = Get-AdGroupMember "main_group"
    $reg_group = $groups | Foreach {Get-ADGroupMember $_}

    • Помечено в качестве ответа ArdasarXD 31 марта 2014 г. 10:38
    31 марта 2014 г. 10:24
    Отвечающий
  • Добрый день!

    С плюсами изначально не выходит. Был уверен, что это рабочий вариант, однако оказалось, что это не так. Если сможете подсказать в чем проблема была, буду признателен :)

    Произошла ошибка при вызове метода, так как [Microsoft.ActiveDirectory.Management.ADPrincipal] не содержит метод с именем "op_Addition".

    Однако ваш вариант полностью рабочий.

    Спасибо!


    31 марта 2014 г. 10:38
  • PowerShell v2? Если да, то попробовать объявить, как массив:

    $all_regional_group  = @()
    $all_regional_group = $one + $two + $three 

    • Помечено в качестве ответа ArdasarXD 31 марта 2014 г. 10:47
    31 марта 2014 г. 10:45
    Отвечающий
  • Именно 

    Суть понял, спасибо огромное :)

    31 марта 2014 г. 10:47