Использование Switch для автоматического добавления пользователей в группы. Active Directory Powershell - PullRequest
0 голосов
/ 17 июня 2020

Я хочу автоматизировать добавление новых пользователей в их необходимые группы на основе их филиала и отдела, в котором они работают. Я получил эту работу, но я также хочу добавить некоторые дополнительные подотделы, от которых пользователи могут или не могут быть отдельными, и я просто хочу добавить любого пользователя, который является частью этого подотдела, добавляется в конечный массив, содержащий все группы пользователь должен быть отдельно от.

, поэтому пользователь будет частью ветки и отдела, а затем, необязательно, частью подотдела.

то, что я не уверен, как нужно сделать, как переключить эти подотделы, чтобы они не были взаимоисключающими, т.е. у пользователя были бы подотделы «менеджер по работе с клиентами» и «транспортное средство компании», и каждый из этих подотделов имел бы пару групп, которые будут применяться к заканчиваться как $ SubGroups

в основном я хочу, чтобы подотделы были необязательными, но также могу выбрать несколько из них за раз, чтобы любой после меня мог просто добавить к нему все, что он хочет, а сценарий не break

так, например, это подотделы

  • менеджеры счетов

  • Продажи в школах

  • Персонал компании Автомобиль

  • RemoteAccess

    каждый из этих подотделов будет иметь пару групп, которые могут быть применены в конце как $ SubGroups

ссылочные группы в конце автоматизировать членство в группах , сравнивая контрольные группы (группы, в которых должен состоять пользователь) с группами, в которых пользователь в настоящее время находится. Затем добавьте / удалите при необходимости. У меня уже есть эта деталь, я просто отрезал ее с конца, чтобы сделать ее немного меньше.

Вот что у меня есть:

$User = $_.user
$Department = $_.OrgDepartmentName
$Branch = $_.Branch
Switch ($Department) {
    Sales {
        $DepartmentGroups = @(
            "Sales Team"
        )
    }
    Services {
        $DepartmentGroups = @(
            "Services Team"
        )
    }
    Admin {
        $DepartmentGroups = @(
            "Admin Team"
        )
    }
}
Switch ($Branch) {
    Christchurch {
        $BranchGroups = @(
            "Christchurch Team",
            "Christchurch Admin"
        )
    }
    Auckland {
        $BranchGroups = @(
            " Auckland Team",
            " Auckland Admin"
        )
    }
    Wellington {
        $BranchGroups = @(
            "Wellington Team",
            "Wellington Admin"
        )
    }
    Dunedin {
        $BranchGroups = @(
            "Dunedin Team",
            "Dunedin Admin"
        )
    }
}
$AllCompanyGroups = @(
    "All Company"
    "All Staff"
)
$UserGroups = $AllCompanyGroups + $DepartmentGroups + $BranchGroups + $Subgroups
$UserGroups = $ReferenceGroups
$UserGroups

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Я думаю, что приведенное ниже должно делать то, что вы хотите сделать. Вам все равно понадобится способ создания элементов для $ Selection

 [System.Collections.ArrayList]$SubGroup = @()
 $Selection = "Account Managers", "Internal Sales Support"

 Switch ($Selection) {
    "Account Managers" {$SubGroup.Add("AMGroup1")
                        $SubGroup.Add("AMGroup2")}
    "Internal Sales Support" {$SubGroup.Add("Internal Sales Support")}
    "School Sales" {$SubGroup.Add("School Sales")}
    "Staff with a company Vehicle" {$SubGroup.Add("CarGroup1")
                                    $SubGroup.Add("CarGroup2")}
    }

 $SubGroup
1 голос
/ 17 июня 2020

Думаю, вы спрашиваете совета о следующих шагах. Если я правильно это читаю, вы хотите сравнить $ UserGroups с $ ReferenceGroups, чтобы увидеть, в какие группы нужно добавить или удалить пользователя.

Если у меня есть право, вы можете попробовать Compare-Object это круто и супер легко сравнивать массивы. Например:

$Compare = Compare-Object $ReferenceGroups $UserGroups
$Adds    = ( $Compare | Where-Object{ $_.SideIndicator = '<=' } ).InputObject
$Removes = ( $Compare | Where-Object{ $_.SideIndicator = '=>' } ).InputObject

Если вы просто хотите добавить $ UserGroups к $ ReferenceGroups, вы можете использовать оператор + =.

$UserGroups += $ReferenceGroups

Примечание: обычно лучше использовать ArrayList при добавлении, но это еще одна вершина c.

Как и сейчас, $ ReferenceUsers будет иметь значение null, поэтому $UserGroups = $ReferenceGroups в конечном итоге приведет к обнулению $UserGroups.

Также , не функциональная проблема, но, учитывая, что вы не добавляете массивы для групп отделов или филиалов, вы можете поместить Break операторы в каждый блок переключателей, например:

Christchurch {
    $BranchGroups = @(
        "Christchurch Team",
        "Christchurch Admin"
    )
    Break
}

Это остановит ненужные оценки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...