ค้นหาเว็บไซต์

เครื่องมือส่งออกผู้ใช้ 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 หรือการประมวลผลทางโปรแกรมเพิ่มเติมหรือไม่

บทความที่เกี่ยวข้อง