导入用户列表 - 导出用户和组列表

时间:2018-06-15 21:37:38

标签: powershell active-directory

有什么方法可以导入用户列表,在AD中获取他们的组并导出列表?

Import-Csv C:\Users.csv |
  % {Get-AdUser -filter "displayname -eq '$($_.username)'"} |
    Get-ADprincipalGroupMembership |
      Select samaccountname, name |
        Export-csv -path C:\UserPermiss.csv -NoTypeInformation

文件示例:

username
Jon Jo
Steve Price
Alan Partridge

干杯。

2 个答案:

答案 0 :(得分:3)

您可以使用memberof属性,然后加入calculated property内的组数组。

Import-Csv C:\Users.csv | 
    ForEach-Object{
        Get-AdUser -Filter "displayname -eq '$($_.username)'" -Properties memberof
    } |
    Select-Object samaccountname, name, @{n='memberof';e={$_.memberof -join ';'}} |
    Export-Csv -Path C:\UserPermiss.csv -NoTypeInformation

答案 1 :(得分:3)

在PSv4 +中,您可以利用-PipelineVariable / -pv通用参数使早期管道阶段的输出可用于以后管道阶段中使用的脚本块:

Import-Csv C:\Users.csv |
  ForEach-Object -pv user { Get-AdUser -filter "displayname -eq '$($_.username)'"} |
    Get-ADprincipalGroupMembership |
      Select-Object @{ n = 'samaccountname'; e = { $user.samaccountname } }, name |
        Export-csv -path C:\UserPermiss.csv -NoTypeInformation

使用-pv user使Get-AdUser的AD用户输出在$user阶段可用作变量Select-Object,在calculated property的脚本块中引用它} samaccountname,将手头的AD用户名与他们所属的每个AD组的名称配对。

生成的CSV文件如下所示:

"samaccountname","name"
"jjo","group1"
"jjo","group2"
"sprice","group1"
"sprice","group3"
"sprice","group4"
# ...