这就是我得到的:
Import-Module ActiveDirectory
$objectCollection = @()
$groups = (Get-ADGroup -Filter *)
foreach ($group in $groups) {
$groupName = ($group.SamAccountName)
$object = (New-Object –Type PSObject)
Add-Member -InputObject $object -MemberType NoteProperty –Name ($groupName) –Value ""
$groupMembers = (Get-ADGroupMember -Identity "$groupName" -Recursive |
Select-Object -ExpandProperty Name)
$object.$groupName = $groupMembers
$objectCollection += $object
}
$objectCollection | Export-Csv -Path C:\Users\administrator\Desktop\test.csv `
-Encoding UTF8 -Delimiter ";" -NoTypeInformation
此脚本的目标是创建一个CSV文件,其中AD组名称是一列中的标题,然后是下面单独行中列出的组的所有成员。下一个组位于一个新列中,其中AD组名称为标题,依此类推......
通常情况下,我会根据需要创建尽可能多的成员,但这一次我希望它对于有多少个组是动态的,上面的脚本只显示$ groups数组中的第一个组。
感谢任何帮助,提前谢谢!
答案 0 :(得分:0)
将每个组放在CSV文件中的单独列上对我来说似乎不合逻辑;每排一个恕我直言会更好(也更容易)。
我将如何做到这一点:
Import-Module ActiveDirectory
Get-ADGroup -Filter * | ForEach-Object {
[PSCustomObject]@{
Name = $_.samAccountName
Members = (Get-ADGroupMember $_ -Recursive | Select-Object -ExpandProperty Name) -join ","
}
} | Export-Csv -Path "C:\Users\administrator\Desktop\test.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation
输出:
"Name";"Members"
"Administrators";"Administrator,..."
"Domain Users";"Administrator,TestUser,..."