powershell - 获取具有其他用户对象属性的所有用户组
问题描述
我是 powershell 新手,想了解如何获取属于用户的组以及以下格式的其他用户对象属性(为每个组重复用户和电子邮件):
username user_email user_groups
user1 user1@domain.com group1
user1 user1@domain.com group2
user1 user1@domain.com group3
user2 user2@domain.com group1
user2 user2@domain.com group2
...
我知道这会获取用户组,但不确定如何包含其他用户对象并以上述格式重复:
Get-ADPrincipalGroupMembership username | select name
解决方案
您需要获取 ADUser 对象、扩展其 memberof 属性、遍历这些对象并获取每个对象的广告组。
$username = "PowerShellGuy"
$adUserObj = Get-ADUser -Filter "SamAccountName -eq '$username'" -properties memberof
$groups = $adUserObj.MemberOf | Get-ADgroup
你可以像这样单行
Get-ADUser -Filter "SamAccountName -eq 'PowerShellGuy'" -properties memberof | % memberof | Get-ADgroup
如果您想要自定义格式,您可以构建自定义 psobject 或自定义类。我更喜欢类方法
Class CustomAdInfo
{
$UserName
$Email
$Group
}
如果你想要一个组,那么你可以做这样的事情
Class CustomAdInfo
{
$UserName
$Email
$Group
}
$listOfUsers = @("foo","bar")
$customObjects =
foreach($user in $listOfUsers)
{
$adUserObj = Get-ADUser -Filter "SamAccountName -eq '$user'" -properties memberof, emailaddress
$groups = $adUserObj.MemberOf | Get-ADgroup
foreach($group in $groups)
{
New-Object -TypeName CustomAdInfo -Property @{
UserName = $adUserObj.SamAccountName
Email = $adUserObj.EmailAddress
Group = $group
}
}
}