我試圖找出邏輯做這樣的事情:PowerShell命令AD用戶組成員比較基準
- 查詢所有廣告組在特定的OU
- 查詢所有用戶在一個特定的OU
- 查詢該用戶的所有組成員
- 如果任何用戶屬於在初始組查詢的一個或多個基團,輸出該信息
- 如果任何用戶屬於沒有一個組中最初的組查詢,也輸出該信息
我在這個網站挖了一遍,發現一個腳本,大部分的作品,但我堅持我如何可以比較用戶的組成員身份原我正在拉的組查詢。看起來我可以使用compare-object cmdlet,但參數似乎沒有包含任何讓我能夠跟蹤兩個對象共有多少個組的內容。
我在網上找到的代碼如下:
$groups = Get-ADGroup -Filter * | where {$_.distinguishedname -like "*,OU=TUNE_TEST_GROUPS,OU=TUNE_TEST,DC=tune,DC=priv"}
$users = Get-ADUser -Filter * | where {$_.distinguishedname -like "*,OU=TUNE_TEST_USERS,OU=TUNE_TEST,DC=tune,DC=priv"}
foreach ($User in $Users) {
$userGroups = Get-ADPrincipalGroupMembership $User
if ($userGroups.Count -gt 1) {
"{0} is a member of the following {1} groups:" -f $User.SamAccountName, $userGroups.Count
foreach ($group in $userGroups) {
"`t{0}" -f $group.Name
}
} elseif ($userGroups.Count -lt 1) {
"{0} is a member of the following {1} groups:" -f $User.SamAccountName, $userGroups.Count
foreach ($group in $userGroups) {
"`t{0}" -f $group.Name
}
}
}
這樣做的問題是,我沒有在1號線我比較用戶組名的組查詢的名稱的方法也無法確定用戶屬於該列表中的一個或多個組。我不確定我是否可以使用相同的計數方法。
實際上,我想我可能能夠只是通過他們與嵌套在一個if/else語句同時導出初始組和用戶查詢到CSV和環foreach循環。將這個嘗試並報告回去 –