วิธีดาวน์โหลดรายชื่อผู้ใช้กลุ่มจากโฆษณา วิธีรับรายการกลุ่มโฆษณาที่เลือกซึ่งมีผู้ใช้จำนวนมากเป็นสมาชิก

ทุ่มเทให้กับการใช้ 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:\>เปิดใช้งาน-ADAAccount 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. สมาชิกกลุ่ม Domain Admins

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 - Identity "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 แสดงผลลัพธ์สำหรับโดเมนทดสอบขนาดเล็กของฉัน

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

0

ฉันมีสคริปต์การทำงานต่อไปนี้ที่จะตรวจสอบว่ารายชื่อผู้ใช้จำนวนมากในไฟล์ CSV เป็นสมาชิกของกลุ่ม AD และเขียนผลลัพธ์ลงใน results.csv หรือไม่

ไม่แน่ใจว่าจะแปลงสคริปต์อย่างไรดังนั้นฉันจึงสามารถเปลี่ยน $group = "InfraLite" เป็น $group = DC .\List_Of_AD_Groups.CSV ได้

ดังนั้นสคริปต์จึงไม่ส่งคืนการจับคู่สำหรับกลุ่ม AD หนึ่งกลุ่มเท่านั้น แต่ยังส่งคืนการจับคู่สำหรับกลุ่ม AD 80 กลุ่มที่อยู่ใน List_of_AD_groups.csv การเขียน YES/NO สำหรับแต่ละกลุ่ม AD ในคอลัมน์ CSV ใหม่ (หรือหากเป็นไปไม่ได้ การสร้างไฟล์ CSV แยกกันสำหรับแต่ละกลุ่มที่มีผลลัพธ์จะทำเช่นเดียวกัน

ฉันสามารถทำได้ด้วยตนเองโดยเปลี่ยนค่าจาก $group และชื่อไฟล์ส่งออกและรันสคริปต์อีกครั้ง 80 ครั้ง แต่จะต้องรวดเร็วด้วย PS ในการดำเนินการนี้

เช่น results.csv?:

NAME AD_GROUP1 AD_GROUP2 AD_GROUP80 ฯลฯ user1 ใช่ ไม่ ใช่ user2 ไม่ ไม่ ใช่ user3 ไม่ ใช่ ไม่ใช่ echo "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive | เลือก -ExpandProperty SAMAccountName foreach ($user ใน $users) ( ถ้า ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) else ( echo "$user`tNo" >> ผลลัพธ์ .csv) )

  • 2 คำตอบ
  • การเรียงลำดับ:

    กิจกรรม

0

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

$groups = รับเนื้อหา "C:\groups.txt" foreach ($กลุ่มใน $groups) ( $members = Get-ADGroupMember ... ... )

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

$template = @() รับเนื้อหา "C:\groups.txt" | ForEach-Object ( $template[$_] = $false ) $groups = @() Get-ADGroup -Filter * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | โดยที่-Object ( $groupmap.ContainsKey($_) ) | ForEach-Object ( $groupmap [$_] = $true ) New-Object -Type PSObject -Property $groupmap ) | ส่งออก-Csv "C:\user_group_mapping.csv" -NoType

0

ฉันเล่นกับสิ่งนี้มาระยะหนึ่งแล้วและฉันคิดว่าฉันพบวิธีที่จะทำให้คุณได้รับสิ่งที่คุณต้องการอย่างแน่นอน

ฉันคิดว่า Ansgar มาถูกทางแล้ว แต่ฉันไม่สามารถทำอะไรที่ตามมาได้ เขากล่าวว่าในขณะที่เขียน เขาไม่สามารถเข้าถึงสภาพแวดล้อม AD ได้

นี่คือสิ่งที่ฉันคิดขึ้นมา:

$UserArray = รับเนื้อหา "C:\Temp\Users.txt" $GroupArray = รับเนื้อหา "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # การตั้งค่าแฮชเทเบิล สำหรับใช้ในภายหลัง $UserHash = New-Object -TypeName System.Collections.Hashtable # วงนอกเพื่อเพิ่มผู้ใช้และความเป็นสมาชิกของ UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # ตัดไวยากรณ์ LPAP เหลือเพียง SAMAccountName ของกลุ่ม $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Adding the User=Membership pair to the Hash $UserHash.Add($_,$Memberships) ) #Outer loop to create an object per user $Results = $UserArray | ForEach-Object( # ขั้นแรกให้สร้างอ็อบเจ็กต์แบบง่าย $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # เพิ่มสมาชิกแบบไดนามิกให้กับอ็อบเจ็กต์ โดยยึดตาม $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash เพื่อดูว่ากลุ่มปรากฏในรายชื่อสมาชิกของผู้ใช้หรือไม่ $UserIsMember = $UserHash.($User.Name) -contains $_ #Adding property to object, and value $User | Add-Member -MemberType NoteProperty -Name $ _ -Value $UserIsMember ) #ส่งคืนอ็อบเจ็กต์ไปยังตัวแปร Return $User ) #แปลงอ็อบเจ็กต์เป็น CSV จากนั้นจึงส่งออก $Results |

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

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

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

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

สวัสดีตอนบ่ายผู้อ่านและสมาชิกที่รัก เรากำลังศึกษาความสามารถของ Powershell และ Active Directory ต่อไป อย่างที่คุณจำได้ บัญชีผู้ใช้และคอมพิวเตอร์ทั้งหมดของเธออยู่ในฐานข้อมูล NTDS.dit ทุกอย่างยอดเยี่ยมและรวมศูนย์ เมื่อบริษัทมีผู้ดูแลระบบมากกว่าหนึ่งคน สถานการณ์อาจเกิดขึ้นเมื่อขยะและข้อมูลประจำตัวที่ไม่จำเป็นสะสม เราทุกคนเป็นมนุษย์และสามารถลืมบางสิ่งได้ และในบางช่วงเวลาเราก็อาจถูกรบกวน ซึ่งจะนำไปสู่การลืมข้อมูลสำคัญด้วย และเราได้ข้อสรุปว่าผู้ใช้ที่ไม่ได้ใช้งาน (ถูกไล่ออกหรือถูกลืม) สะสมอยู่ในไดเรกทอรี Actvie ไม่ว่าในกรณีใด ผู้ดูแลระบบที่ดีควรระบุพวกเขา ปิดการใช้งาน แล้วลบออกหากต้องการ ซึ่งเป็นสิ่งที่เราจะทำ

ผ่านสแน็ปอิน ADUC

ครั้งล่าสุด ฉันได้ยกตัวอย่างการใช้สแน็ปอินผู้ใช้ Active Directory และคอมพิวเตอร์ ซึ่งเราค้นหาคอมพิวเตอร์ที่หายไปในเครือข่ายท้องถิ่นที่ไม่ปรากฏเป็นเวลาหนึ่งเดือน ตอนนี้เราจะทำเช่นเดียวกันกับบัญชีผู้ใช้ ฉันมี AD บน Windows Server 2012 R2 เปิด ADUC โดยกด WIN+R แล้วป้อน dsa.msc

ในแบบฟอร์มคำขอที่เปิดขึ้น ให้ป้อน:

  • ชื่อคำขอ > สำหรับฉัน เหล่านี้คือผู้ใช้ที่สูญหาย
  • คำอธิบายหากจำเป็น
  • ร้องขอการรูท > คุณสามารถออกจากโดเมนทั้งหมดหรือระบุบน OU ที่ต้องการได้ที่นี่

จากนั้นคลิกปุ่มร้องขอ

บนแท็บผู้ใช้ เราเห็นรายการ "จำนวนวันนับจากการเข้าสู่ระบบครั้งล่าสุด" เช่น ฉันตั้งค่าเป็น 60 วัน

ด้วยเหตุนี้ คุณจะได้รับรายการที่คุณต้องการสำหรับบัญชีพนักงานที่ไม่ได้ใช้งาน

ผ่านสแน็ปอิน PowerShell

สิ่งเดียวกันนี้สามารถทำได้ผ่าน Powershell ฉันจะให้รหัสแก่คุณทันทีซึ่งมีหน้าที่ค้นหาผู้ใช้ที่ไม่ได้ใช้งาน สำหรับสิ่งนี้ ฉันเลือกระยะเวลา 45 วัน ปิดการใช้งานข้อมูลผู้ใช้ และย้ายไปยัง OU ที่กำหนดเป็นพิเศษ

$date_with_offset= (รับวันที่).AddDays(-45)
$users = Get-ADUser -คุณสมบัติ LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | เรียงลำดับ LastLogonDate
foreach ($user ใน $users) (set-aduser $user -enabled $false; move-adobject -identity $user -targetpath "ou=Fired,ou=Moscow L. users,ou=Location,dc=msk,dc= contoso,dc=com")
รับ-ADUser - คุณสมบัติ LastLogonDate - ตัวกรอง (LastLogonDate -lt $date_with_offset ) | เรียงลำดับ LastLogonDate | ชื่อ FT, LastLogonDate - ขนาดอัตโนมัติ | ออกไฟล์ c:\Script\users.txt

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

  • การทำรายงานเป็นไฟล์

สิ่งที่มีประโยชน์เพิ่มเติมเกี่ยวกับการทำงานกับผู้ใช้ ก่อนที่จะใช้คำสั่งด้านล่าง คุณจะต้องโหลดโมดูล Active Directory ผ่านคำสั่งก่อน

รับความช่วยเหลือรับ ADUser

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

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

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

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

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

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

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

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

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

ช่วยรับ ADUser

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

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

รูปแบบของรายการที่ส่งคืนไม่สะดวกในการใช้งานเพียงแสดงแอตทริบิวต์พื้นฐาน 10 รายการจากทั้งหมดมากกว่า 120 รายการและคุณสมบัติของบัญชีผู้ใช้ (DN, SamAccountName, Name, 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

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

หากต้องการรับรายการบัญชีผู้ใช้ 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



มีคำถามหรือไม่?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: