我在一個 k-12 學區作業,我一直在撰寫一個腳本,將課后活動的學生添加到不同的 AD 安全組,這樣我就可以將訪問卡訪問權限專門應用于他們以后的日程安排(目前所有學生都有一個標準時間,我們'剛剛放學后的東西一直沒鎖門)。
我們學生的課后活動在我們的 SIS 中進行登記,Azure 可以提取所有這些名冊并將其應用于用戶。我們的訪問控制管理器只與 AD 同步,而不是 azure,所以我創建了 AD 安全組,這個腳本正在嘗試將 azure 組同步到安全組。我對powershell相當陌生,所以雖然我確實可以使用它,但我的腳本很長并且需要很長時間才能弄清楚。我正在尋找有關如何縮短它的參考
$VB = Get-AzureADGroupMember -ObjectId zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz #volleybally
$SOB = Get-AzureADGroupMember -ObjectId zzzzzzzzzzzzzzzzzzzzzzzzzzzz #Boys Soccer
$SOG = Get-AzureADGroupMember -ObjectId xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 #Girls Soccer
$BG = Get-AzureADGroupMember -ObjectId 7xxxxxxxxxxxxxxxxxxxxxxxxxxx #Boys Golf
$GG = Get-AzureADGroupMember -ObjectId xxxxxxxxxxxxxxxxxxxxxxxxxxxxx1c #Girls Golf
$CC = Get-AzureADGroupMember -ObjectId zzzzzzzzzzzzzzzzzzzzzzzzzzzzz #Cross Country
$FCL = Get-AzureADGroupMember -ObjectId xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #Fall Cheerleading
$SDD = Get-AzureADGroupMember -ObjectId xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #Speech Drama & Debate
#initiate SG Groups
$SGCC = Get-ADGroup -Identity sample group 1
$SGFC = Get-ADGroup -Identity sample group 2
$SGFB = Get-ADGroup -Identity sample group 3
$SGGO = Get-ADGroup -Identity sample group 4
$SGSO = Get-ADGroup -Identity sample group 5
$SGVB = Get-ADGroup -Identity sample group 6
# convert azure values to AD and add to AD groups
$FB= Foreach($ad in $FB) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$VB = Foreach($ad in $VB) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
# your text
}
$SOB = Foreach($ad in $SOB) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$SOG = Foreach($ad in $SOG) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$BG = Foreach($ad in $BG) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$GG = Foreach($ad in $GG) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$CC = Foreach($ad in $CC) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$FCL = Foreach($ad in $FCL) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
$SDD = Foreach($ad in $SDD) {
Get-ADUser ($ad.UserPrincipalName.Split('@')[0])
}
#### add AD Members to SG
Add-AdGroupMember -Identity $SGFB -Members $FB
# Looking to simplify, To be continued
我已經寫了很長的路。好奇是否有人對如何做得更好有想法。就像我說的,我是一個 PS 菜鳥。
uj5u.com熱心網友回復:
我認為您可以通過使用哈希表( $map) 來簡化任務,其中鍵是每個 Azure 組的 GUID,值是需要添加 Az 組成員的每個 AD 組。
例如:
$map = @{
'xxxxxxxxxxxx' = 'group 1', 'group 5', 'group 8' # Football
'zzzzzzzzzzzz' = 'group 2' # Volleyball
'yyyyyyyyyyyy' = 'group 3', 'group 4' # Boys Soccer
# and so on here
}
foreach($pair in $map.GetEnumerator()) {
# I think you could use `DisplayName` instead of `UserPrincipalName` here
# and don't have a need to parse the UPNs
$azMembers = (Get-AzureADGroupMember -ObjectId $pair.Key).DisplayName
foreach($adGroup in $pair.Value) {
Add-ADGroupMember -Identity $adGroup -Members $azMembers.DisplayName
}
}
如行內評論中所述,我相信 using.DisplayName就足夠了,因為-Members它采用以下值之一:
- 專有名稱
- GUID(物件GUID)
- 安全識別符號 (objectSid)
- SAM 帳戶名稱 (sAMAccountName)
但是考慮到這可能不是這種情況并且不起作用,那么決議用戶而不是使用的更簡單和更安全的方法是使用class,因此使用它的代碼如下所示:UserPrincipalName.Split('@')[0]MailAddress
# here goes the `$map` too!
foreach($pair in $map.GetEnumerator()) {
$azMembers = [mailaddress[]] (Get-AzureADGroupMember -ObjectId $pair.Key).UserPrincipalName
foreach($adGroup in $pair.Value) {
Add-ADGroupMember -Identity $adGroup -Members $azMembers.User
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527546.html
標籤:天蓝色电源外壳活动目录
