【问题标题】:Issues with script to pull AD group membership and output info to file将 AD 组成员资格和输出信息输出到文件的脚本问题
【发布时间】:2021-12-02 08:47:26
【问题描述】:

我运行了一个脚本,该脚本提取了一个包含 1 个成员的 Active Directory 组列表。该脚本运行良好,并为我提供了我正在寻找的广告组列表(脚本如下):

Get-ADGroup -Filter * -Properties Members | where { $_.Members.Count -eq 1 } | Export-Csv -Path c:\users\me\documents\1_member_groups.csv -NoTypeInformation

现在我正在尝试获取此文件并将组列表输入另一个脚本,该脚本将提取这些 AD 组的成员资格并将其放入一个列出组名和组成员的文件中。我找到了一个不错的脚本,我认为应该做我想做的事,但是当导出 $results 时,组名部分似乎是空白的。任何人都可以提出任何建议或建议另一种方法吗?

*** 出于某种原因,我对输入文件的 Import-Csv 不太满意,它似乎只适用于 Get-Content 和一个很好的 txt 文件

$Groups = Get-Content -Path 'C:\Users\me\Documents\1_member_groups.txt'

$ErrorActionPreference = 'Continue'

$Results = foreach( $Group in $Groups ){Get-ADGroupMember -Identity $Group | foreach {[pscustomobject]@{GroupName = $Group.NameName = $_.Name}}}

$Results| Export-Csv -Path 'C:\Users\me\Desktop\test1.csv'

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    您可以一次性处理所有内容,而不是将结果导出到文件中,然后读取该文件来处理脚本的第二部分。

    试试这样的,我觉得应该可以:

    Get-ADGroup -Filter * -Properties Member | ForEach-Object {
        if($_.Member.Count -eq 1)
        {
            [pscustomobject]@{
                GroupName = $_.Name
                Member = (Get-ADObject $_.Member).Name
            }
        }
    } | Export-Csv -Path c:\users\me\documents\1_member_groups.csv -NoTypeInformation
    

    请注意,我正在做(Get-ADUser $_.Member).Name,在这种情况下,因为我们确定组中只有 1 个成员,所以它应该可以正常工作,但是如果有多个成员,则对该数组进行循环将需要。

    【讨论】:

    • 您应该使用Get-ADObject 而不是Get-ADUser,因为该组的成员可以是用户、计算机或嵌套组。
    • @Theo 你是对的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2012-04-18
    相关资源
    最近更新 更多