取得AD中所有域用戶并在EXCEL中整理成表格的三個方法

突然要取得AD中所有域用戶并且制作成列表舶赔,因為不可避免地多次要用到秆吵,所以這里寫下來以備忘。

方法一(該方法會列出所有用戶不管是啟用的還是禁用的)

  1. 用管理員登錄任意一臺域控(DC),運行Windows PowerShell捞附,在PowerShell下運行命令:
 Get-WmiObject -Class Win32_UserAccount >C:\userList.txt

注意其后的C:\userList.txt指明了我通過輸出重定向把取得用戶信息輸出到了C:\userList.txt這個文件里,你可以根據(jù)實際情況變更它您没。

  1. 打開C:\userList.txt文件鸟召,把里面的內(nèi)容復(fù)制出來,打開一個Excel的空白工作簿氨鹏,把這個內(nèi)容粘貼到Sheet1的A列里如圖:


    取得的內(nèi)容粘貼到EXCEL里的Sheet1里的A列里
  2. 點擊EXCEL里底部Sheet1右邊的+號按鈕欧募,新建一個新工作表Sheet2如圖:


    新建工作表Sheet2
  3. 在EXCEL界面按ALT+F11打開VBA環(huán)境,依次點擊菜單插入Insert仆抵、模塊Module跟继,此時將插入一個新的模塊名為Module1,選中它镣丑,然后在右邊空白環(huán)境里粘貼下面代碼:
'A format converter for AD user information
'By Darwin Zuo (darwin.zuo@163.com)
'2019-08-29

Sub ADUserFormConvert()
    rowInSheet2 = 1
    rowInSheet1 = 0
    blankCounting = 0
    
    
    Sheets("Sheet2").Cells(1, 1) = "Account Type"
    Sheets("Sheet2").Cells(1, 2) = "Caption"
    Sheets("Sheet2").Cells(1, 3) = "Domain"
    Sheets("Sheet2").Cells(1, 4) = "SID"
    Sheets("Sheet2").Cells(1, 5) = "Full Name"
    Sheets("Sheet2").Cells(1, 6) = "Name"
    
    
    Do While blankCounting < 5
        rowInSheet1 = rowInSheet1 + 1
        cv = Sheets("sheet1").Cells(rowInSheet1, 1).Value
        If Len(cv) > 0 Then
            blankCounting = 0
            hdr4 = Left(cv, 4)
            If hdr4 = "Acco" Then
                rowInSheet2 = rowInSheet2 + 1
                Sheets("sheet2").Cells(rowInSheet2, 1) = Right(cv, Len(cv) - 14)
            ElseIf hdr4 = "Capt" Then
                Sheets("sheet2").Cells(rowInSheet2, 2) = Right(cv, Len(cv) - 14)
            ElseIf hdr4 = "Doma" Then
                Sheets("sheet2").Cells(rowInSheet2, 3) = Right(cv, Len(cv) - 14)
            ElseIf hdr4 = "SID " Then
                Sheets("sheet2").Cells(rowInSheet2, 4) = Right(cv, Len(cv) - 14)
            ElseIf hdr4 = "Full" Then
                Sheets("sheet2").Cells(rowInSheet2, 5) = Right(cv, Len(cv) - 14)
            ElseIf hdr4 = "Name" Then
                Sheets("sheet2").Cells(rowInSheet2, 6) = Right(cv, Len(cv) - 14)
            End If
        Else
            blankCounting = blankCounting + 1
        End If
    Loop
    MsgBox "Done."
End Sub

粘貼好代碼的界面
  1. 按F5運行代碼舔糖,如果顯示下面的信息那么信息已經(jīng)轉(zhuǎn)換好了,關(guān)掉VBA環(huán)境切換到Sheet2查看結(jié)果即可:


    運行成功會顯示這個窗口

    對于大多數(shù)情況下莺匠,操作到此為止了金吗,得到的數(shù)據(jù)如下圖:


    最終得到的數(shù)據(jù)

方法二(可以選擇是列出所有用戶、僅啟用用戶趣竣、僅禁用用戶)

  1. 用管理員登錄任意一臺域控(DC)摇庙,運行Windows PowerShell,根據(jù)需要在PowerShell下執(zhí)行下面三個中的某個命令:
#這是只列出啟用的用戶的版本
 Get-ADUser -Filter {Enabled -eq "True"} >C:\userList.txt
#這是只列出被禁用的用戶的版本
 Get-ADUser -Filter {Enabled -eq "False"} >C:\userList.txt
#這是列出所有用戶的版本
Get-ADUser -Filter {ObjectClass -eq "user"}  >C:\userList.txt

注意其后的C:\userList.txt指明了我通過輸出重定向把取得用戶信息輸出到了C:\userList.txt這個文件里期贫,你可以根據(jù)實際情況變更它跟匆。

  1. 打開C:\userList.txt文件,把里面的內(nèi)容復(fù)制出來通砍,打開一個Excel的空白工作簿玛臂,把這個內(nèi)容粘貼到Sheet1的A列里如圖:


    取得的內(nèi)容粘貼到EXCEL里的Sheet1里的A列里
  2. 點擊EXCEL里底部Sheet1右邊的+號按鈕,新建一個新工作表Sheet2如圖:


    新建工作表Sheet2
  3. 在EXCEL界面按ALT+F11打開VBA環(huán)境封孙,依次點擊菜單插入Insert迹冤、模塊Module,此時將插入一個新的模塊名為Module1虎忌,選中它泡徙,然后在右邊空白環(huán)境里粘貼下面代碼:

'A format converter for AD user information
'By Darwin Zuo (darwin.zuo@163.com)
'2019-09-30

Sub ADUserFormConvert()
    rowInSheet2 = 1
    rowInSheet1 = 0
    blankCounting = 0
    
    
    Sheets("Sheet2").Cells(1, 1) = "DistinguishedName"
    Sheets("Sheet2").Cells(1, 2) = "Enabled"
    Sheets("Sheet2").Cells(1, 3) = "GivenName"
    Sheets("Sheet2").Cells(1, 4) = "Name"
    Sheets("Sheet2").Cells(1, 5) = "ObjectClass"
    Sheets("Sheet2").Cells(1, 6) = "ObjectGUID"
    Sheets("Sheet2").Cells(1, 7) = "SamAccountName"
    Sheets("Sheet2").Cells(1, 8) = "SID"
    Sheets("Sheet2").Cells(1, 9) = "Surname"
    Sheets("Sheet2").Cells(1, 10) = "UserPrincipalName"
    
    
    Do While blankCounting < 5
        rowInSheet1 = rowInSheet1 + 1
        cv = Sheets("sheet1").Cells(rowInSheet1, 1).Value
        If Len(cv) > 0 Then
            blankCounting = 0
            hdr4 = Left(cv, 4)
            If hdr4 = "Dist" Then
                rowInSheet2 = rowInSheet2 + 1
                Sheets("sheet2").Cells(rowInSheet2, 1) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "Enab" Then
                Sheets("sheet2").Cells(rowInSheet2, 2) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "Give" Then
                Sheets("sheet2").Cells(rowInSheet2, 3) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "Name" Then
                Sheets("sheet2").Cells(rowInSheet2, 4) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "Obje" Then
                If Left(cv, 7) = "ObjectC" Then
                    Sheets("sheet2").Cells(rowInSheet2, 5) = Right(cv, Len(cv) - 20)
                Else
                    Sheets("sheet2").Cells(rowInSheet2, 6) = Right(cv, Len(cv) - 20)
                End If
            ElseIf hdr4 = "SamA" Then
                Sheets("sheet2").Cells(rowInSheet2, 7) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "SID " Then
                Sheets("sheet2").Cells(rowInSheet2, 8) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "Surn" Then
                Sheets("sheet2").Cells(rowInSheet2, 9) = Right(cv, Len(cv) - 20)
            ElseIf hdr4 = "User" Then
                Sheets("sheet2").Cells(rowInSheet2, 10) = Right(cv, Len(cv) - 20)
            End If
        Else
            blankCounting = blankCounting + 1
        End If
    Loop
    MsgBox "Done."
End Sub


粘貼好代碼的界面
  1. 按F5運行代碼,如果顯示下面的信息那么信息已經(jīng)轉(zhuǎn)換好了膜蠢,關(guān)掉VBA環(huán)境切換到Sheet2查看結(jié)果即可:


    運行成功會顯示這個窗口

    對于大多數(shù)情況下堪藐,操作到此為止了莉兰,表格已經(jīng)在Sheet2里整理好了。

注意:

  1. 有可能上面提到的最后一步會提示由于安全原因等等導(dǎo)致代碼不能執(zhí)行礁竞,那么不要緊糖荒,在VBA環(huán)境下點擊保存按鈕,在彈出的另存為對話框中選擇另存為類型為啟用宏的工作簿Excel Macro-Enabled Workbook模捂,然后保存捶朵。
  2. 打開剛剛保存的工作簿,此時系統(tǒng)可能有個安全提示狂男,點擊開啟內(nèi)容Enable Content如下圖:


    開啟宏才能使用剛才建立的代碼
  3. 按ALT+F8综看,在列表中選擇ADUserFormConvert然后點擊運行Run,那么一樣會得到第5步的結(jié)果岖食。


    選中宏然后點運行

方法三 最近結(jié)合上面兩個方法寫了個腳本红碑,算上面兩個方法結(jié)合的完美版

將下面的代碼復(fù)制到記事本里并另存為.ps1文件(PoweShell腳本文件)泽疆,然后運行它根據(jù)提示操作即可。
如果腳本沒有被修改的話滥朱,最終生成的結(jié)果保存在當(dāng)前用戶的臨時文件夾里滞谢,運行完畢后會自動打開該文件夾,找到名為userList.csv的文件即是最終生成的結(jié)果洽洁。

$saveto = $env:temp + "\userlist.csv"

cls
Write-Host "Easy tool to get the AD user information by darwin.zuo@163.com, 2022"
Write-Host "左東華(darwin.zuo@163.com)于2022年制作的用于取得活動目錄用戶的小工具"
Write-Host 
Write-Host "The simplified version data format can be gotten from any of the PC in AD; the script must be run on DC the AD for detailed version."
Write-Host "精簡版可以運行在活動目錄中的任何一臺電腦上;詳盡版數(shù)據(jù)的取得必須將本腳本在域控上運行。"

Write-Host "Please choose the data format/請選擇數(shù)據(jù)格式:"
Write-Host "1. Simplified version / 精簡版"
Write-Host "2. Detailed version / 詳盡版"
Write-Host "3. Quit / 退出"
Write-Host 
$ver = Read-Host "Choice / 選擇"

if ($ver -eq 1)
{
    $userList =  Get-WmiObject -Class Win32_UserAccount
    $userList
    $userList | select AccountType, Caption, Domain, SID, FullName, Name | Export-Csv -NoTypeInformation $saveto 
}
elseif ($ver -eq 2)
{
    $userList = Get-ADUser -Filter {ObjectClass -eq "user"} 
    $userList
    $userList | select DistinguishedName,Enabled,GivenName,Name,ObjectClass,ObjectGUID,SamAccountName,SID,Surname,UserPrincipalName | Export-Csv -NoTypeInformation $saveto
}
else
{
    Write-Host "Canceled / 已取消"
    Exit
}

Write-Host
Write-Host "The data already output to following file if there is no error occurred / 如果沒有錯誤的話澎剥,數(shù)據(jù)已經(jīng)輸出到如下文件:"
Write-Host
Write-Host $saveto
Write-Host
Write-Host 
Start $env:temp



達叔傻樂(darwin.zuo@163.com)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赶舆,隨后出現(xiàn)的幾起案子哑姚,更是在濱河造成了極大的恐慌,老刑警劉巖芜茵,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叙量,死亡現(xiàn)場離奇詭異,居然都是意外死亡九串,警方通過查閱死者的電腦和手機绞佩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猪钮,“玉大人品山,你說我怎么就攤上這事】镜停” “怎么了肘交?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扑馁。 經(jīng)常有香客問我涯呻,道長凉驻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任复罐,我火速辦了婚禮沿侈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘市栗。我一直安慰自己缀拭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布填帽。 她就那樣靜靜地躺著蛛淋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篡腌。 梳的紋絲不亂的頭發(fā)上褐荷,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音嘹悼,去河邊找鬼叛甫。 笑死,一個胖子當(dāng)著我的面吹牛杨伙,可吹牛的內(nèi)容都是我干的其监。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼限匣,長吁一口氣:“原來是場噩夢啊……” “哼抖苦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起米死,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锌历,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峦筒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究西,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年物喷,在試婚紗的時候發(fā)現(xiàn)自己被綠了卤材。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡脯丝,死狀恐怖商膊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宠进,我是刑警寧澤晕拆,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響实幕,放射性物質(zhì)發(fā)生泄漏吝镣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一昆庇、第九天 我趴在偏房一處隱蔽的房頂上張望末贾。 院中可真熱鬧,春花似錦整吆、人聲如沸拱撵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拴测。三九已至,卻和暖如春府蛇,著一層夾襖步出監(jiān)牢的瞬間集索,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工汇跨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留务荆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓穷遂,卻偏偏與公主長得像函匕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子塞颁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容