我需要编写一个 Powershell 脚本来列出特定 OU + 用户所属的组中的用户名(但我需要列出特定的组而不是查看所有组)。
例如:OU:A
OU A 下的用户
他们是 XYZ 群组的成员……
我发现了这个:
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
但是它会向用户列出所有组,我想显示所有用户及其组(但不是所有组只是 yx)
我想列出 OU A 和组中的所有用户名(但我只想查看组 yx)有人可以帮帮我吗?
谢谢
答案1
两种方式:
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) { …
通过这种方式,您可以更轻松地随时跟踪您正在修改的内容。