การค้นหา Object โดยใช้คำสั่ง ds commandline
คำสั่ง DS ต่าง ๆ ที่เกี่ยวข้องเน้นช่วยเหลือในการทำงานได้รวดเร็วกว่า GUI (ในกรณีที่มี Object มาก ๆ การใช้ GUI จะช้าและบางครั้งเสียเวลารอ Load หน้าจอ refresh เป็นอย่างมาก) จากประสบการณ์ของผู้เขียนในการดูแล user กว่า 20000 คนใน Domain เดียวกัน
การใช้ Command ต่าง ๆ เหล่านี้มีประโยชน์มาก ๆ เลยครับ
dsquery: Displays objects matching search criteria
dsquery เป็นคำสั่งที่ใช้ค้นหา Object ใน Active Directory ครับ อย่างที่เกริ่นไว้ คือถ้า Object เราเยอะจริง ๆ ถ้ามัวแต่ไปเปิดที่ AD Users and Computers จะต้องรอนานมากกว่าจะ Refresh User ทั้งหมดมาให้ดูได้ ถ้าเราต้องการค้นหา User ให้ได้ตรงกับที่ต้องการ ก็ใช้ Dsquery สะดวกดีครับ (ดีกว่าไปไล่เปิดดูทีละ OU ในเครื่องมือ GUI Base)
ตัวอย่างจากคำสั่งด้านล่างคือผมต้องการค้นหา User ชื่อ Suttipan เพื่อนำไป Assign Drive Logon ผ่าน Network แต่ผมไม่ทราบว่า user นี้อยู่ใน OU ไหน จะให้เปิดดูทีละอันหรือใช้ Find ใน AD Users & Computers ก็จะเสียเวลาโหลดนานกว่า Command Line ง่าย ๆ ตัวอย่างด้านล่างนี้ครับ
ใช้ Dsquery เพื่อ List รายชื่อ User ทั้งหมดใน Active Directory
คำสั่ง = dsquery user
จะแสดงผลลัพท์ User ทั้งหมดใน Database แต่มีข้อจำกัดคือจะแสดงผลแค่ 100 รายการเท่านั้น หากมี User มากกว่านี้มันจะไม่แสดงผลนะครับ
ตัวอย่าง สำหรับการใช้งานโดยให้แสดงผลทั้งหมดคือ
Dsquery user –limit 20000 (คือให้ list User มาทั้งหมดเลยมากสุดไม่เกิน 20000 Users)
ส่วนใหญ่ผมจะให้ List แล้ว Export ออกมาเป็น File เพื่อนำไปใช้งานต่อนะครับจึงใช้รูปแบบเต็ม ๆ ประมาณนี้
Dsquery user –limit 20000 > user.txt & user.txt
ตัวอย่างคำสั่งนี้คือให้ list ออกมาเป็นไฟล์ .txt แล้วลองเปิดขึ้นมาดูก่อนครับ
ตัวอย่างการใช้งานเพื่อค้นหา User
dsquery user -name “*suttipan”
จะเห็นได้ว่ามันแสดงถึง User = Suttipan อยู่ภายใต้ OU = Management ครับ เพียงเท่านี้เราก็สามารถใช้ GUI ในการเข้าไป Assign Drive Logon ได้อย่างถูกต้องถึงตัว User แล้วครับ
(ถ้า User เป็นหลัก 20000 แบบผู้เขียนเคยทำงานมา จะขอยืนยันอีกครั้งครับว่าใช้ dsquery รวดเร็วกว่าเป็นอย่างมาก)
dsget: ใช้เพื่อดูข้อมูล Properties ของ Object
dsget เป็นการใช้ค้นหา ข้อมูลของ User นั้น ๆ ครับ เช่น ผมต้องการรู้ว่า User = Suttipan นั้นมีที่ทำงานระบุไว้ใน Active Directory ว่าที่ไหน (Office) ผมก็สามารถใช้รูปแบบคำสั่งต่อไปนี้ได้เลยครับ
dsget user cn=suttipan,ou=Management,dc=demo,dc=local –office
ตัวอย่าง ข้อมูลของ User ที่ค้นหาได้จาก dsget user /? ครับ
การใช้คำสั่งผสมระหว่าง Dsquery และ dsget
เราสามารถเชื่อมต่อคำสั่งโดยใช้เครื่องหมายไปป์ได้ครับ | (เครื่องหมาย = | )
ตัวอย่างนี้เป็นคำสั่งที่ใช้ค้นหา User ในระบบโดยที่รู้จักแต่ชื่อ และเราขี้เกียจพิมพ์คำสั่ง ในรูปแบบ DN ยาว ๆ ก็ใช้คำสั่งนี้ครับ
ตัวอย่าง ดูว่า user = Engineer02 ถูก Disable ไว้หรือเปล่า
รูปแบบคำสั่ง = dsget user –name engineer02 | dsget user –disabled