【发布时间】:2021-09-14 07:00:44
【问题描述】:
我有以下从 powershell 导出的 CSV "objectGUID","sAMAccountName","givenName","SN","Description","mail","memberOf","preferredLanguage","manager","title","company","distinguishedName"
唯一的区别是 MemberOf。 在 AD 中,用户是多个 AD 组的成员,我们要导出用户及其组,组必须在同一列中导出,而不是在不同的行中。
我为得到输出而编写的代码是
Import-Module ActiveDirectory
$Groups = import-csv CGroups.csv
Foreach ($Group in $Groups)
{
$Arrayofmembers = Get-ADGroupMember -identity $Group.identity | select name,samaccountname
foreach ($Member in $Arrayofmembers)
{
$user = Get-ADUser $member.samaccountname -properties mail,physicalDeliveryOfficeName,objectGuid,DisplayName,manager
$guid = $user.objectGuid
$immutableId = [System.Convert]::ToBase64String($guid.ToByteArray())
$OBJNEW=IID2GUID $immutableId
$objatt15 = $OBJNEW.att15
$ADObj = Get-ADUser -Filter "extensionattribute15 -eq '$objatt15'" -Server dc.contoso.com:3268 -SearchBase 'dc=contoso,dc=net' -Properties msRTCSIP-PrimaryUserAddress,extensionattribute8,mail,DisplayName,manager,title,company
$obj = New-Object -TypeName psobject
$obj | Add-Member -MemberType NoteProperty -Name objectGUID -Value $ADObj.objectGUID
$obj | Add-Member -MemberType NoteProperty -Name sAMAccountName -Value $ADObj.sAMAccountName
$obj | Add-Member -MemberType NoteProperty -Name givenName -Value $ADObj.givenName
$obj | Add-Member -MemberType NoteProperty -Name SN -Value $ADObj.Surname
$obj | Add-Member -MemberType NoteProperty -Name Description -Value $ADObj.Description
$obj | Add-Member -MemberType NoteProperty -Name mail -Value $ADObj.mail
$obj | Add-Member -MemberType NoteProperty -Name memberOf -Value $Group.identity
$obj | Add-Member -MemberType NoteProperty -Name preferredLanguage -Value $ADObj.preferredLanguage
$obj | Add-Member -MemberType NoteProperty -Name manager -Value $ADObj.manager
$obj | Add-Member -MemberType NoteProperty -Name title -Value $ADObj.title
$obj | Add-Member -MemberType NoteProperty -Name company -Value $ADObj.company
$obj | Add-Member -MemberType NoteProperty -Name distinguishedName -Value $ADObj.distinguishedName
$obj | export-csv -Append -NoTypeInformation CGroupExport.csv
}
}
【问题讨论】:
-
您可以将用户所属的各个组与分隔符组合起来。这样,您可以从一个仅占据一列的数组创建一个字符串。在该属性上使用
-join ';' -
你没有显示你的函数 IID2GUID,我也不明白为什么你会在循环中使用
Get-ADUser两次。你想要的输出到底是什么? -
好的,我刚刚注意到,所以最初的 Get-ADUser 来自源 AD,我们想在目标 AD 上进行匹配,我们使用 IID2GUID 来匹配 immutableid 但这不是这里的请求。目标是在字符串中获取该成员列。我的 powershell 编码技能仅限于您所看到的内容,因此,如果您可以建议 -join 的代码,那将非常棒。
标签: powershell group-by