เครื่องมือส่งออกผู้ใช้ Active Directory: CSV/JSON
การส่งออกผู้ใช้ (หรือออบเจ็กต์อื่นๆ) จาก Active Directory นั้นมีประโยชน์มาก
PowerShell เป็นวิธีที่ง่ายที่สุดในการทำเช่นนี้ แต่มีตัวเลือกบางอย่างอยู่
ผู้ดูแลระบบส่วนใหญ่จะส่งออกข้อมูลเป็นรูปแบบ CSV โดยอัตโนมัติ แต่นี่ไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป
หากคุณต้องการใช้ข้อมูลที่ส่งออกโดยทางโปรแกรม มักจะดีกว่าถ้าส่งออกเป็น JSON
บทความนี้จะครอบคลุมทั้งสองตัวเลือก แต่แรก:
ข้อมูลใดบ้างที่จะส่งออกจาก Active Directory
คุณสามารถส่งออกผู้ใช้โดยใช้คำสั่ง Get-ADUser (ใช้งานได้ผ่าน RSAT)
หากคุณต้องการส่งออกวัตถุประเภทอื่น คุณสามารถใช้ Get-ADComputer, Get-ADGroup หรือ Get-ADObject ทั่วไป
นอกเหนือจากประเภทของออบเจ็กต์แล้ว คุณยังต้องตัดสินใจเกี่ยวกับขอบเขตของออบเจ็กต์และคุณลักษณะด้วย:
- OU ใดที่คุณจำกัดการค้นหาไว้
- คุณต้องการตัวกรองเพิ่มเติมอะไร
- คุณต้องการส่งออกแอตทริบิวต์/คุณสมบัติใด
OU ถูกกำหนดโดยพารามิเตอร์ SearchBase เช่น:
Get-ADUser -Filter * -SearchBase "OU=Alabama,OU=UnitedStates,OU=Users,OU=E365M,DC=Easy365Manager,DC=local"การกรองเพิ่มเติมทำได้ดีที่สุดโดยใช้ตัวกรอง LDAP ที่มีประสิทธิภาพมาก เช่น
Get-ADUser -LDAPFilter "(department=marketing)"ตามค่าเริ่มต้น Get-ADUser จะส่งกลับชุดคุณสมบัติผู้ใช้ที่จำกัดมากเท่านั้น
คุณสมบัติเพิ่มเติมสามารถกำหนดได้โดยใช้สวิตช์คุณสมบัติและ Select-Object CmdLet เช่น:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalNameสิ่งที่คุณต้องมีตอนนี้คือการรวมการกำหนดขอบเขต OU, ตัวกรอง LDAP และการเลือกคุณสมบัติ ถ้าอย่างนั้นคุณก็มีคำถามของคุณ
ถัดไป คุณต้องเลือกประเภทการส่งออกที่คุณต้องการ: CSV หรือ JSON
วิธีส่งออกผู้ใช้ AD เป็น CSV โดยใช้ PowerShell
รูปแบบนี้มีประโยชน์เป็นหลักเมื่อผู้บริโภคเชี่ยวชาญ Excel เป็นอย่างดี และต้องการนำเสนอข้อมูลต่อฝ่ายบริหาร
ตัวอย่างหนึ่งคือผู้จัดการโครงการที่ต้องการให้คุณแสดงภาพรวมของความคืบหน้าในการย้ายกล่องจดหมายที่เธอสามารถนำเสนอต่อ CIO ได้
ด้วยการให้ข้อมูลดิบในรูปแบบ CSV ผู้จัดการโครงการจึงสามารถใช้สูตร Excel เพื่อสรุปข้อมูลและสร้างแผนภูมิวงกลมที่สวยงามได้อย่างง่ายดาย
วิธีที่ง่ายที่สุดในการแยกคุณสมบัติผู้ใช้ที่เลือกออกเป็น CSV จะเป็นดังนี้:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalName | Export-Csv c:\tmp\ADUsers.csv -NoTypeInformationคุณควรเปิดไฟล์ .csv แบ่งข้อมูลออกเป็นคอลัมน์ ใช้ตัวกรอง และบันทึกเป็น .xlsx ก่อนที่จะส่งไปยังผู้จัดการโครงการ:
วิธีส่งออกผู้ใช้ AD ไปยัง JSON โดยใช้ PowerShell
หากคุณต้องการเข้าถึงข้อมูลที่ส่งออกโดยทางโปรแกรม การส่งออกข้อมูลเป็น JSON จะดีกว่ามาก
ด้วยการบันทึกข้อมูลลงใน JSON คุณสามารถนำเข้าข้อมูลอีกครั้งได้อย่างง่ายดายหากจำเป็น
ตัวอย่างหนึ่งคือการส่งออกคุณสมบัติผู้ใช้บางส่วนเพื่อสำรองข้อมูลก่อนทำการเปลี่ยนแปลงตามสคริปต์
วิธีที่ง่ายที่สุดในการแยกคุณสมบัติผู้ใช้ที่เลือกลงใน JSON จะเป็นดังนี้:
Get-ADUser -Filter * -Properties sAMAccountName,givenName,sn,userPrincipalName | Select-Object sAMAccountName,givenName,sn,userPrincipalName | ConvertTo-Json -Compress | Out-File "c:\tmp\ADUsers.json"
ข้อมูลที่ส่งออกจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้:
หากคุณต้องการดูข้อมูลอย่างรวดเร็ว (และสมมติว่าข้อมูลไม่เป็นความลับ) ให้คัดลอกข้อมูลดังกล่าวไปยังตัวแปลง JSON เป็นตารางออนไลน์:
ความสนุกที่แท้จริงกับข้อมูลที่ส่งออกด้วย JSON นั้นอยู่ที่การแปลงกลับเป็นออบเจ็กต์ที่สามารถเขียนสคริปต์ได้อย่างง่ายดาย!
ใช้ PowerShell CmdLet ต่อไปนี้เพื่อแปลงข้อมูลกลับเป็นคอลเลกชันผู้ใช้:
$Users = Get-Content "C:\tmp\ADUsers.json" | ConvertFrom-Jsonจากนั้นคุณสามารถใช้ตัวแปร $Users เพื่อนำเข้าข้อมูล ส่งออกชุดย่อยของข้อมูลเป็น CSV และสิ่งอื่นๆ ที่ไม่ใช่:
PS C:\> $Users | ? { $_.givenName -eq 'james' -and $_.sn -like 'm*' } | ft
sAMAccountName givenName sn userPrincipalName
-------------- --------- -- -----------------
james.miller James Miller james.miller@azure.skrubbeltrang.com
james.martinez James Martinez james.martinez@azure.skrubbeltrang.com
james.moore James Moore james.moore@azure.skrubbeltrang.com
james.martin James Martin james.martin@azure.skrubbeltrang.com
james.mitchell James Mitchell james.mitchell@azure.skrubbeltrang.com
james.morris James Morris james.morris@azure.skrubbeltrang.com
james.morales James Morales james.morales@azure.skrubbeltrang.com
james.murphy James Murphy james.murphy@azure.skrubbeltrang.com
james.morgan James Morgan james.morgan@azure.skrubbeltrang.com
james.mendoza James Mendoza james.mendoza@azure.skrubbeltrang.com
james.myers James Myers james.myers@azure.skrubbeltrang.comสรุป
ด้วยการวางแผนบางอย่าง คุณสามารถจัดเตรียมการส่งออกข้อมูล Active Directory ที่มีประสิทธิภาพได้อย่างรวดเร็ว
พิจารณาขอบเขตของการส่งออกในแง่ของ OU, การกรอง LDAP และคุณสมบัติ
โปรดทราบว่าข้อมูลที่ส่งออกจะถูกนำมาใช้สำหรับการรายงาน Excel หรือการประมวลผลทางโปรแกรมเพิ่มเติมหรือไม่



