有什么方法可以导入用户列表,在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
干杯。
答案 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"
# ...