首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell -新的雇用帐户-添加到多个组

Powershell -新的雇用帐户-添加到多个组
EN

Stack Overflow用户
提问于 2022-02-21 05:48:15
回答 1查看 57关注 0票数 1

我对powershell相当陌生。

我想得到一些想法,我可以建立一个更好的广告新雇用帐户脚本。

这就是我希望找到更简单的方法来管理用户组的地方。

我们有类似于25+的办公室。每个办公室至少有3-5个不同的部门.

我一直在使用两个不同的开关语句,一个用于更新办公室地址和其他信息,另一个用于添加组成员。管理小组是痛苦的,因为每个部门在办公室有一些共同的小组和2或3个排他性的小组。

这只是前几个开关的例子。

代码语言:javascript
复制
Switch ($office) {
  'Mississauga' { Set-ADUser -Identity $ADusername -City Waterloo -Company "JayBala" -Country CA -Fax 905-111-39392 -PostalCode "L6N 2W8" -Server $DC -State ON -StreetAddress "25 Billing Road"}
  'Winnipeg'     { Set-ADUser -Identity $ADusername -City Watertown -Company "JayBala." -Country CA -Fax 905-111-39392 -PostalCode "L6N 2W8" -Server $DC -State MB -StreetAddress "54 Terry Road"}
  'Richmond'  { Set-ADUser -Identity $ADusername -City Richmond -Company "JayBala." -Country CA -Fax 905-111-39392 -PostalCode "L6N 2W8" -State BC -StreetAddress "23 Winter Road" -Server $DC}

这是我用来根据部门添加组的开关。正如我所说,这是很难维持的。每个办公室可能有3-5个不同的部门,有一些共同的组和1-2个排他性组.

代码语言:javascript
复制
 Switch ($department) {
 'Waterlooo EDR' {Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf ('ED_Security','EDR','All - Waterloo') -Server $dc }
 'Waterlooo GEO' {Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf ('ED_Security','EDR','All - Waterloo') -Server $dc }
 'Waterlooo HAZ' {Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf ('HA_Security','Waterloo -Haz','All - Waterloo') -Server $dc }
 'Waterlooo BSS' {Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf ('BS_Security','BSG Group','All - Waterloo','Waterloo-BSS') -Server $dc } 
 'Waterlooo ERC' {Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf ('VE_Security','Waterloo-ERC','All-Waterloo') -Server $dc }

这只是个样本。

有什么更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 10:15:35

更容易维护的方法可能是使用Hashtable。

至于第一部分,您现在有了一个开关来获得新用户位置的正确值,我将创建一个嵌套的HashTable。

这可能看起来像很多文本,但它有助于有序地维护这些值。此外,通过这样做,您可以为溅溅使用内部哈希表--参数到Set-ADUser,只要您使用正确的参数(键)名称,如文献资料所示

代码语言:javascript
复制
$officeLocations = @{
    'Mississauga' = @{ City          = 'Waterloo'
                       Company       = 'JayBala'
                       Country       = 'CA'
                       Fax           = '905-111-39392'
                       PostalCode    = 'L6N 2W8'
                       Server        = $DC
                       State         = 'ON'
                       StreetAddress = '25 Billing Road'
                    }
    'Winnipeg'   = @{ City          = 'Watertown'
                      Company       = 'JayBala'
                      Country       = 'CA'
                      Fax           = '905-111-12345'
                      PostalCode    = 'L6N 2W8'
                      Server        = $DC
                      State         = 'MB'
                      StreetAddress = '54 Terry Road'
                    }
    'Richmond'   = @{ City          = 'Richmond'
                      Company       = 'JayBala'
                      Country       = 'CA'
                      Fax           = '905-111-67890'
                      PostalCode    = 'L8N 2W8'
                      Server        = $DC
                      State         = 'BC'
                      StreetAddress = '23 Winter Road'
                    }
    # and so on
}

接下来,创建第二个Hashtable来存储部门名称并将其与组组合。

哈希中的每个键都会存储一个组名数组,或者一个组名。

代码语言:javascript
复制
$officeGroups = @{
    'Waterlooo EDR' = 'ED_Security','EDR','All - Waterloo'
    'Waterlooo GEO' = 'ED_Security','EDR','All - Waterloo'
    'Waterlooo HAZ' = 'HA_Security','Waterloo -Haz','All - Waterloo'
    'Waterlooo BSS' = 'BS_Security','BSG Group','All - Waterloo','Waterloo-BSS'
    'Waterlooo ERC' = 'VE_Security','Waterloo-ERC','All-Waterloo'
    # and so on
}

现在,代码可以简化如下:

代码语言:javascript
复制
if ($officeLocations.ContainsKey($office)) {
    # use the underlying Hashtable for splatting the properties
    $properties = $officeLocations[$office]  # get the Hash with location properties
    $properties['Identity'] = $ADusername    # add an Identity item
    Set-ADUser @properties

    # now that we have set location properties, proceed adding the user to the correct group based on the $department
    if ($officeGroups.ContainsKey($department)) {
        Add-ADPrincipalGroupMembership -Identity $ADusername -MemberOf $officeGroups[$department] -Server $dc
    }
    else {
        Write-Warning "Could not find groups for department '$department'"
    }
}
else {
    Write-Warning "Could not find a location for office '$office'"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71201714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档