组名称和说明 - Powershell

组名称和说明 - Powershell

我绝不是一个 powershell 专业人士,我需要一些指导来完成我需要做的事情。

我需要从 AD 生成一个包含以下列的 csv:

名称、Samaccountname、Memberof 和组成员描述。目前,我使用以下方法获取前 3 个:

Import-Csv .\users.csv |
ForEach-Object{
Get-ADUser -Identity $_.samaccountname -Properties *  | Select-Object -Property Name,SamAccountName, @{n='MemberOf'; e= { $_.memberof -replace '^CN=(?<Name>.*?),(?:OU|CN).*$', '${Name}' -join ', ' | Out-String}} | Sort-Object -Property Name
}| Export-Csv -Path 'C:\Users\xxxx\Membership.csv' -NoTypeInformation

我遇到的麻烦是想办法打印出组描述,使它们的顺序与组名相同。这样,一旦它们进入 excel,我就可以使用 VBA 来获取它们,这样它们就不会被逗号分隔,也不会在每个单元格中单独显示

任何想法或提示都会有帮助

奖励回合:还需要取一个特定的组名并将其分成自己的列。

答案1

我认为这将满足您的需求。请随意将用户过滤器替换为您的 users.csv。

Get-ADUser -Filter * |`
ForEach-Object { `
$FileName = $_.SamAccountName + ".csv" ; `
$FileName ; `
Get-ADPrincipalGroupMembership $_ | `
  Select-Object -Property SamAccountName, name, GroupScope, GroupCategory | `
    Sort-Object -Property SamAccountName | `
      Export-Csv -Path $FileName -Encoding ASCII ; `
 }

每个用户都会获得自己的包含 sam/name 和 groups 的 CSV。

编辑:

这将生成一个表,其中每个组、组描述、名称和 sam 位于一行上。

ForEach ($Group in (Get-ADGroup -Filter * -properties *))  { Get-ADGroupMember $Group | Select @{Label="Group";Expression={$Group.Name,$Group.Description}},Name,SamAccountName}

相关内容