【问题标题】:Script to get Group Member, group starting with "ADM*"获取组成员的脚本,组以“ADM*”开头
【发布时间】:2013-10-25 17:11:01
【问题描述】:

我需要生成 CSV 报告以获取小组成员。但是,我有许多子域包含以 ADM 开头的组。

我需要以下格式的报告:

GroupName   User    Company     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 active-directory active-directory-group


    【解决方案1】:

    我不确定“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
    

    【讨论】:

    • 您好 HiTech,我收到以下错误:Get-ADGroupMember:无法绑定参数“身份”。无法将类型“Selected.Microsoft.ActiveDirectory.Management.ADGroup”的“@{samaccountname=ADM_GR_De}”值转换为类型“Microsoft.ActiveDirectory.Management.ADGroup”。在 line:6 char:33 + $members = get-adgroupmember
    • Get-ADUser:无法验证参数“身份”上的参数。参数为空。提供一个非空参数并再次尝试该命令。在 line:9 char:31 + $memprops = get-aduser
    • Get-ADUser:无法验证参数“身份”上的参数。参数为空。提供一个非空参数并再次尝试该命令。在 line:8 char:58 + $properties = $member.SamAccountName | Get-ADUser
    【解决方案2】:

    这是我要做的,我相信你可以缩短它。你应该指定一个搜索库。获得成员 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
    

    【讨论】:

    • 比尔,我收到错误:Get-ADGroupMember:无法绑定参数“身份”。无法将类型“Selected.Microsoft.ActiveDirectory.Management.ADGroup”的“@{samaccountname=ADM_GR_De}”值转换为类型“Microsoft.ActiveDirectory.Management.ADGroup”。在 line:6 char:33 + $members = get-adgroupmember
    • Get-ADUser:无法验证参数“身份”的参数。参数为空。提供一个非空参数并再次尝试该命令。在 line:9 char:31 + $memprops = get-aduser
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多