ในบทความก่อนหน้า เราแสดงวิธีใช้คำสั่ง Set-ADComputer ใน GPO logon script เพื่อบันทึกข้อมูลผู้ใช้ที่ล็อกอินอยู่ในคุณสมบัติของออบเจ็กต์คอมพิวเตอร์ AD แต่ละเครื่อง หนึ่งในผู้แสดงความคิดเห็นได้ระบุอย่างสมเหตุสมผลว่าการทำเช่นนั้น คุณจะต้องติดตั้ง RSAT พร้อม Active Directory for Windows PowerShell บนคอมพิวเตอร์ผู้ใช้ทั้งหมดซึ่งอาจใช้เวลานาน ผมตัดสินใจลองหาว่า คุณสามารถ ใช้ PowerShell ActiveDirectory Module cmdlets โดยไม่ติดตั้ง RSAT บนคอมพิวเตอร์ผู้ใช้ได้หรือไม่ และผมทำได้!
สมมติว่า เรามีเซิร์ฟเวอร์ที่รัน Windows Server 2012 R2 ซึ่งติดตั้ง RSAT และ RSAT-AD-PowerShell module แล้ว ภารกิจของเราคือคัดลอกไฟล์ RSAT-AD-PowerShell ไปยังเวิร์กสเตชันผู้ใช้และนำเข้าเพื่อรัน AD module cmdlets ต่างๆ ผมใช้คอมพิวเตอร์ที่รัน Windows 10 LTSC (อิงบิลด์ 1809) เป็นเวิร์กสเตชันโดยเจตนา เพื่อแสดงว่ารุ่น RSAT-AD-PowerShell เก่ารองรับใน OS ใหม่กว่า
ขั้นแรก ให้คัดลอกไฟล์โมดูล AD ทั้งหมดจาก Windows Server 2012 R2 ไปยัง Windows 10 สร้างโฟลเดอร์ C:\PS\ADPoSh และคัดลอกเนื้อหาทั้งหมดของ C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory ไปไว้ที่นั่น
จากนั้นคัดลอกไฟล์ต่อไปนี้จากโฟลเดอร์ C:\Windows\WinSxS:
- Microsoft.ActiveDirectory.Management.dll
- Microsoft.ActiveDirectory.Management.resources.dll
คุณสามารถหาไลบรารีเหล่านี้ได้โดยการค้นหาโฟลเดอร์ WinSxS ในตัวอย่างของผม เส้นทางเต็มใน Windows Server 2012 R2 มีดังนี้:
"C:\Windows\WinSxS\amd64_microsoft.activedirectory.management_31bf3856ad364e35_6.3.9600.16503_none_09aa35cd49da6068\Microsoft.ActiveDirectory.Management.dll"
"C:\Windows\WinSxS\amd64_microsoft.activedir..anagement.resources_31bf3856ad364e35_6.3.9600.16384_en-us_efefcf68718a71bc\Microsoft.ActiveDirectory.Management.resources.dll"

จากนั้นคัดลอกโฟลเดอร์ C:\PS\ADPoSh (ในกรณีของผม ขนาดประมาณ 1.3MB) ไปยังคอมพิวเตอร์ Windows 10 ที่ไม่ได้ติดตั้ง RSAT AD module สำหรับ Windows PowerShell
ลองนำโมดูล Active Directory ที่คัดลอกมาเข้าไปในเซสชัน PowerShell ปัจจุบัน:
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.resources.dll"

โมดูลถูกนำเข้าเรียบร้อยแล้ว และคุณสามารถใช้ AD module cmdlet ใดๆ เพื่อจัดการและรับข้อมูลจากโดเมน AD ของคุณ (เช่น Get-ADUser, Get-ADComputer, Get-ADGroup, ฯลฯ)

หากเกิดข้อผิดพลาด 'Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running' ให้ตรวจสอบว่า Active Directory Web Services (ADWS) บนโดเมนคอนโทรลเลอร์ที่ใกล้ที่สุดกำลังทำงาน และพอร์ต TCP 9389 ไม่ถูกบล็อกโดยไฟร์วอลล์
คุณสามารถหา DC ที่มีบทบาท ADWS ในโดเมนของคุณได้โดยใช้คำสั่ง:
Get-ADDomainController -Discover -Service "ADWS"

คุณสามารถตรวจสอบการเข้าถึงได้ของบริการ ADWS โดยใช้คำสั่ง Test-NetConnection:
Test-NetConnection DC01 -port 9389
เพื่อรัน cmdlets ต่อโดเมนคอนโทรลเลอร์เฉพาะ ให้ใช้พารามิเตอร์ –Server:
Get-ADUser jbrion –server dc01.woshub.com
คุณสามารถใช้ PowerShell AD module cmdlets จนกว่าคุณจะปิดเซสชัน PowerShell คุณสามารถคัดลอกไฟล์โมดูล AD ไปยังคอมพิวเตอร์โดเมนทั้งหมดโดยใช้ GPO