我要求生成CSV报告以获取组成员,但我有许多子域,其中包含许多以“ADM”开头的组。 GroupName用户公司LasLogon CN ADM_AM UserOne CP1
我需要以上述格式报告,我在互联网上找到了一个脚本
Get-ADGroup -Server dc1.chd1.pd.local -Filter 'Name -like "ADM*"' |
ForEach-Object{
$hash=@{GroupName=$_.Name;Member=''}
$_ | Get-ADGroupMember -ea 0 -recurs |
ForEach-Object{
$hash.Member=$_.Name
New-Object psObject -Property $hash
}
} |
sort groupname,member
此脚本仅向我提供GroupName和UserName,但不提供其他信息。请PowerShell Gurus帮我生成此报告。
答案 0 :(得分:0)
我不确定“ADM_AM,UserOne,CP1”是什么,但我得到了这么多。我仍然是PowerShell的新手,请原谅我,如果这是很多代码=)
$array = @()
Foreach ($group in (Get-ADGroup -Server dc1.chd1.pd.local -Filter 'Name -like "ADM*"'))
{
$hash=@{Username ='';GroupName=$group.Name;Company='';LastLogon='';CN=''}
$members = $hash.GroupName | Get-ADGroupMember -Recursive -ErrorAction SilentlyContinue
Foreach($member in $members)
{
$properties = $member.SamAccountName | Get-ADUser -Properties SamAccountName, Company, lastLogon, CN
$hash.Username = $properties.SamAccountName
$hash.Company = $properties.Company
$hash.LastLogon = $properties.lastLogon
$hash.CN = $properties.CN
$obj = New-Object psObject -Property $hash
$array += $obj
}
}
$array | Export-Csv C:\ -NoTypeInformation
答案 1 :(得分:0)
这是我要做的,我相信你可以缩短它。您应该指定搜索库。拥有成员samaccountname后,您可以使用Get-ADUser获取您想要的任何字段。
$GrpArr = @()
$Groups = get-adgroup -filter {name -like "adm*"} -searchbase "ou=Groups,dc=all,dc=ca" | select samaccountname
foreach ($group in $groups)
{
$GrpArr += $group
$members = get-adgroupmember $group | select samaccountName
foreach ($member in $members)
{
$memprops = get-aduser $member -properties company
$comp = $memprops.company
$grpArr += "$member,$comp"
}
}
$grpArr | export-csv c:\temp\Groups.csv -NoTypeInformation