我对powershell相当陌生。
我想得到一些想法,我可以建立一个更好的广告新雇用帐户脚本。
这就是我希望找到更简单的方法来管理用户组的地方。
我们有类似于25+的办公室。每个办公室至少有3-5个不同的部门.
我一直在使用两个不同的开关语句,一个用于更新办公室地址和其他信息,另一个用于添加组成员。管理小组是痛苦的,因为每个部门在办公室有一些共同的小组和2或3个排他性的小组。
这只是前几个开关的例子。
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个排他性组.
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 }这只是个样本。
有什么更好的方法吗?
发布于 2022-02-21 10:15:35
更容易维护的方法可能是使用Hashtable。
至于第一部分,您现在有了一个开关来获得新用户位置的正确值,我将创建一个嵌套的HashTable。
这可能看起来像很多文本,但它有助于有序地维护这些值。此外,通过这样做,您可以为溅溅使用内部哈希表--参数到Set-ADUser,只要您使用正确的参数(键)名称,如文献资料所示
$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来存储部门名称并将其与组组合。
哈希中的每个键都会存储一个组名数组,或者一个组名。
$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
}现在,代码可以简化如下:
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'"
}https://stackoverflow.com/questions/71201714
复制相似问题