繁体   English   中英

使用 Powershell 将 Active Directory 用户导出到 Excel

[英]Export Active Directory Users to Excel Using Powershell

我正在尝试编写一个脚本,将每个 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,而每次迭代中您只检索一个名称的信息。 此外,我不会尝试使用所有这些变量,而是使用包含 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\rqw82758\Desktop\GroupMemberShip.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'.."
    }
}

PS 也可能对属性objectClass感兴趣,因为Get-ADGroupMember可以返回“用户”、“组”和“计算机”类型的对象

这就是你想念的

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
              
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM