Мне нужно написать сценарий Powershell, чтобы перечислить имена пользователей в конкретном подразделении + группы, к которым принадлежит пользователь (но мне нужно указать конкретную группу, а не видеть все группы).
Пример: OU: A
Пользователи под OU A
они являются членами групп X Y Z ...
Я нашел вот это:
Get-ADUser -Filter * -Properties samaccountname,memberof,description -SearchBase "OU" |
foreach {
$sam = $_.samaccountname
$description = $_.description
foreach ($group in $_.memberof) {
New-Object PSObject -Property @{
UserName = $_.samaccountname;
Desc = $_.description
Group = ($group -split ",")[0].Substring(3)
}
}
} |select username,Desc,Group
Но он отобразит все группы для пользователя, и я хочу показать всех пользователей и их группы (но не все группы только y x)
Я хочу перечислить все имена пользователей в OU A и группах (но я хочу видеть только группу y x). Кто-нибудь может мне помочь?
Спасибо
Два пути:
Where-Object
пункт в вашем втором Foreach
If
заявление внутри этого Foreach
Такие как:
foreach ($group in ($_.memberof | where {$_ -match 'whatever'})) { …
Или
foreach ($group in $_.memberof) {
if ($group -match 'whatever') {
# create a PSCustomobject if you're using v3+
[pscustomobject]@{
}
}
}
Кроме того, я настоятельно рекомендую сначала собрать ваших пользователей AD в переменную, а не просто передавать ее по конвейеру.
$users = get-aduser …
foreach ($u in $users) { …
Таким образом намного проще отслеживать, что вы изменяете в любой момент.