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

ใช้เพื่อสร้าง แก้ไข และลบอ็อบเจ็กต์ไดเร็กทอรี ผู้ใช้ยังสามารถใช้คำสั่ง ldifdeเพื่อขยายสคีมา ส่งออกข้อมูลผู้ใช้และกลุ่ม Active Directory ไปยังแอปพลิเคชันหรือบริการอื่นๆ และเติมบริการ ADAM (โหมดแอปพลิเคชัน Active Directory) ด้วยข้อมูลจากบริการไดเรกทอรีอื่นๆ

ไวยากรณ์

ldifde [-ฉัน] [-ฉ ชื่อไฟล์] [-ส เซิร์ฟเวอร์_ชื่อ] [-ค บรรทัดที่ 1 บรรทัดที่ 2] [-v] [-เจ เส้นทาง] [-t พอร์ต_หมายเลข] [-d DN_ฐาน] [-ร ตัวกรอง_LDAP] [-พี ภูมิภาค] [-ล LDAP_attribute_list] [-o LDAP_attribute_list] [-ก] [-ม] [-n] [-เค] [-ก ] [-ข ] [-? ]

ตัวเลือก

-ฉัน ระบุโหมดการนำเข้า หากไม่ได้กำหนดพารามิเตอร์ โหมดการส่งออกจะถูกใช้ตามค่าเริ่มต้น -ฉชื่อไฟล์ ระบุชื่อของไฟล์นำเข้าหรือส่งออก -สเซิร์ฟเวอร์_ชื่อ ระบุคอมพิวเตอร์ที่ควรดำเนินการนำเข้าหรือส่งออก โปรแกรมเริ่มต้น ldifdeจะถูกดำเนินการบนคอมพิวเตอร์ที่ ldifdeติดตั้งแล้ว -คบรรทัดที่ 1 บรรทัดที่ 2 แทนที่เหตุการณ์ทั้งหมด เส้น1เนื้อหา เส้น2- โดยทั่วไปจะใช้เมื่อคุณนำเข้าข้อมูลจากโดเมนหนึ่งไปยังอีกโดเมนหนึ่ง และจำเป็นต้องเปลี่ยนชื่อที่แตกต่างของโดเมนที่ทำการส่งออก ( บรรทัดที่ 1) การนำเข้าชื่อโดเมน ( บรรทัดที่ 2). -v เปิดใช้งานโหมดการบันทึกแบบละเอียด -เจเส้นทาง ระบุตำแหน่งของไฟล์บันทึก ค่าเริ่มต้นคือเส้นทางปัจจุบัน -tพอร์ต_หมายเลข ระบุหมายเลขพอร์ต Lightweight Directory Access Protocol (LDAP) พอร์ต LDAP เริ่มต้นคือ 389 พอร์ตแค็ตตาล็อกส่วนกลางคือ 3268 -dDN_ฐาน ระบุชื่อที่แตกต่างของฐานการค้นหาสำหรับการส่งออกข้อมูล -รตัวกรอง LDAP สร้างตัวกรองการค้นหา LDAP สำหรับการส่งออกข้อมูล ตัวอย่างเช่น ตัวกรองต่อไปนี้จะส่งออกผู้ใช้ทั้งหมดที่มีชื่อกลางเฉพาะ: csvde -r (และ (objectClass=ผู้ใช้)(sn=นามสกุล)) -พีภูมิภาค ระบุพื้นที่การค้นหา พารามิเตอร์ขอบเขตการค้นหาคือ ฐาน, หนึ่งระดับและ ต้นไม้ย่อย. -ลLDAP_attribute_list ระบุรายการแอตทริบิวต์ที่ส่งคืนในผลลัพธ์ของการร้องขอการส่งออก หากละเว้นพารามิเตอร์นี้ แอ็ตทริบิวต์ทั้งหมดจะถูกส่งกลับ -oLDAP_attribute_list ระบุรายการแอ็ตทริบิวต์ที่จะละเว้นจากผลลัพธ์การร้องขอเอ็กซ์พอร์ต โดยทั่วไปตัวเลือกนี้จะใช้เมื่อส่งออกออบเจ็กต์จาก Active Directory แล้วนำเข้าไปยังไดเร็กทอรีอื่นที่เข้ากันได้กับ LDAP หากแค็ตตาล็อกอื่นไม่รองรับแอตทริบิวต์ใดๆ ก็สามารถแยกออกจากชุดผลลัพธ์ได้โดยใช้ตัวเลือกนี้ -ก กำจัดการค้นหาหน้า -ม ละเว้นแอตทริบิวต์ที่ไม่สามารถเขียนได้ เช่น ObjectGUIDและ objectSID. -n ละเว้นการส่งออกค่าไบนารี -เค ละเว้นข้อผิดพลาดระหว่างการดำเนินการนำเข้าและดำเนินการประมวลผลต่อไป ต่อไปนี้เป็นรายการข้อผิดพลาดที่ถูกละเว้นทั้งหมด:

  • วัตถุนั้นเป็นสมาชิกของกลุ่มอยู่แล้ว
  • การละเมิดคลาสอ็อบเจ็กต์ (หมายความว่าไม่มีคลาสอ็อบเจ็กต์ที่ระบุ) หากออบเจ็กต์ที่นำเข้าไม่มีคุณลักษณะอื่น ๆ
  • วัตถุมีอยู่แล้ว
  • การละเมิดข้อ จำกัด
  • คุณลักษณะหรือค่ามีอยู่แล้ว
  • ไม่มีวัตถุดังกล่าวอยู่
-กแตกต่าง_name_password ระบุการดำเนินการของคำสั่งโดยใช้ที่ระบุ แตกต่าง_name_user_nameและ รหัสผ่าน -ข. -ขชื่อผู้ใช้ รหัสผ่านโดเมน ระบุคำสั่งที่จะดำเนินการโดยใช้ที่ระบุ ชื่อผู้ใช้ โดเมน และรหัสผ่าน- ตามค่าเริ่มต้น คำสั่งจะถูกดำเนินการโดยใช้ข้อมูลประจำตัวของผู้ใช้ที่ล็อกอินเข้าสู่เครือข่ายในปัจจุบัน ไม่สามารถใช้กับพารามิเตอร์ได้ -ก. -? แสดงเมนูคำสั่ง

หมายเหตุ

  • พร้อมพารามิเตอร์ -คคุณสามารถใช้ค่าคงที่ได้ #schemaบริบทการตั้งชื่อและ #configurationการตั้งชื่อบริบทแทนชื่อที่แตกต่างของพาร์ติชันไดเร็กทอรี schema และพาร์ติชันไดเร็กทอรีการกำหนดค่า
  • เมื่อสร้างไฟล์นำเข้าสำหรับคำสั่ง ldifdeให้ใช้ค่า เปลี่ยนประเภทเพื่อกำหนดประเภทของการเปลี่ยนแปลงที่มีอยู่ในไฟล์นำเข้า ค่านิยม เปลี่ยนประเภทระบุไว้ในตารางด้านล่าง

ด้านล่างนี้คือตัวอย่างไฟล์นำเข้า LDAP ในรูปแบบ LDIF ที่ใช้ค่าดังกล่าว เพิ่ม:
DN: ซีเอ็น=เลือกแล้ว_ผู้ใช้,ดีซี=โดเมน_เนม
ประเภทการเปลี่ยนแปลง: เพิ่ม
ซีเอ็น: เลือกแล้ว_ผู้ใช้
คำอธิบาย:file_description
วัตถุคลาส: ผู้ใช้
วัตถุคลาส: เลือกแล้ว_ผู้ใช้

ตัวอย่าง

หากต้องการแยกเฉพาะชื่อจำเพาะ ชื่อสามัญ ชื่อ นามสกุล และหมายเลขโทรศัพท์ของอ็อบเจ็กต์ที่ส่งคืน ให้ป้อน:
-ล โดดเด่น_ชื่อ, ซีเอ็น ชื่อ, เอส.เอ็น. โทรศัพท์
หากต้องการยกเว้น globally Unique identifier (GUID) สำหรับอ็อบเจ็กต์ ให้ป้อน:
-o เมื่อ_สร้าง, เมื่อ_เปลี่ยนแปลง, object_GUID

สคริปต์สำหรับการยกเลิกการโหลดผู้ใช้ทั้งหมดจาก MS Active Directory (ITGC)

อีวาน พิสคูนอฟ

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

1. อัปโหลดด่วนโดยใช้สคริปต์ PowerShell

ด้านล่างนี้คือสคริปต์ PowerShell ซึ่งเป็นหนึ่งในวิธีที่ง่ายและรวดเร็วที่สุดในการรับรายชื่อผู้ใช้โดเมน AD ทั้งหมดในรูปแบบ CSV ซึ่งสามารถเปิดได้อย่างง่ายดายใน Excel

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # จำนวนบัญชี $users.Count $users | ForEach-Object ( $user = $_.Properties New-Object PsObject -Property @( ตำแหน่ง = $user.description Department = $user.department เข้าสู่ระบบ = $user.userprincipalname โทรศัพท์ = $user.telephonenumber Room = $user.physicaldeliveryofficename เต็ม ชื่อ = $user.cn ) ) | ส่งออก-Csv -NoClobber -เข้ารหัส utf8 -Path C: list_domain_users.csv

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

หลังจากขนถ่ายแล้วหากเปิดทันที list_domain_users.csv จะดูอ่านไม่ออก แต่การใช้มาตรฐานหมายความว่าเราสามารถนำมาเป็นรูปแบบที่เราต้องการได้อย่างง่ายดาย เปิดใน Excel list_domain_users.csv เลือกคอลัมน์แรก จากนั้นไปที่แท็บ "ข้อมูล" แล้วคลิก "ข้อความตามคอลัมน์" เลือก "คั่น" และคลิก "ถัดไป" พร้อม!

!จำเป็นต้องทราบว่าสคริปต์นี้จะไม่แสดงผู้ใช้มากกว่า 1,000 ราย ค่อนข้างเหมาะสำหรับบริษัทขนาดเล็ก แต่สำหรับผู้ที่มีผู้ใช้จำนวนมากในโดเมนของตน ควรใช้วิธีการที่อธิบายไว้ด้านล่าง

2. PowerShell cmdlet ขั้นสูงสำหรับการอัปโหลดผู้ใช้ Active Directory

เครื่องมือ Active Directory Module สำหรับ Windows PowerShell (เปิดตัวใน Windows Server 2008 R2 และสูงกว่า) ช่วยให้คุณสร้าง cmdlets ที่ดำเนินการจัดการต่างๆ กับวัตถุไดเรกทอรี AD cmdlet ใช้เพื่อรับข้อมูลเกี่ยวกับผู้ใช้และคุณสมบัติของพวกเขา รับ-ADUser.

เริ่มต้นด้วย เปิดหน้าต่าง Powershell ด้วยสิทธิ์ของผู้ดูแลระบบและนำเข้าโมดูล Active Directory เพื่อดำเนินการต่อไป:
นำเข้าโมดูล activedirectory

ถึง แสดงรายการบัญชีโดเมนทั้งหมด และมารันคำสั่งกัน:

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

ถึง แสดงข้อมูลที่สมบูรณ์เกี่ยวกับคุณลักษณะที่มีอยู่ทั้งหมด ผู้ใช้ tuser ให้รันคำสั่ง

รับ ADUser -identity tuser -properties *


เช่น เรามีความสนใจในข้อมูลเกี่ยวกับ วันที่เปลี่ยนรหัสผ่านและเวลาที่รหัสผ่านหมดอายุ - ผลลัพธ์ของคำสั่งสามารถส่งออกไปยังไฟล์ข้อความ:

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

หรือทันที อัปโหลดเป็น CSV ซึ่งในอนาคตจะสะดวกในการส่งออกไปยัง Excel (นอกจากนี้โดยใช้ sort-object เราจะเรียงลำดับตารางตามคอลัมน์ PasswordLastSet และยังเพิ่มเงื่อนไขโดยที่ - ชื่อผู้ใช้ต้องมีสตริง "Dmitry")

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

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

  1. รีเซ็ตรหัสผ่านผู้ใช้
  2. เปิดใช้งานและปิดใช้งานบัญชี
  3. ปลดล็อคบัญชีผู้ใช้
  4. ลบบัญชี
  5. ค้นหากลุ่มว่าง
  6. เพิ่มผู้ใช้ในกลุ่ม
  7. รายชื่อสมาชิกกลุ่ม
  8. ค้นหาบัญชีคอมพิวเตอร์ที่ล้าสมัย
  9. ปิดการใช้งานบัญชีคอมพิวเตอร์
  10. ค้นหาคอมพิวเตอร์ตามประเภท

นอกจากนี้ผู้เขียนดูแลบล็อก (โดยใช้ PowerShell แน่นอน) เราขอแนะนำให้ดู - jdhitsolutions.com/blog และคุณสามารถรับข้อมูลล่าสุดได้จาก Twitter ของเขา twitter.com/jeffhicks.
ด้านล่างนี้คือการแปลบทความ “งาน Active Directory 10 อันดับแรกที่แก้ไขด้วย PowerShell”

การจัดการ Active Directory (AD) โดยใช้ Windows PowerShell นั้นง่ายกว่าที่คุณคิด และฉันอยากจะพิสูจน์ให้คุณเห็น คุณสามารถใช้สคริปต์ด้านล่างและใช้เพื่อแก้ไขงานการจัดการ AD หลายอย่าง

ความต้องการ

หากต้องการใช้ PowerShell จัดการ AD คุณต้องปฏิบัติตามข้อกำหนดหลายประการ ฉันจะสาธิตวิธีการทำงานของ AD cmdlets โดยใช้คอมพิวเตอร์ Windows 7 เป็นตัวอย่าง
หากต้องการใช้ cmdlets คุณต้องมีตัวควบคุมโดเมน Windows Server 2008 R2 หรือคุณสามารถดาวน์โหลดและติดตั้งบริการ Active Directory Management Gateway บน DC รุ่นเก่าได้ โปรดอ่านเอกสารอย่างละเอียดก่อนการติดตั้ง จำเป็นต้องรีบูทซีดี
บนฝั่งไคลเอ็นต์ ให้ดาวน์โหลดและติดตั้ง (RSAT) สำหรับ Windows 7 หรือ Windows 8 บน Windows 7 คุณจะต้องเปิดใน แผงควบคุมบท โปรแกรมและเลือก เปิดหรือปิดคุณสมบัติ Windows- หา เครื่องมือการดูแลระบบเซิร์ฟเวอร์ระยะไกลและขยายส่วนออกไป เครื่องมือการบริหารบทบาท- เลือกรายการที่เหมาะสมสำหรับเครื่องมือ AD DS และ AD LDS โดยเฉพาะอย่างยิ่งโปรดทราบว่าต้องเลือกรายการนั้น โมดูล Active Directory สำหรับ Windows PowerShellดังแสดงในรูปที่ 1 (ใน Windows 8 เครื่องมือทั้งหมดจะถูกเลือกตามค่าเริ่มต้น) ตอนนี้เราพร้อมที่จะทำงานแล้ว

รูปที่ 1 การเปิดใช้งานเครื่องมือ AD DS และ AD LDS

ฉันเข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์ผู้ดูแลระบบโดเมน cmdlet ส่วนใหญ่ที่ฉันจะแสดงจะช่วยให้คุณสามารถระบุข้อมูลรับรองอื่นได้ ไม่ว่าในกรณีใด ฉันแนะนำให้อ่านความช่วยเหลือ ( รับความช่วยเหลือ) และตัวอย่างที่ผมจะสาธิตด้านล่าง
เริ่มเซสชัน PowerShell และนำเข้าโมดูล:

PS C:\> นำเข้าโมดูล ActiveDirectory

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

PS C:\> รับคำสั่ง - โมดูล ActiveDirectory

ข้อดีของคำสั่งเหล่านี้ก็คือ ถ้าฉันสามารถใช้คำสั่งกับวัตถุ AD หนึ่งคำสั่งได้ ก็สามารถใช้คำสั่งนั้นกับ 10, 100 และแม้กระทั่ง 1,000 มาดูกันว่า cmdlet เหล่านี้บางส่วนทำงานอย่างไร

ภารกิจที่ 1: รีเซ็ตรหัสผ่านผู้ใช้

เริ่มจากงานทั่วไปกันก่อน: การรีเซ็ตรหัสผ่านของผู้ใช้ คุณสามารถทำสิ่งนี้ได้อย่างง่ายดายและง่ายดายโดยใช้ cmdlet ตั้ง ADAccountPassword- ส่วนที่ยุ่งยากคือรหัสผ่านใหม่จะต้องมีคุณสมบัติเป็นสตริงที่มีการป้องกัน: ชิ้นส่วนของข้อความที่ถูกเข้ารหัสและจัดเก็บไว้ในหน่วยความจำตลอดระยะเวลาของเซสชัน PowerShell ขั้นแรก เรามาสร้างตัวแปรด้วยรหัสผ่านใหม่:
PS C:\> $new=Read-Host "ป้อนรหัสผ่านใหม่" -AsSecureString

จากนั้นให้ป้อนรหัสผ่านใหม่:

ตอนนี้เราสามารถแยกบัญชีได้ (โดยใช้ แซมชื่อบัญชี– ตัวเลือกที่ดีที่สุด) และตั้งรหัสผ่านใหม่ นี่คือตัวอย่างสำหรับผู้ใช้ Jack Frost:

ป.ล.:\> ตั้ง-ADAccountPassword jfrost -รหัสผ่านใหม่ $ใหม่

ขออภัย มีข้อผิดพลาดกับ cmdlet นี้: -พาสทรู, -อะไรจะเกิดขึ้น, และ -ยืนยันไม่ทำงาน หากคุณต้องการทางลัด ให้ลองทำดังนี้:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

ด้วยเหตุนี้ ฉันจึงต้องการให้แจ็คเปลี่ยนรหัสผ่านในครั้งถัดไปที่เขาเข้าสู่ระบบ ดังนั้นฉันจึงแก้ไขบัญชีโดยใช้ ชุด-ADUser.

PS C:\> ชุด-ADUser jfrost -ChangePasswordAtLogon $True

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


ข้าว. 2. ผลลัพธ์ของ Get-ADUser Cmdlet ด้วยคุณสมบัติ PasswordExpired

บรรทัดล่าง: การรีเซ็ตรหัสผ่านของผู้ใช้โดยใช้ PowerShell นั้นไม่ใช่เรื่องยากเลย ฉันยอมรับว่าการรีเซ็ตรหัสผ่านนั้นทำได้ง่ายเพียงแค่สแน็ปอิน ผู้ใช้ Active Directory และคอมพิวเตอร์คอนโซล คอนโซลการจัดการของ Microsoft (MMC)แต่การใช้ PowerShell นั้นเหมาะสมหากคุณต้องการมอบหมายงาน ไม่ต้องการปรับใช้สแน็ปอินที่กล่าวมาข้างต้น หรือกำลังรีเซ็ตรหัสผ่านโดยเป็นส่วนหนึ่งของกระบวนการ IT อัตโนมัติขนาดใหญ่

ภารกิจที่ 2: เปิดใช้งานและปิดใช้งานบัญชี

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

PS C:\> ปิดใช้งาน-ADAccount jfrost - จะเกิดอะไรขึ้นถ้า: กำลังดำเนินการ "ตั้งค่า" บนเป้าหมาย "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local"

ตอนนี้เรามาปิดการใช้งานจริง:

PS C:\> ปิดการใช้งาน-ADAAccount jfrost

และเมื่อถึงเวลาเปิดใช้งานบัญชี cmdlet ไหนจะช่วยเรา?

PS C:\> เปิดใช้งาน-ADAccount jfrost

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

PS C:\> get-aduser -filter "department -eq "sales"" | ปิดการใช้งาน adacount

แน่นอนเขียนตัวกรองสำหรับ รับ-ADUserค่อนข้างซับซ้อน แต่นี่คือจุดที่การใช้พารามิเตอร์ –อะไรจะเกิดขึ้นพร้อมกับ cmdlet ปิดการใช้งาน ADAccountมาช่วยเหลือ

ภารกิจที่ 3: ปลดล็อกบัญชีผู้ใช้

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

PS C:\> ปลดล็อค-ADAAccount jfrost

cmdlet ยังรองรับพารามิเตอร์อีกด้วย -อะไรจะเกิดขึ้นและ -ยืนยัน.

ภารกิจที่ 4: ลบบัญชี

ไม่สำคัญว่าคุณจะลบผู้ใช้ออกกี่คน - ทำได้ง่ายๆ โดยใช้ cmdlet ลบ-ADUser- ฉันไม่ต้องการลบ Jack Frost แต่ถ้าต้องการ ฉันจะใช้โค้ดดังนี้:

PS C:\> Remove-ADUser jfrost - จะเกิดอะไรขึ้นถ้า: กำลังดำเนินการ "ลบ" บนเป้าหมาย "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local"

หรือฉันสามารถป้อนผู้ใช้หลายรายและลบออกด้วยคำสั่งง่ายๆ เพียงคำสั่งเดียว:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=พนักงาน, DC=Globomantics,DC=Local" | โดยที่ ($_.WhenChanged -le (รับ-Date).AddDays(-180)) | ลบ ADuser -whatif

คำสั่งนี้จะค้นหาและลบบัญชีพนักงาน OU ที่ปิดใช้งานทั้งหมดซึ่งไม่ได้รับการแก้ไขเป็นเวลา 180 วันขึ้นไป

ภารกิจที่ 5: ค้นหากลุ่มว่าง

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

ป.ล.:\> get-adgroup -filter * | โดยที่ (-ไม่ใช่ ($_ | get-adgroupmember)) | เลือกชื่อ

หากคุณมีกลุ่มที่มีสมาชิกหลายร้อยคน การใช้คำสั่งนี้อาจใช้เวลานาน รับ ADGroupMemberตรวจสอบแต่ละกลุ่ม ถ้าคุณสามารถจำกัดหรือปรับแต่งได้จะดีกว่า
นี่เป็นอีกแนวทางหนึ่ง:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | เลือกชื่อกลุ่ม*

คำสั่งนี้ค้นหากลุ่ม Universal ทั้งหมดที่ไม่มีสมาชิกในกลุ่ม OU และแสดงคุณสมบัติบางอย่าง ผลลัพธ์จะแสดงในรูปที่ 3


ข้าว. 3. ค้นหาและกรองกลุ่มสากล

ภารกิจที่ 6: การเพิ่มผู้ใช้ในกลุ่ม

มาเพิ่ม Jack Frost ในกลุ่ม Chicago IT:

PS C:\> add-adgroupmember "chicago IT" -สมาชิก jfrost

ใช่ มันง่ายมาก คุณสามารถเพิ่มผู้ใช้หลายร้อยรายในกลุ่มได้อย่างง่ายดาย แม้ว่าฉันจะพบว่าสิ่งนี้ดูอึดอัดเล็กน้อย:

PS C:\> Add-ADGroupMember "พนักงานในชิคาโก" - สมาชิก (get-aduser -filter "city -eq "Chicago"")

ฉันใช้นิพจน์ไปป์ไลน์แบบวงเล็บเพื่อค้นหาผู้ใช้ทั้งหมดที่มีคุณสมบัติ City ในชิคาโก โค้ดในวงเล็บจะถูกดำเนินการ และออบเจ็กต์ผลลัพธ์จะถูกส่งผ่านไปยังพารามิเตอร์ –Member ออบเจ็กต์ผู้ใช้แต่ละรายการจะถูกเพิ่มไปยังกลุ่มพนักงานในชิคาโก ไม่สำคัญว่าเราจะติดต่อกับผู้ใช้ 5 หรือ 5,000 ราย การอัปเดตการเป็นสมาชิกกลุ่มใช้เวลาเพียงไม่กี่วินาที สำนวนนี้สามารถเขียนได้โดยใช้ สำหรับแต่ละวัตถุอะไรจะสะดวกกว่า:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach (Add-ADGroupMember "พนักงานชิคาโก" -สมาชิก $_)

ภารกิจที่ 7: รายชื่อสมาชิกกลุ่ม

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

PS C:\> รับ-ADGroupMember "ผู้ดูแลระบบโดเมน"

รูปที่ 4 แสดงผลลัพธ์


ข้าว. 4. สมาชิกของกลุ่มผู้ดูแลระบบโดเมน

cmdlet แสดงวัตถุโฆษณาสำหรับสมาชิกแต่ละกลุ่ม จะทำอย่างไรกับกลุ่มที่ซ้อนกัน? กลุ่มของฉัน Chicago All Users คือกลุ่มของกลุ่มที่ซ้อนกัน หากต้องการดูรายการบัญชีทั้งหมด ฉันแค่ต้องใช้พารามิเตอร์ –แบบเรียกซ้ำ.

PS C:\> Get-ADGroupMember "ผู้ใช้ทั้งหมดในชิคาโก" -Recursive | เลือกชื่อเฉพาะ

หากคุณต้องการไปทางอื่น ให้ค้นหาว่าผู้ใช้อยู่ในกลุ่มใด - ให้ใช้คุณสมบัติผู้ใช้ สมาชิกของ:

PS C:\> รับ aduser jfrost -property Memberof | เลือก -ExpandProperty memberOf CN=NewTest,OU=กลุ่ม,OU=พนักงาน, DC=GLOBOMANTICS,DC=local CN=การทดสอบในชิคาโก,OU=กลุ่ม,OU=พนักงาน, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= กลุ่ม,OU=พนักงาน, DC=GLOBOMANTICS,DC=local CN=ผู้ใช้การขายในชิคาโก,OU=กลุ่ม,OU=พนักงาน, DC=GLOBOMANTICS,DC=local

ฉันใช้พารามิเตอร์ -ขยายคุณสมบัติเพื่อแสดงชื่อ สมาชิกของเหมือนเส้น

ภารกิจที่ 8: ค้นหาบัญชีคอมพิวเตอร์ที่ล้าสมัย

ฉันถูกถามคำถามนี้บ่อยครั้ง: “ฉันจะค้นหาบัญชีคอมพิวเตอร์ที่ล้าสมัยได้อย่างไร” และฉันมักจะตอบเสมอว่า: "อะไรล้าสมัยสำหรับคุณ" บริษัทมีคำจำกัดความที่แตกต่างกันเมื่อบัญชีคอมพิวเตอร์ (หรือผู้ใช้ อะไรก็ตาม) ถือว่าล้าสมัยและไม่สามารถใช้งานได้อีกต่อไป สำหรับฉัน ฉันให้ความสำคัญกับบัญชีที่ไม่มีการเปลี่ยนรหัสผ่านในช่วงระยะเวลาหนึ่ง ช่วงเวลานี้สำหรับฉันคือ 90 วัน - หากคอมพิวเตอร์ไม่ได้เปลี่ยนรหัสผ่านพร้อมกับโดเมนในช่วงเวลานี้ มีแนวโน้มว่าคอมพิวเตอร์จะออฟไลน์และล้าสมัย Cmdlet ที่ใช้ รับ-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| เลือกชื่อ รหัสผ่านชุดสุดท้าย

ตัวกรองทำงานได้ดีกับค่าที่ยาก แต่รหัสนี้จะอัปเดตสำหรับบัญชีคอมพิวเตอร์ทั้งหมดที่ไม่ได้เปลี่ยนรหัสผ่านตั้งแต่วันที่ 1 มกราคม 2555 ผลลัพธ์แสดงในรูปที่ 5


ข้าว. 5. ค้นหาบัญชีคอมพิวเตอร์ที่ล้าสมัย

อีกทางเลือกหนึ่ง: สมมติว่าคุณอยู่ในระดับการทำงานของโดเมน Windows 2003 เป็นอย่างน้อย กรองตามคุณสมบัติ LastLogontimeStamp- ค่านี้คือจำนวนช่วงเวลา 100 นาโนวินาทีตั้งแต่วันที่ 1 มกราคม 1601 และจัดเก็บแบบ GMT ดังนั้นการทำงานกับค่านี้จึงยุ่งยากเล็กน้อย:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | เลือกชื่อ,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | เรียงลำดับ LastLogonTimeStamp


ข้าว. 6. แปลงค่า LastLogonTimeStamp เป็นรูปแบบที่คุ้นเคย

หากต้องการสร้างตัวกรอง ฉันต้องแปลงวันที่ เช่น 1 มกราคม 2012 ให้เป็นรูปแบบที่ถูกต้อง การแปลงดำเนินการใน FileTime:

PS C:\> $cutoff=(รับวันที่ "1/1/2555").ToFileTime() PS C:\> $cutoff 129698676000000000

ตอนนี้ฉันสามารถใช้ตัวแปรนี้ในตัวกรองได้ รับ-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -หรือ (lastlogontimestamp -notlike "*")" -property * | เลือกชื่อ, LastlogonTimestamp, PasswordLastSet

โค้ดด้านบนค้นหาคอมพิวเตอร์เครื่องเดียวกับที่แสดงในรูปที่ 5

ภารกิจที่ 9: ปิดการใช้งานบัญชีคอมพิวเตอร์

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

PS C:\> ปิดใช้งาน-ADAccount - รหัสประจำตัว "chi-srv01$" - จะเกิดอะไรขึ้นถ้า: กำลังดำเนินการ "ตั้งค่า" บนเป้าหมาย "CN=CHI-SRV01, CN=คอมพิวเตอร์,DC=GLOBOMANTICS,DC=local"

หรือใช้นิพจน์ไปป์ไลน์:

ป.ล.:\> รับ-adcomputer "chi-srv01" | ปิดการใช้งาน ADAccount

ฉันยังสามารถใช้รหัสของฉันเพื่อค้นหาบัญชีที่ล้าสมัยและปิดการใช้งานทั้งหมดได้:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| ปิดการใช้งาน ADAccount

ภารกิจที่ 10: ค้นหาคอมพิวเตอร์ตามประเภท

ฉันมักจะถูกถามถึงวิธีค้นหาบัญชีคอมพิวเตอร์ตามประเภท เช่น เซิร์ฟเวอร์หรือเวิร์กสเตชัน สิ่งนี้ต้องใช้ความคิดสร้างสรรค์ในส่วนของคุณ ไม่มีสิ่งใดใน AD ที่ทำให้เซิร์ฟเวอร์แตกต่างจากไคลเอนต์ ยกเว้นระบบปฏิบัติการ หากคอมพิวเตอร์ของคุณใช้ Windows Server 2008 คุณจะต้องทำตามขั้นตอนเพิ่มเติมสองสามขั้นตอน
ขั้นแรก คุณต้องได้รับรายการระบบปฏิบัติการ จากนั้นเราจะกรองบัญชีตามระบบปฏิบัติการที่มีอยู่

PS C:\> รับ-ADComputer - ตัวกรอง * - คุณสมบัติระบบปฏิบัติการ | เลือกระบบปฏิบัติการ -ไม่ซ้ำกัน | เรียงลำดับระบบปฏิบัติการ

ผลลัพธ์แสดงในรูปที่ 7


ข้าว. 7. การดึงข้อมูลรายการระบบปฏิบัติการ

ฉันต้องการค้นหาคอมพิวเตอร์ทุกเครื่องที่ใช้ระบบปฏิบัติการเซิร์ฟเวอร์:

PS C:\> รับ-ADComputer - กรอง "ระบบปฏิบัติการ - เหมือน "* เซิร์ฟเวอร์ *"" - คุณสมบัติ ระบบปฏิบัติการ, ระบบปฏิบัติการ ServicePack | เลือกชื่อ,Op* | รายการรูปแบบ

ผลลัพธ์แสดงในรูปที่ 8

เช่นเดียวกับ AD Get cmdlets อื่นๆ คุณสามารถปรับแต่งพารามิเตอร์การค้นหาและจำกัดคำขอไปยัง OU ที่เฉพาะเจาะจงได้หากจำเป็น นิพจน์ทั้งหมดที่ฉันแสดงสามารถรวมเข้ากับนิพจน์ PowerShell ที่ใหญ่กว่าได้ ตัวอย่างเช่น คุณสามารถจัดเรียง จัดกลุ่ม ใช้ตัวกรอง ส่งออกเป็น CSV หรือสร้างและส่งอีเมลรายงาน HTML ทั้งหมดนี้จาก PowerShell! ในกรณีนี้ คุณจะไม่ต้องเขียนสคริปต์แม้แต่ตัวเดียว
นี่เป็นโบนัส: รายงานอายุรหัสผ่านของผู้ใช้ที่บันทึกไว้ในไฟล์ HTML:

PS C:\> รับ ADUser - ตัวกรอง "เปิดใช้งาน -eq "จริง" - และ PasswordNeverExpires -eq "เท็จ"" - คุณสมบัติ PasswordLastSet, รหัสผ่านNeverExpires, รหัสผ่านหมดอายุ | เลือก DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm !}

แม้ว่าสำนวนนี้อาจดูน่ากลัวเล็กน้อย แต่ก็ใช้งานง่ายโดยมีความรู้เกี่ยวกับ PowerShell เพียงเล็กน้อย และมีเพียงคำแนะนำสุดท้ายเดียวเท่านั้น: วิธีกำหนดคุณสมบัติแบบกำหนดเองที่เรียกว่า รหัสผ่านAge- ค่านี้แสดงถึงช่องว่างระหว่างวันที่วันนี้และคุณสมบัติ PasswordLastSet จากนั้น ฉันจะจัดเรียงผลลัพธ์สำหรับสถานที่ให้บริการใหม่ของฉัน รูปที่ 9 แสดงผลลัพธ์สำหรับโดเมนทดสอบขนาดเล็กของฉัน

อัปเดต:
โพสต์มีการแปลบทความบนพอร์ทัล

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


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

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


กลไกนี้ได้รับการออกแบบให้รับและประมวลผลข้อมูลจากแหล่งต่างๆ ตั้งแต่ ODBC เก่าและไฟล์ข้อความ ไปจนถึง Exchange, Oracle และ Facebook รายละเอียดเพิ่มเติมเกี่ยวกับกลไกและภาษาสคริปต์ในตัว “M” ได้ถูกเขียนไว้แล้วบน Habré แต่ฉันจะดูตัวอย่างการใช้ Power Query เพื่อรับข้อมูลจาก 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 บนแท็บ "แทรก" - "ตาราง Pivot" กัน ยอมรับการเลือกแหล่งข้อมูลและกำหนดค่าฟิลด์



การตั้งค่าฟิลด์ตาราง 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"

เพิ่มแท็ก