簡體   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