กำลังอัปโหลดรายชื่อผู้ใช้จากกลุ่มโฆษณา การใช้ Get-ADUser เพื่อรับข้อมูลต่างๆ เกี่ยวกับผู้ใช้โดเมน AD ขอโค้ดใต้สปอยล์ครับ

ในความคิดเห็นในบทความก่อนหน้านี้ เราจำเกี่ยวกับการบัญชีใน Excel แทน 1C ได้ มาดูกันว่าคุณรู้จัก Excel มากแค่ไหน วันนี้ผมจะแสดงวิธีรับข้อมูลจาก ไดเรกทอรีที่ใช้งานอยู่และทำงานร่วมกับพวกเขาโดยไม่ต้องใช้มาโครและ PowerShell - เฉพาะกับกลไก Office มาตรฐานเท่านั้น ตัวอย่างเช่น คุณสามารถรับการวิเคราะห์เกี่ยวกับการใช้ระบบปฏิบัติการในองค์กรของคุณได้อย่างง่ายดาย หากคุณยังไม่มี Microsoft SCOM หรือเพียงแค่อุ่นเครื่องและเลิกสนใจสคริปต์


แน่นอน คุณสามารถรับข้อมูลตามตัวอย่างด้านล่างนี้ได้อย่างแท้จริงด้วยหนึ่งบรรทัดใน PowerShell แต่ประการแรก PowerShell น่าเบื่อเกินไปและประการที่สอง Excel สามารถอัปเดตข้อมูลแบบไดนามิก - เอกสารผลลัพธ์สามารถเผยแพร่ทางออนไลน์และลืมเกี่ยวกับการอัปเดตได้

ในการทำงานกับข้อมูล ฉันจะใช้กลไก Power Query สำหรับ Office 2010 และ 2013 คุณจะต้องติดตั้งปลั๊กอินใน ไมโครซอฟต์ ออฟฟิศ 2016 โมดูลนี้มีอยู่แล้วภายใน น่าเสียดายที่รุ่นมาตรฐานยังไม่เพียงพอสำหรับเรา เราต้องการ Professional


กลไกนี้ได้รับการออกแบบเพื่อรับและประมวลผลข้อมูลจากแหล่งต่างๆ ตั้งแต่ ODBC และไฟล์ข้อความเก่าไปจนถึง Exchange, Oracle และ Facebook รายละเอียดเพิ่มเติมเกี่ยวกับกลไกและภาษาสคริปต์ในตัว "M" ได้เขียนไว้แล้วบนHabré แต่ฉันจะดูตัวอย่างการใช้งานสองสามตัวอย่าง พาวเวอร์คิวรีเพื่อดึงข้อมูลจาก Active Directory

อุ่นเครื่อง: มาดูกันว่าผู้ใช้ของเราเข้าสู่ระบบเมื่อใด

คำขอไปยังฐานข้อมูลโดเมนนั้นถูกสร้างขึ้นใน “ข้อมูล - คำขอใหม่― จากแหล่งอื่น ― จาก Active Directory”



ระบุแหล่งข้อมูล


คุณจะต้องเลือกชื่อโดเมนและระบุข้อมูลการเชื่อมต่อที่จำเป็น จากนั้นเลือกประเภทของออบเจ็กต์ ในตัวอย่างนี้ - ผู้ใช้- ทางด้านขวาในหน้าต่างแสดงตัวอย่าง แบบสอบถามกำลังทำงานอยู่ โดยแสดงตัวอย่างข้อมูล



เราเตรียมคำขอและชื่นชมตัวอย่าง


คุณควรเตรียมคำขอของคุณก่อนโดยคลิกปุ่ม "แก้ไข" และเลือก คอลัมน์ที่จำเป็น- โดยพื้นฐานแล้ว คอลัมน์เหล่านี้เป็นคลาส แต่ละคอลัมน์ประกอบด้วยชุดคุณลักษณะเฉพาะของวัตถุ Active Directory ยกเว้นคอลัมน์หลัก ชื่อที่แสดงซึ่งตัวมันเองเป็นคุณลักษณะ ฉันจะมุ่งเน้นไปที่ชั้นเรียน ผู้ใช้, บุคคล, สูงสุดและ ความปลอดภัยหลัก- ตอนนี้คุณต้องเลือก คุณสมบัติที่จำเป็นจากแต่ละคลาสโดยใช้ "ส่วนขยาย" - ไอคอนที่มีลูกศรสองอันที่ส่วนหัวของคอลัมน์:

  • ระดับ ผู้ใช้ขยายโดยการเลือก LastLogonTimestampและ userAccountControl;
  • วี บุคคลมาเลือกกัน หมายเลขโทรศัพท์;
  • วี สูงสุดเมื่อสร้างขึ้น;
  • และใน ความปลอดภัยหลักSamAccountName.


เราขยายคำขอ


ตอนนี้มาตั้งค่าตัวกรองกัน โดยเฉพาะอย่างยิ่ง เพื่อไม่ให้บัญชีถูกบล็อก คุณต้องมีแอตทริบิวต์ userAccountControl ที่มีค่า 512 หรือ 66048 ตัวกรองอาจแตกต่างกันในสภาพแวดล้อมของคุณ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับแอตทริบิวต์ได้ในเอกสารประกอบของ Microsoft



การใช้ตัวกรอง.


บางครั้ง Excel ตรวจพบรูปแบบข้อมูลอย่างไม่ถูกต้อง โดยเฉพาะค่าของแอตทริบิวต์ LastLogonTimestamp หากโชคร้ายเกิดขึ้นกับคุณอย่างกะทันหัน คุณสามารถตั้งค่ารูปแบบที่ถูกต้องได้ในแท็บ "แปลง"

ตอนนี้ควรลบคอลัมน์ userAccountControl - ไม่จำเป็นเลยในจอแสดงผล และคลิก “ดาวน์โหลดและปิด”


ผลลัพธ์ที่ได้คือจานที่ต้องการการตกแต่งเพียงเล็กน้อย ตัวอย่างเช่น เปลี่ยนชื่อคอลัมน์ให้เป็นสิ่งที่อ่านง่ายขึ้น และปรับแต่ง อัปเดตอัตโนมัติข้อมูล.


การอัปเดตอัตโนมัติเมื่อเปิดตารางหรือตามระยะหมดเวลาได้รับการกำหนดค่าในแท็บ "ข้อมูล" ใน "คุณสมบัติ"



การตั้งค่าการอัพเดตข้อมูล


หลังจากการตั้งค่าการอัปเดตเสร็จสิ้น คุณสามารถมอบตารางให้กับแผนกบุคคลหรือบริการรักษาความปลอดภัยได้อย่างปลอดภัย - แจ้งให้พวกเขาทราบว่าใครเข้าสู่ระบบและเมื่อใด


รหัสคำขอในภาษา “M” อยู่ใต้สปอยเลอร์

ให้ Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomAttributes", "mailRecipient", "distinguishedName")), #"องค์ประกอบที่ขยาย securityPrincipal" = Table.ExpandRecordColumn(#"คอลัมน์ที่ถูกลบ", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"องค์ประกอบที่ขยายด้านบน" = Table.ExpandRecordColumn(#"องค์ประกอบที่ขยาย securityPrincipal ", "top", ("whenCreated"), ("whenCreated")), #"บุคคลองค์ประกอบที่ขยาย" = Table.ExpandRecordColumn(#"องค์ประกอบที่ขยายด้านบน", "บุคคล", ("telephoneNumber"), ("telephoneNumber ")), #"ผู้ใช้องค์ประกอบที่ขยาย" = Table.ExpandRecordColumn(#"บุคคลองค์ประกอบที่ขยาย", "ผู้ใช้", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"แถว พร้อมตัวกรองที่ใช้" = Table.SelectRows(#"องค์ประกอบผู้ใช้ที่ขยาย" แต่ละ ( = 512 หรือ = 66048)), #"ประเภทที่เปลี่ยนแปลง" = Table.TransformColumnTypes(#"แถวที่ใช้ตัวกรอง",(("lastLogonTimestamp", พิมพ์ datetime))), #"Remoted columns1" = Table.RemoveColumns(#"Changed type",("userAccountControl")) ใน #"Remoted columns1"

เราสร้าง สมุดที่อยู่หรือจะทำอย่างไรเมื่อ พอร์ทัลองค์กรไม่เป็นมิตรกับ AD

อีกทางเลือกหนึ่ง ใช้ Excelร่วมกับ Active Directory - นี่คือการสร้างสมุดที่อยู่ตามข้อมูล AD เป็นที่ชัดเจนว่าสมุดที่อยู่จะอัปเดตเฉพาะในกรณีที่โดเมนเป็นระเบียบเท่านั้น


มาสร้างคำขอสำหรับวัตถุกัน ผู้ใช้, ขยายชั้นเรียน ผู้ใช้วี จดหมายและชั้นเรียน บุคคลวี หมายเลขโทรศัพท์- ลองลบคอลัมน์ทั้งหมดยกเว้น ชื่อที่โดดเด่น― โครงสร้างโดเมนซ้ำกับโครงสร้างขององค์กร ดังนั้นชื่อ หน่วยองค์กรตรงกับชื่อหน่วยงานต่างๆ ในทำนองเดียวกัน กลุ่มความปลอดภัยสามารถใช้เป็นพื้นฐานสำหรับชื่อแผนกได้


ตอนนี้จากบรรทัด CN=ชื่อผู้ใช้, OU=แผนกบัญชี, OU=แผนก, DC=โดเมน, DC=ruคุณต้องแยกชื่อแผนกออกโดยตรง วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการใช้ตัวคั่นบนแท็บการแปลง



การแยกข้อความ


เป็นตัวคั่นที่ฉันใช้ อู๋=และ ,อู๋=- โดยหลักการแล้ว จุลภาคก็เพียงพอแล้ว แต่ฉันก็เล่นอย่างปลอดภัย



ป้อนตัวคั่น


ขณะนี้การใช้ตัวกรองคุณสามารถตัดส่วนที่ไม่จำเป็นออกได้ อู๋เช่น ผู้ใช้ที่ถูกบล็อก และ บิวท์อินกำหนดค่าการเรียงลำดับและโหลดข้อมูลลงในตาราง



มุมมองของตารางสรุป

รายงานอย่างรวดเร็วเกี่ยวกับองค์ประกอบของเวิร์กสเตชัน โดยไม่ต้องแนะนำตัวแทนหรือการเตรียมการอื่นๆ

ตอนนี้เรามาลองสร้างตารางที่มีประโยชน์โดยการรับข้อมูลบนคอมพิวเตอร์ มารายงานระบบปฏิบัติการที่บริษัทใช้กัน: เราจะสร้างคำขอ แต่คราวนี้เราจะเลือกในเนวิเกเตอร์ คอมพิวเตอร์.



เราทำการร้องขอวัตถุคอมพิวเตอร์


ออกจากคลาสคอลัมน์กันเถอะ คอมพิวเตอร์และ สูงสุดและขยายความ:

  • ระดับ คอมพิวเตอร์ขยายโดยการเลือก CN, ระบบปฏิบัติการ, ระบบปฏิบัติการServicePackและ ระบบปฏิบัติการเวอร์ชัน;
  • ในชั้นเรียน สูงสุดมาเลือกกัน เมื่อสร้างขึ้น.


คำขอขั้นสูง


หากต้องการคุณสามารถรายงานเฉพาะระบบปฏิบัติการเซิร์ฟเวอร์เท่านั้น ตัวอย่างเช่น กรองตามแอตทริบิวต์ระบบปฏิบัติการหรือระบบปฏิบัติการเวอร์ชัน ฉันจะไม่ทำเช่นนี้ แต่ฉันจะแก้ไขการแสดงเวลาสร้าง - ฉันสนใจเฉพาะปีเท่านั้น ในการดำเนินการนี้ บนแท็บ "การแปลง" ให้เลือกคอลัมน์ที่เราต้องการ และเลือก "ปี" ในเมนู "วันที่"



เราแยกปีนับจากเวลาที่คอมพิวเตอร์เข้าสู่โดเมน


ตอนนี้สิ่งที่เหลืออยู่คือการลบคอลัมน์ชื่อที่แสดงโดยไม่จำเป็นและโหลดผลลัพธ์ ข้อมูลพร้อมแล้ว ตอนนี้คุณสามารถทำงานร่วมกับพวกเขาได้เหมือนกับโต๊ะปกติ ขั้นแรก เรามาสร้างตารางสาระสำคัญบนแท็บ "แทรก" - " ตารางเดือย- ยอมรับการเลือกแหล่งข้อมูลและกำหนดค่าฟิลด์



การตั้งค่าฟิลด์ตาราง Pivot


ตอนนี้สิ่งที่เหลืออยู่คือการปรับแต่งการออกแบบตามรสนิยมของคุณและชื่นชมผลลัพธ์:



ตารางสรุปเครื่องคอมพิวเตอร์ใน AD


หากต้องการคุณสามารถเพิ่มได้ กำหนดการสรุปบนแท็บแทรกด้วย เพิ่มใน "หมวดหมู่" (หรือใน "แถว" เพื่อลิ้มรส) ระบบปฏิบัติการไปยังข้อมูล ― CN- บนแท็บ "การออกแบบ" คุณสามารถเลือกประเภทของแผนภูมิที่คุณต้องการได้ ฉันชอบแผนภูมิวงกลมมากกว่า



แผนภูมิวงกลม


ตอนนี้เห็นได้อย่างชัดเจนว่าแม้จะมีการอัปเดตอย่างต่อเนื่อง แต่จำนวนเวิร์กสเตชันทั้งหมดที่ใช้ Windows XP และเซิร์ฟเวอร์ที่ใช้ Windows 2003 ก็ค่อนข้างมาก และมีบางอย่างที่ต้องต่อสู้เพื่อ


รหัสคำขออยู่ใต้สปอยเลอร์

ให้ Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], computer1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(computer1,( "user", "organizationalPerson", "person")), #"คอลัมน์อื่นๆ ที่ถูกลบ" = Table.SelectColumns(#"คอลัมน์ระยะไกล",("displayName", "computer", "top")), #"รายการที่ขยาย คอมพิวเตอร์" = Table.ExpandRecordColumn(#"คอลัมน์ระยะไกลอื่นๆ", "คอมพิวเตอร์", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " OperatingSystemVersion")), #"องค์ประกอบด้านบนแบบขยาย" = Table.ExpandRecordColumn(#"องค์ประกอบคอมพิวเตอร์แบบขยาย", "ด้านบน", ("เมื่อสร้าง"), ("เมื่อสร้าง")), #"ปีที่แยกออกมา" = Table.TransformColumns( #"องค์ประกอบที่ขยายด้านบน",(("whenCreated", Date.Year))), #"คอลัมน์ระยะไกล1" = Table.RemoveColumns(#"ปีที่แยกออกมา",("displayName")) ใน #"คอลัมน์ระยะไกล1"

เพิ่มแท็ก

ไม่มีความลับว่าตั้งแต่ PowerShell เวอร์ชันแรก Microsoft ได้พยายามทำให้เป็นเครื่องมือหลัก การดูแลระบบ Windows- และได้ผลในหลาย ๆ ด้าน! วันนี้เป็นต้นไป ตัวอย่างง่ายๆเราจะแสดงคุณลักษณะ PowerShell ที่คุณสามารถใช้เพื่อรับได้ ข้อมูลต่างๆเกี่ยวกับผู้ใช้ Active Directory และคุณลักษณะของพวกเขา

บันทึก- ก่อนหน้านี้ คุณต้องใช้ AD เพื่อรับข้อมูลเกี่ยวกับแอตทริบิวต์บัญชีผู้ใช้ AD เครื่องมือต่างๆ: คอนโซล ADUC (รวมถึง), ยูทิลิตี้ ฯลฯ การเลือกเครื่องมือมักจะขึ้นอยู่กับงานที่มีอยู่และความสามารถในการเขียนโปรแกรมของผู้ดูแลระบบ

PowerShell 2.0 เปิดตัวโมดูลพิเศษสำหรับการทำงานกับ Active Directory - (นำเสนอใน วินโดวส์เซิร์ฟเวอร์ 2008 R2) ซึ่ง cmdlets ช่วยให้คุณสามารถดำเนินการต่างๆ กับวัตถุไดเร็กทอรี AD ได้ เพื่อรับข้อมูลเกี่ยวกับผู้ใช้ โดเมนใช้งานอยู่ไดเรกทอรีและคุณสมบัติ cmdlet รับ-ADUser- คุณสามารถใช้ Get-ADUser cmdlet เพื่อรับค่าของแอตทริบิวต์ใดๆ ของบัญชีผู้ใช้ที่มีอยู่ใน AD นอกจากนี้ คุณยังสามารถระบุเกณฑ์การเลือกต่างๆ และสร้างรายชื่อผู้ใช้โดเมนและคุณลักษณะของผู้ใช้ได้

ในตัวอย่างนี้ เราจะแสดงวิธีใช้ PowerShell Get-ADUser cmdlet เพื่อดึงข้อมูลเกี่ยวกับเวลาที่เปลี่ยนรหัสผ่านของผู้ใช้ครั้งล่าสุดและหมดอายุเมื่อใด

เปิดหน้าต่าง Powershll ด้วยสิทธิ์ของผู้ดูแลระบบและนำเข้าโมดูล Active Directory ด้วยคำสั่ง:

นำเข้าโมดูล activedirectory

คำแนะนำ- ใน Windows Server 2012 และสูงกว่า คุณสามารถข้ามรายการนี้ได้เนื่องจาก โมดูล PowerShell Active Directory เชื่อมต่อตามค่าเริ่มต้น

ในระบบปฏิบัติการไคลเอนต์ (เช่น Windows 10) เพื่อให้คำสั่ง Get-AdUser ทำงานคุณจะต้องติดตั้ง RSAT เวอร์ชันที่เหมาะสมและเปิดใช้งานส่วนประกอบในแผงควบคุม โมดูลไดเรกทอรีที่ใช้งานอยู่ สำหรับวินโดวส์พาวเวอร์เชลล์(เครื่องมือการดูแลเซิร์ฟเวอร์ระยะไกล -> เครื่องมือการดูแลระบบบทบาท -> เครื่องมือ AD DS และ AD LDS -> เครื่องมือ AD DS)

รายการอาร์กิวเมนต์ Get-ADUser cmdlet ทั้งหมดสามารถรับได้ดังนี้:

ช่วยรับ ADUser

หากต้องการแสดงรายการบัญชีโดเมนทั้งหมด ให้รันคำสั่ง:

รับ ADUser - ตัวกรอง *

รูปแบบของรายการที่ส่งคืนไม่สะดวกในการใช้งานมีเพียงแอตทริบิวต์พื้นฐาน 10 รายการจากมากกว่า 120 รายการและคุณสมบัติของบัญชีผู้ใช้เท่านั้นที่แสดง (DN, SamAccountName, ชื่อ, UPN ฯลฯ ) นอกจากนี้เรายังเห็นว่ามี ไม่มีข้อมูลเกี่ยวกับเวลาที่เปลี่ยนรหัสผ่านครั้งล่าสุด

เพื่อถอนตัว เต็มไปด้วยข้อมูลเกี่ยวกับคุณลักษณะที่มีอยู่ทั้งหมดของผู้ใช้ tuser ให้รันคำสั่ง:

รับ ADUser -identity tuser -properties *

ดังนั้นเราจึงเห็น รายการทั้งหมดคุณลักษณะผู้ใช้ AD และค่าที่เกี่ยวข้องกับบัญชีผู้ใช้ ต่อไป เราจะไปที่การจัดรูปแบบผลลัพธ์ของ Get-ADUser cmdlet เพื่อให้ฟิลด์ที่เราต้องการปรากฏขึ้น เราสนใจคุณสมบัติ:

  • รหัสผ่านหมดอายุ
  • รหัสผ่าน LastSet
  • รหัสผ่านไม่มีวันหมดอายุ

มารันคำสั่งกัน:

รับ ADUser tuser - คุณสมบัติ PasswordExpired, PasswordLastSet, PasswordNeverExpires

ขณะนี้ข้อมูลผู้ใช้ประกอบด้วยข้อมูลเกี่ยวกับวันที่เปลี่ยนรหัสผ่านและเวลาที่รหัสผ่านจะหมดอายุ มานำเสนอข้อมูลในรูปแบบตารางที่สะดวกยิ่งขึ้น:

รับ ADUser -filter * - คุณสมบัติรหัสผ่านหมดอายุ, PasswordLastSet, รหัสผ่านNeverExpires | ft ชื่อ, รหัสผ่านหมดอายุ, รหัสผ่านล่าสุด, รหัสผ่านไม่มีวันหมดอายุ

หากต้องการแสดงข้อมูลผู้ใช้จาก OU เฉพาะ ให้ใช้พารามิเตอร์ ค้นหาฐาน:

รับ ADUser -SearchBase 'OU = มอสโก, DC = winitpro, DC = loc' - ตัวกรอง * - คุณสมบัติ PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft ชื่อ, รหัสผ่านหมดอายุ, รหัสผ่านล่าสุด, รหัสผ่านไม่มีวันหมดอายุ

ผลลัพธ์ของคำสั่งสามารถส่งออกไปยังไฟล์ข้อความ:

รับ ADUser -filter * - คุณสมบัติรหัสผ่านหมดอายุ, PasswordLastSet, รหัสผ่านNeverExpires | ft ชื่อ, PasswordExpired, PasswordLastSet, รหัสผ่านNeverExpires > C:\temp\users.txt

หรือในรูปแบบ CSV ซึ่งจะส่งออกไปยัง Excel ได้อย่างสะดวกในอนาคต (ใช้เพิ่มเติม เรียงลำดับวัตถุมาจัดเรียงตารางตามคอลัมน์ PasswordLastSet และเพิ่มเงื่อนไขด้วย ที่ไหน– ชื่อผู้ใช้จะต้องมีสตริง “Dmitry”):

รับ ADUser -filter * - คุณสมบัติรหัสผ่านหมดอายุ, PasswordLastSet, รหัสผ่านNeverExpires | โดยที่ ($_.name –like “*Dmitry*”) | เรียงลำดับวัตถุ PasswordLastSet | ชื่อวัตถุที่เลือก, PasswordExpired, PasswordLastSet, PasswordNeverExpires | ส่งออก-csv -path c:\temp\user-password-expires-2015.csv

ดังนั้นคุณจึงสามารถสร้างตารางที่มีคุณสมบัติที่จำเป็นได้ ผู้ใช้ที่ใช้งานอยู่ไดเรกทอรี

หากต้องการรับรายการบัญชีผู้ใช้ AD ตามคุณลักษณะเฉพาะ ให้ใช้พารามิเตอร์ –Filter เป็นอาร์กิวเมนต์ของพารามิเตอร์นี้ คุณสามารถระบุค่าของแอตทริบิวต์ผู้ใช้ Active Directory บางอย่างได้ ซึ่งจะทำให้ Get-ADUser cmdlet นำไปใช้กับผู้ใช้ที่ตรงกับเกณฑ์ตัวกรอง

ผลลัพธ์ของผู้ใช้ AD ที่ชื่อขึ้นต้นด้วย Roman:

Get-ADUser -filter (ชื่อเหมือน "Roman*")

รับ-ADUser -Filter (SamAccountName -like "*") | วัด-วัตถุ

รายการบัญชีที่ใช้งาน (ไม่ถูกบล็อก) ทั้งหมดใน AD:

รับ-ADUser -Filter (เปิดใช้งาน -eq "True") | เลือก-วัตถุ SamAccountName,ชื่อ,นามสกุล,GivenName | รูปแบบตาราง

รายชื่อบัญชีที่รหัสผ่านหมดอายุ:

รับ-ADUser -filter (เปิดใช้งาน -eq $True) -รหัสผ่านคุณสมบัติหมดอายุ | โดยที่($_.รหัสผ่านหมดอายุ)

รายชื่อบัญชีที่ใช้งานพร้อมที่อยู่อีเมล:

Get-ADUser -Filter ((mail -ne "null") -และ (Enabled -eq "true") -Properties Surname,GivenName,mail | เลือก-ชื่อวัตถุ,นามสกุล,GivenName,mail | รูปแบบตาราง

งาน: สำหรับรายการบัญชีที่จัดเก็บไว้ ไฟล์ข้อความ(หนึ่งบัญชีต่อบรรทัด) คุณต้องได้รับหมายเลขโทรศัพท์ของผู้ใช้ใน AD และอัปโหลดข้อมูลไปยังไฟล์ข้อความ csv (สามารถนำเข้าสู่ Esxel ได้อย่างง่ายดาย)

นำเข้า-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identity $_.user -Properties Name, TelephoneNumber | Select Name, TelephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

ตัวอย่างต่อไปนี้ช่วยให้คุณสามารถอัพโหลดสมุดที่อยู่ของบริษัทได้ รูปแบบ CSVไฟล์ที่สามารถนำเข้าสู่ Outlook หรือ Mozilla Thunderbird ได้ในภายหลัง:

Get-ADUser -Filter ((mail -ne "null") -และ (Enabled -eq "true") -Properties Surname,GivenName,mail | เลือก-ชื่อวัตถุ,นามสกุล,GivenName,mail | ส่งออก-Csv -NoTypeInformation -เข้ารหัส utf8 -ตัวคั่น "," $env:temp\mail_list.csv

ผู้ใช้ที่ไม่ได้เปลี่ยนรหัสผ่านในช่วง 90 วันที่ผ่านมา:

$90_Days = (รับ-วันที่).adddays(-90) รับ-ADUser -filter ((รหัสผ่านlastset -le $90_days))

$user = Get-ADUser winadmin - คุณสมบัติภาพขนาดย่อ $ user.thumbnailPhoto | ตั้งค่าเนื้อหา winadmin.jpg - เข้ารหัสไบต์

รายชื่อกลุ่มที่เขาอยู่ บัญชีผู้ใช้

รับ AdUser winadmin - คุณสมบัติสมาชิกของ | เลือก memberof -expandproperty memberof

วันนี้เราจะลองอัพโหลดรายชื่อผู้ใช้ทั้งหมดไปที่ แยกไฟล์จาก Active Directory ผู้ช่วยหลักของเราในเรื่องนี้คือ PowerShell ประเด็นก็คือ Microsoft วางแผนไว้แต่แรก คอนโซลคำสั่ง PowerShell เป็นเครื่องมือหลักสำหรับการจัดการเซิร์ฟเวอร์ ส่วนประกอบของวินโดวส์- และวันนี้ เมื่อเรามีเวอร์ชัน 2.0 อยู่แล้ว ก็เป็นเช่นนั้น

แม้แต่ในอดีตที่ผ่านมา เพื่อที่จะโต้ตอบกับ AD ผู้ดูแลระบบจำเป็นต้องมียูทิลิตี้ dsquery หรือสคริปต์หรือยูทิลิตี้ประเภทต่างๆ เริ่มตั้งแต่วันนี้เป็นต้นไป เวอร์ชันของ Windows Server 2008 R2 เราสามารถทำงานร่วมกับ AD ผ่าน PowerShell ได้ ด้วยการถือกำเนิดของ PowerShell 2.0 โมดูลพิเศษจะถูกนำมาใช้เพื่อโต้ตอบกับ Active Directory โมดูล Active Directory สำหรับ วินโดว์ PowerShell ซึ่งมีรายการ cmdlets ที่จำเป็น สำหรับงานของเราเราจะใช้คำสั่ง รับ-ADUser.

ดังนั้นขึ้นอยู่กับว่าอันไหนอยู่ภายใต้การควบคุม ระบบปฏิบัติการเราจะเปิดตัว คอนโซล PowerShellเราจะต้องดำเนินการ “ขั้นตอนการเตรียมการ”.

1) ถ้าเราทำงานภายใต้ Windows Server จนถึงเวอร์ชัน 2012จากนั้นเราจำเป็นต้องรันคำสั่ง:

  • นำเข้าโมดูล activedirectory – คำสั่งนำเข้าโมดูลเข้าสู่ AD

สำหรับระบบปฏิบัติการเวอร์ชันตั้งแต่ปี 2012 ขึ้นไป โมดูลนี้จะเปิดใช้งานอยู่แล้วตามค่าเริ่มต้น

2) หากเราทำงานจากใต้ใดๆ ไคลเอนต์ Windowsจากนั้นจะต้องติดตั้งแพ็คเกจลงไป การดูแลระบบระยะไกล RSAT ที่ติดตั้ง Active Directory Module สำหรับคอมโพเนนต์ Windows PowerShell

เป็นที่น่าสังเกตว่า Get-ADUser cmdlet แนะนำให้ดำเนินการเมื่อจำนวนข้อมูลที่อัปโหลดมีผู้ใช้สูงสุด 1,000 ราย

การส่งออกผู้ใช้ AD โดยใช้ PowerShell ไปยังไฟล์แยกต่างหาก

ขั้นแรก เรียกวิธีใช้สำหรับคำสั่ง Get-ADUser ผลลัพธ์ก็คือคุณจะได้ทุกอย่าง คำสั่งที่จำเป็นเพื่อการบริหารต่อไป

  • ช่วยรับ ADUser – คำสั่งให้เรียกความช่วยเหลือ

เพื่อเข้าไปทางหน้าต่าง รายการ PowerShellผู้ใช้ทั้งหมดที่มีคุณสมบัติทั้งหมด คุณต้องรันคำสั่งต่อไปนี้:

  • รับ ADUser - ตัวกรอง * – ส่งออกรายชื่อผู้ใช้ AD

การอัปโหลดนี้ไม่ได้ให้ข้อมูลทั้งหมดและไม่ตรงกับข้อมูลที่จำเป็นทั้งหมดในหน้าต่าง ดังนั้น ลองจำกัดการค้นหาและแสดงคุณสมบัติให้แคบลง ผู้ใช้เฉพาะด้วยชื่อ user1:

  • รับ ADUser - ข้อมูลประจำตัวผู้ใช้ 1 - คุณสมบัติ * – ส่งออกคุณสมบัติของผู้ใช้เฉพาะ

ตอนนี้เรามาลองส่งออกรายชื่อผู้ใช้ทั้งหมดที่มีคุณสมบัติของตนไปยังภายนอก txt หรือ csvไฟล์:

  • รับ ADUser -filter * -properties * | ส่งออก csv -path c:\users.csv -เข้ารหัส Unicode – ส่งออกผู้ใช้ไปยังไฟล์แยกต่างหาก

ฉันอยากจะใส่ใจเป็นพิเศษกับกุญแจ - การเข้ารหัส Unicode- ทำหน้าที่เพื่อให้แน่ใจว่าตัวอักษรซีริลลิกรัสเซียหลังจากส่งออกจาก AD สามารถแสดงได้อย่างถูกต้องในไฟล์ที่อัปโหลด ตัวอย่างเช่นผ่านทาง ไมโครซอฟต์ เอ็กเซลเราจะเห็น เครื่องหมายคำถามแทนตัวอักษรรัสเซีย

เมื่อดูไฟล์ ข้อมูลจะถูกส่งออกเป็นบรรทัดเดียว ดังนั้นจึงไม่สามารถอ่านได้ เพื่อเปลี่ยนแปลงสิ่งนี้ เราจำเป็นต้องทำสิ่งต่อไปนี้: