Надеюсь, что я могу получить некоторую помощь в моем мышлении здесь, потому что я изо всех сил пытаюсь достичь sh того, что я хочу, и я сомневаюсь, что это даже лучший способ достичь этого сейчас!
По сути, у меня есть скрипт powershell ( см. ниже), который успешно перечисляет элементы определенного фильтра, который я вставил. Все это работает гладко и выводит список в CSV.
Однако следующая часть говорит ему возвращать только членов, которые являются членами указанных c группа комбо. Например, пользователь может быть членом группы 1, группы 2 и группы 7 (скажем, из 9 групп с такой схемой именования)
, поэтому я пытаюсь вернуть результаты членов, которые соответствуют только утверждению, они находятся в ДВУХ группах (Группа 1 и Группа 2) и исключают тех, кто может быть только в Группе 1, но не в Группе 2 ... надеюсь, что это имеет смысл.
# first im narowing down group search to all groups starting with Group and then a number (this is an example). This will return 9 groups. Group 1 through to Group 9
$Groups = (Get-AdGroup -filter * | Where-object { $_.name -like "Group *" } | select-object name -expandproperty name)
# Just standard Array
$Array = @()
$Data = [ordered]@{}
# so now im wanting to search for members in each of those groups we narrowed down to above
Foreach ($Group in $Groups) {
# This bit defines my search criteria. It works perfectly if i just return all users. But if i only want to display members that are in Group 1 AND Group 2....it does not return any results.
$Members = Get-ADGroupMember -identity $Group | Where-Object { ($Group.name -like "Group 1") -and ($Group.name -like "Group 2") } | Get-ADUser -Properties * | select-object givenName, sn, sAMAccountName, mail
# Eventually that will be displayed in the object below...this bit works fine
foreach ($Member in $Members) {
$Data."update" = "modify"
$Data."region" = $Group
$Data."login" = $Member.mail
$Data."first_name" = $Member.givenName
$Data."last_name" = $Member.sn
$Data."approver_level" = "BlankForNow"
#
$DataPSObject = New-Object PSObject -property $Data
#
$Array += $DataPSObject
}
}
#
$Array | Sort-Object -Property login | Export-Csv "D:\Temp\Groups.csv" -NoTypeInformation
Любые идеи, где я мог бы быть пошло не так? Может быть, лучше отредактировать выведенный CSV и сопоставить операторы таким образом. Так удалить строки из CSV, где пользователи не являются членами обоих? Даже не уверен, возможно ли это с Import-CSV tbh
Заранее спасибо!