![](/img/trans.png)
[英]Trying to Export a CSV list of users using Active Directory Module for Windows Powershell
[英]Export Active Directory Users to Excel Using Powershell
我正在尝试编写一个脚本,将每个 AD 组的用户导出到 Excel。 在 Excel 中,我将有一个工作簿,但每个组将有一个单独的工作表。 但是,我似乎无法让脚本正常工作。 我究竟做错了什么?
''''
$A = "group A"
$B = "group B"
$C = "group C"
$D = "group D"
$E = "182"
$F = "182Basic3"
$G = "A182Robots"
$H = "501"
$I = "601"
$J = "765"
$K = "S8808"
$groups = "$A", "$B", "$C", "$D", "$E", "$F", "$G", "$I", "$J", "$K"
$fileName = "C:\users\rqw82758\Desktop\GroupMemberShip.xlsx"
foreach ($group in $groups) {
Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}
$A| Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName "A136 Basic"
$B| Export-excel $filename -Autosize -AutoFilter -Append -WorksheetName "A151 Basic"
$C| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A154 Basic"
$D| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic"
$E| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic2"
$F| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic3"
$G| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Robots"
$H| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A501 Basic"
$I| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A601 Basic"
$J| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A765 Basic"
$K| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "S8808 Basic"
}
''''
您的代码的问题是您尝试在每次迭代中将变量中的所有组名导出到 Excel,而每次迭代中您只检索一个名称的信息。 此外,我不会尝试使用所有这些变量,而是使用包含 Excel 的组名称和工作表名称的查找表。
# create a lookup Hashtable with the group names as key and the desired Excel sheet name as value
$lookup = @{
'group A' = 'A136 Basic'
'group B' = 'A151 Basic'
'group C' = 'A154 Basic'
'group D' = 'A182 Basic'
'182' = 'A182 Basic2'
'182Basic3' = 'A182 Basic3'
'A182Robots' = 'A182 Robots'
'501' = 'A501 Basic'
'601' = 'A601 Basic'
'765' = 'A765 Basic'
'S8808' = 'S8808 Basic'
}
$fileName = 'C:\users\rqw82758\Desktop\GroupMemberShip.xlsx'
foreach ($group in $lookup.Keys) {
$result = Get-ADGroupMember -Filter "Name -eq '$group'"
if ($result) {
$result | Select-Object SamAccountname, Name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}} |
Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName $lookup[$group]
}
else {
Write-Warning "Could not find a group called '$group'.."
}
}
PS 也可能对属性objectClass
感兴趣,因为Get-ADGroupMember
可以返回“用户”、“组”和“计算机”类型的对象
这就是你想念的
foreach ($group in $groups) {
Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}`
|Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName $group
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.