【问题标题】:Export Active Directory Users to Excel Using Powershell使用 Powershell 将 Active Directory 用户导出到 Excel
【发布时间】:2022-10-25 11:20:15
【问题描述】:

我正在尝试编写一个脚本,将每个 AD 组的用户导出到 Excel。在 Excel 中,我将有一个工作簿,但每个组将有一个单独的工作表。但是,我似乎无法让脚本正常工作。我究竟做错了什么?

 ''''
        $A = "group A"
        $B = "group B"
        $C = "group C"
        $D = "group D"
        $E = "182"
        $F = "182Basic3"
        $G =  "A182Robots"
        $H = "501"
        $I = "601"
        $J = "765"
        $K = "S8808"

        $groups = "$A", "$B", "$C", "$D", "$E", "$F", "$G", "$I", "$J", "$K"

        $fileName = "C:\users\rqw82758\Desktop\GroupMemberShip.xlsx"

        foreach ($group in $groups) {
           Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}



        $A| Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName "A136 Basic"
        $B| Export-excel $filename -Autosize -AutoFilter -Append -WorksheetName "A151 Basic"
        $C| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A154 Basic"
        $D| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic"
        $E| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic2"
        $F| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Basic3"
        $G| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A182 Robots"
        $H| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A501 Basic"
        $I| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A601 Basic"
        $J| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "A765 Basic"
        $K| Export-excel $fileName -Autosize -AutoFilter -Append -WorksheetName "S8808 Basic"

        }

''''

【问题讨论】:

    标签: excel powershell active-directory


    【解决方案1】:

    您的代码的问题是您尝试导出到 Excel全部每次迭代中变量中的组名,而每次迭代中只检索一个名称的信息。 此外,我不会尝试使用所有这些变量,而是使用包含 Excel 的组名称和工作表名称的查找表。

    # create a lookup Hashtable with the group names as key and the desired Excel sheet name as value
    $lookup   = @{
        'group A'    = 'A136 Basic'
        'group B'    = 'A151 Basic'
        'group C'    = 'A154 Basic'
        'group D'    = 'A182 Basic'
        '182'        = 'A182 Basic2'
        '182Basic3'  = 'A182 Basic3'
        'A182Robots' = 'A182 Robots'
        '501'        = 'A501 Basic'
        '601'        = 'A601 Basic'
        '765'        = 'A765 Basic'
        'S8808'      = 'S8808 Basic'
    }
    $fileName = 'C:users
    qw82758DesktopGroupMemberShip.xlsx'
    
    foreach ($group in $lookup.Keys) {
        $result = Get-ADGroupMember -Filter "Name -eq '$group'"
        if ($result) {
            $result | Select-Object SamAccountname, Name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}} | 
                      Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName $lookup[$group]
        }
        else {
            Write-Warning "Could not find a group called '$group'.."
        }
    }
    

    附言也许还有属性objectClass 可能也很有趣,因为Get-ADGroupMember 可以返回“用户”、“组”和“计算机”类型的对象

    【讨论】:

      【解决方案2】:

      这就是你想念的

      foreach ($group in $groups) {
             
             Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}`
             |Export-Excel $filename -Autosize -AutoFilter -Append -WorksheetName $group
                    
            }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多