【问题标题】:powershell export group membership multiple job titlespowershell 导出组成员资格多个职位
【发布时间】:2019-11-12 10:57:39
【问题描述】:

我有一个 csv,下面有多个职位,如下所示:

Job title 1
Job title 2
Job title 3

我现在需要的是导出具有该职位的用户的组成员身份,例如,职位为 1 的人有几个组成员身份。我需要 csv 中的这些组成员身份。是否可以为我的整个 csv 自动执行此操作,它会一一完成所有职位?

我有这个:

Get-ADUser -Filter {title -Like "Medior Functioneel beheerder"} | Get-ADPrincipalGroupMembership | select name

我如何获得它,因为我们有多个具有相同职位的用户,但我只需要一个用户的匹配,所以它只对一个匹配项执行此操作。以及如何将其导出到 csv 最好在一行上。每个职位。

【问题讨论】:

  • 您是否需要一个 csv,每人一行,其中一个职位?或者每一行只是一个职位,其中列出了具有该职位的人拥有的所有不同组名?
  • 我的每个职位都有一行,所以每一行只是职位名称以及它从用户那里获得的所有相关组。
  • 这绝对是可行的。你有没有试过……什么? :)
  • @MathiasR.Jessen 我目前有这个:Get-ADPrincipalGroupMembership -Filter {title -Like "Medior Functioneel beheerder"} -Properties Title | Select Title 但这不起作用,因为 get adprincialgroupmembership 没有过滤器选项

标签: powershell


【解决方案1】:

我会这样处理:

  • 对于每个职位:
    • 使用memberOf 值检索所有用户
    • 选择所有不同的成员资格
    • 输出带有标题 + 成员列表的自定义对象
  • 将自定义对象导出为 CSV
$csv = @'
Title
Job title 1
Job title 2
Job title 3
'@ |ConvertFrom-Csv # you'd use `Import-Csv` here instead

$result = foreach($row in $csv){
  # Fetch all relevant users with their `memberOf` attribute value
  $Users = Get-ADUser -Filter "title -eq '$($row.Title)'" -Properties memberOf

  # Select all distinct memberOf values
  $Memberships = $Users.memberOf |Sort -Unique

  # Resolve the group names
  $GroupNames = ($Memberships |Get-ADGroup).Name

  # Output custom object 
  [pscustomobject]@{
    Title = $row.Title
    Groups = $GroupNames -join ';'
  } 
}

# output to CSV
$result |Export-Csv -Path .\output.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多