获取组成员的脚本,以“ADM *”开头的组

时间:2013-10-25 17:11:01

标签: powershell active-directory active-directory-group

我要求生成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帮我生成此报告。

2 个答案:

答案 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