โมดูล Active Directory สำหรับ Windows PowerShell เป็นเครื่องมือหลักสำหรับการจัดการโดเมน จัดการวัตถุใน Active Directory และดึงข้อมูลต่างๆ เกี่ยวกับคอมพิวเตอร์ ผู้ใช้ กลุ่ม ใน AD ทุกผู้ดูแลระบบ Windows ต้องรู้จักการใช้งานทั้ง GUI snap-ins (โดยทั่วไปคือ ADUC – Active Directory Users & Computers) และ cmdlets ของโมดูล RSAT-AD-PowerShell เพื่อทำงานจัดการ Active Directory ในแต่ละวัน ในบทความนี้เราจะดูวิธีติดตั้งโมดูล PowerShell Active Directory บน Windows สำรวจคุณสมบัติพื้นฐาน และ cmdlets ยอดนิยมที่มีประโยชน์ในการจัดการและโต้ตอบกับ AD
การติดตั้งโมดูล PowerShell Active Directory บน Windows Server
Active Directory สำหรับ Windows PowerShell ถูกสร้างไว้ในระบบปฏิบัติการ Windows Server (ตั้งแต่ Windows Server 2008 R2) แต่ไม่ได้เปิดใช้งานโดยค่าเริ่มต้น
บน Windows Server 2016 คุณสามารถติดตั้งโมดูล AD สำหรับ PowerShell จาก Server Manager (Add Roles and Features → Features → Remote Server Administration Tools → Role Administration Tools → AD DS and AD LDS Tools → Active Directory module for Windows PowerShell)

คุณยังสามารถติดตั้งโมดูลจากคอนโซล PowerShell โดยใช้คำสั่ง:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

คุณสามารถติดตั้ง RSAT-AD-PowerShell ไม่ได้เฉพาะบนโดเมนคอนโทรลเลอร์เท่านั้น เซิร์ฟเวอร์สมาชิกโดเมนหรือแม้แต่เวิร์กสเตชันก็ทำได้ โมดูล PowerShell Active Directory จะถูกติดตั้งโดยอัตโนมัติเมื่อคุณปรับใช้ роль Active Directory Domain Services (AD DS) (เมื่อโปรโมทเซิร์ฟเวอร์เป็นโดเมนคอนโทรลเลอร์ AD)
โมดูลโต้ตอบกับ AD ผ่าน Active Directory Web Service ที่ต้องติดตั้งบนโดเมนคอนโทรลเลอร์ของคุณ (การสื่อสารผ่านพอร์ต TCP 9389)
วิธีติดตั้งโมดูล PowerShell Active Directory บน Windows 10
คุณสามารถติดตั้งโมดูล RSAT-AD-PowerShell ไม่ได้เฉพาะบน Windows Server เท่านั้น แต่ยังรองรับบนเวิร์กสเตชันด้วย โมดูลนี้เป็นส่วนหนึ่งของแพ็กเกจ RSAT (Remote Server Administration Tools) ที่คุณสามารถดาวน์โหลดและติดตั้งด้วยตนเองบน Windows 7, Windows 8.1 หลังจากติดตั้ง RSAT แล้ว คุณสามารถติดตั้งโมดูล Active Directory สำหรับ PowerShell จาก Control Panel (Control Panel → Programs and Features → Turn Windows features on or off → Remote Server Administration Tools → Role Administration Tools → AD DS and AD LDS Tools)

บน Windows 10 build 1809 หรือใหม่กว่า แพ็กเกจ RSAT ถูกรวมอยู่ใน Windows image (ในฐานะ Features on Demand) ดังนั้นคุณสามารถใช้คำสั่ง PowerShell นี้เพื่อติดตั้งโมดูล Active Directory:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
มีวิธีปรับใช้โมดูล PowerShell ActiveDirectory บน Windows 10 โดยไม่ต้องติดตั้ง RSAT
Active Directory PowerShell Cmdlets
มี cmdlets จำนวนมากสำหรับโต้ตอบกับ AD ในโมดูล Active Directory สำหรับ Windows PowerShell แต่ละเวอร์ชัน RSAT ใหม่จะมี cmdlets มากกว่าเวอร์ชันก่อนหน้า ใน Windows Server 2016 มี PowerShell cmdlets สำหรับ Active Directory ทั้งหมด 147 ตัว
ก่อนใช้ cmdlets ของโมดูล Active Directory คุณต้องนำเข้าโมดูลเข้าสู่เซสชัน PowerShell ของคุณ (บน Windows Server 2012 R2/ Windows 8.1 และใหม่กว่า โมดูลจะถูกนำเข้าโดยอัตโนมัติ)
Import-Module ActiveDirectory
หากโมดูล Active Directory ไม่ได้ติดตั้งบนคอมพิวเตอร์ของคุณ คุณสามารถนำเข้าจากโดเมนคอนโทรลเลอร์ของคุณ (คุณต้องมีสิทธิ์โดเมนแอดมิน) หรือจากคอมพิวเตอร์เดสก์ท็อปอีกเครื่อง:
$psSess = New-PSSession -ComputerName DC_or_Comp_with_ADPoSh_installed
Import-Module -PSsession $psSess -Name ActiveDirectory
คุณสามารถแสดงรายการ cmdlets Active Directory ที่มีอยู่ทั้งหมดโดยใช้คำสั่ง:
Get-Command –module ActiveDirectory
จำนวน cmdlets ทั้งหมดในโมดูล AD:
Get-Command –module ActiveDirectory |measure-object|select count

คำสั่ง RSAT-AD-PowerShell ส่วนใหญ่ขึ้นต้นด้วยคำนำหน้า Get-, Set- หรือ New-
- Get – cmdlets กลุ่มนี้ใช้ดึงข้อมูลต่างๆ จาก Active Directory (Get-ADUser — คุณสมบัติผู้ใช้, Get-ADComputer – การตั้งค่าคอมพิวเตอร์, Get-ADGroupMember — สมาชิกกลุ่ม ฯลฯ) ในการรันไม่จำเป็นต้องเป็นโดเมนแอดมิน ผู้ใช้โดเมนทั่วไปสามารถรันคำสั่ง PowerShell เพื่อดึงค่าแอตทริบิวต์ของวัตถุ AD ได้ (ยกเว้นแอตทริบิวต์ที่เป็นความลับ เช่นตัวอย่างกับ LAPS)
- Set- – cmdlets กลุ่มนี้ใช้ตั้งค่า (เปลี่ยนแปลง) การตั้งค่าวัตถุใน Active Directory ตัวอย่างเช่น คุณสามารถเปลี่ยนคุณสมบัติผู้ใช้ (Set-ADUser), การตั้งค่าคอมพิวเตอร์ (Set-ADComputer), เพิ่มผู้ใช้เข้ากลุ่ม ฯลฯ เพื่อทำเช่นนี้ บัญชีของคุณต้องมีสิทธิ์แก้ไขคุณสมบัติวัตถุ (ดูบทความ How to Delegate Administrator Privileges in Active Directory)
- คำสั่งที่ขึ้นต้นด้วย New- ช่วยให้คุณสร้างวัตถุ AD (สร้างผู้ใช้ — New-ADUser, สร้างกลุ่ม — New-ADGroup)
- Remove- cmdlets ใช้ลบวัตถุ AD
นี่คือวิธีดูวิธีใช้งาน cmdlet ใดๆ:
get-help Set-ADUser

คุณสามารถแสดงตัวอย่างการใช้งาน Active Directory cmdlets ได้ดังนี้:
(get-help New-ADComputer).examples
การใช้คำแนะนำแบบป๊อปอัปขณะพิมพ์พารามิเตอร์ cmdlet ใน PowerShell ISE จะสะดวกมาก

การจัดการ Active Directory ด้วยโมดูล RSAT-AD-PowerShell
ลองดูงานทั่วไปของผู้ดูแลระบบที่คุณสามารถทำได้โดยใช้ Active Directory สำหรับ PowerShell cmdlets
คุณสามารถหาตัวอย่างที่มีประโยชน์เกี่ยวกับการใช้ AD สำหรับ PowerShell cmdlets ได้ที่เว็บไซต์ WOSHub ตามลิงก์เพื่อดูคำแนะนำโดยละเอียด
New-ADUser: การสร้างผู้ใช้ AD
เพื่อสร้างผู้ใช้ AD ใหม่ คุณสามารถใช้ cmdlet New-ADUser คุณสามารถสร้างผู้ใช้ด้วยคำสั่งต่อไปนี้:
New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "mbeck@woshub.com" -Path "OU=Users,OU=Berlin,OU=DE,DC=woshub,DC=com" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true
สำหรับข้อมูลโดยละเอียดเกี่ยวกับ New-ADUser cmdlet (รวมถึงตัวอย่างการสร้างบัญชีผู้ใช้โดเมนจำนวนมาก) โปรดดูบทความนี้
Get-ADComputer: การดึงคุณสมบัติคอมพิวเตอร์
เพื่อแสดงข้อมูลเกี่ยวกับคุณสมบัติคอมพิวเตอร์ใน OU เฉพาะ (ชื่อคอมพิวเตอร์และวันที่ล็อกออนล่าสุด) ให้ใช้ Get-ADComputer cmdlet:
Get-ADComputer -SearchBase ‘OU=CA,OU=USA,DC=woshub,DC=com’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize
Add-AdGroupMember: เพิ่มผู้ใช้ AD เข้ากลุ่ม
เพื่อเพิ่มผู้ใช้เข้ากลุ่มความปลอดภัยที่มีอยู่ในโดเมน AD ของคุณ ให้รันคำสั่งนี้:
Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf
แสดงรายการผู้ใช้ในกลุ่ม AD และส่งออกเป็นไฟล์ CSV:
Get-ADGroupMember LondonSales -recursive| ft samaccountname| Out-File c:\ps\export_ad_users.csv
เรียนรู้เพิ่มเติมเกี่ยวกับการจัดการกลุ่ม AD จาก PowerShell
Set-ADAccountPassword: รีเซ็ตรหัสผ่านผู้ใช้ใน AD
เพื่อรีเซ็ตรหัสผ่านผู้ใช้ AD จาก PowerShell ให้รันคำสั่งต่อไปนี้:
Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “Ne8Pa$$0rd1” -Force -Verbose) –PassThru
วิธีปลดล็อก เปิดใช้งาน และปิดใช้งานบัญชี AD
เพื่อปิดใช้งานบัญชีผู้ใช้ AD:
Disable-ADAccount m.lorenz
เพื่อเปิดใช้งานบัญชี:
Enable-ADAccount m.lorenz
เพื่อปลดล็อกบัญชีหลังจากถูกบล็อกโดยนโยบายรหัสผ่านโดเมน:
Unlock-ADAccount m.lorenz
Search-ADAccount: วิธีค้นหาวัตถุที่ไม่ได้ใช้งานและถูกปิดใช้งาน
เพื่อค้นหาและปิดใช้งานคอมพิวเตอร์ทั้งหมดในโดเมน AD ที่ไม่ได้ล็อกออนมานานกว่า 90 วัน ให้ใช้ Search-ADAccount cmdlet:
$timespan = New-Timespan –Days 90
Search-ADAccount -AccountInactive -ComputersOnly –TimeSpan $timespan | Disable-ADAccount
New-ADOrganizationalUnit: สร้าง Organizational Unit ใน AD
เพื่อสร้างโครงสร้าง Organizational Unit แบบปกติใน AD อย่างรวดเร็ว คุณสามารถใช้สคริปต์ PowerShell สมมติว่าคุณต้องการสร้าง OUs หลายตัวด้วยชื่อรัฐและสร้างคอนเทนเนอร์วัตถุทั่วไปภายใน การสร้างโครงสร้าง AD นี้ด้วยตนผ่าน GUI ADUC snap-in ใช้เวลานาน โมดูล AD สำหรับ PowerShell ช่วยให้ทำได้ในไม่กี่วินาที (เว้นแต่เวลาเขียนสคริปต์):
$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(".")
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = ("Nevada","Texas","California","Florida")
$Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts")
$FirstOU ="USA"
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
{
New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
{
New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
}
}
หลังจากรันสคริปต์ โครงสร้าง OU ต่อไปนี้จะปรากฏใน Active Directory

เพื่อย้ายวัตถุระหว่างคอนเทนเนอร์ AD คุณสามารถใช้ cmdlet Move-ADObject:
$TargetOU = "OU=Sales,OU=Computers,DC=woshub,DC=com"
Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU
Get-ADReplicationFailure: ตรวจสอบความล้มเหลวของการจำลอง AD
โดยใช้ Get-ADReplicationFailure cmdlet คุณสามารถตรวจสอบสถานะการจำลองระหว่างโดเมนคอนโทรลเลอร์ AD:
Get-ADReplicationFailure -Target NY-DC01,NY-DC02
เพื่อดึงข้อมูลเกี่ยวกับ DC ทั้งหมดในโดเมน ให้ใช้ cmdlet Get-AdDomainController:
Get-ADDomainController –filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table –auto

ดังนั้น เราได้พิจารณาคุณสมบัติพื้นฐานของโมดูล PowerShell Active Directory สำหรับจัดการโดเมน AD หวังว่าจะกระตุ้นให้คุณสำรวจคุณสมบัติอื่นๆ ของโมดูลและทำให้งานจัดการ AD ส่วนใหญ่เป็นอัตโนมัติ