คุณสามารถเก็บข้อมูลที่เป็นประโยชน์ต่างๆ ไว้ในคำอธิบายของออบเจ็กต์คอมพิวเตอร์ใน Active Directory ตัวอย่างเช่น ข้อมูลเกี่ยวกับรุ่นคอมพิวเตอร์ รายการฮาร์ดแวร์ หรือชื่อผู้ใช้ที่เข้าสู่ระบบครั้งล่าสุด ในบทความนี้ เราจะมาดูวิธีเติมและอัปเดตข้อมูลโดยอัตโนมัติใน คำอธิบาย ฟิลด์ของวัตถุคอมพิวเตอร์ใน Active Directory โดยใช้ PowerShell
อัปเดตฟิลด์คำอธิบายคอมพิวเตอร์ใน Active Directory ด้วย PowerShell
ตัวอย่างเช่น คุณต้องการให้ฟิลด์คำอธิบายสำหรับคอมพิวเตอร์และเซิร์ฟเวอร์ในคอนโซลผู้ใช้และคอมพิวเตอร์ของ Active Directory เพื่อแสดงข้อมูลเกี่ยวกับผู้ผลิต รุ่น และหมายเลขลำดับประจำสินค้าของคอมพิวเตอร์ คุณสามารถรับข้อมูลนี้บนเครื่องท้องถิ่นของคุณจาก WMI โดยใช้คำสั่ง PowerShell ต่อไปนี้:Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber
แบบสอบถาม WMI ส่งกลับข้อมูลต่อไปนี้:
- ผู้ขาย – HP
- ชื่อ – Proliant DL 360 G5
- หมายเลขประจำตัว – CZJ733xxxx
รับชื่อของคอมพิวเตอร์ปัจจุบันจากตัวแปรสภาพแวดล้อมและกำหนดให้กับ $computer
ตัวแปร:
$computer = $env:COMPUTERNAME
จากนั้นบันทึกข้อมูลเกี่ยวกับฮาร์ดแวร์ของคอมพิวเตอร์:
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
มาดูกันว่าค่าใดบ้างที่ถูกกำหนดให้กับตัวแปร:
$computer
$vendor
$Model
$SerialNumber
ยังคงเขียนข้อมูลที่ได้รับในฟิลด์คำอธิบายของบัญชีคอมพิวเตอร์ใน Active Directory เรียกใช้สคริปต์ PowerShell ต่อไปนี้:
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($ENV:USERDNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()
Set-ADComputer $computer –Description "$vendor|$Model|$SerialNumber”
หากคุณต้องการใช้ cmdlet จากโมดูล AD PowerShell คุณสามารถคัดลอกไฟล์โมดูลไปยังคอมพิวเตอร์ทุกเครื่องโดยไม่ต้องติดตั้ง RSAT
ตรวจสอบว่าช่องคำอธิบายคอมพิวเตอร์ในคอนโซล ADUC แสดงข้อมูลผู้ผลิตและรุ่น
สคริปต์ดังกล่าวจะอัปเดตแอตทริบิวต์คำอธิบายคอมพิวเตอร์ปัจจุบันใน AD เท่านั้น คุณสามารถใส่คำอธิบายจากระยะไกลสำหรับคอมพิวเตอร์โดเมนทั้งหมดโดยใช้ Get-ADComputer และ foreach
ห่วง แต่จะสะดวกกว่ามากที่จะให้คอมพิวเตอร์อัปเดตข้อมูลโดยอัตโนมัติใน AD เมื่อผู้ใช้เข้าสู่ระบบหรือคอมพิวเตอร์เริ่มทำงาน
ในการดำเนินการนี้ คุณต้องสร้างนโยบายกลุ่มด้วยสคริปต์การเข้าสู่ระบบ PowerShell และนำไปใช้กับคอมพิวเตอร์ทุกเครื่อง:
- เปิดคอนโซลการจัดการนโยบายกลุ่มของโดเมน (
gpmc.msc
) สร้าง GPO และกำหนดให้กับ OU ด้วยคอมพิวเตอร์ - ขยาย GPO:การกำหนดค่าผู้ใช้ -> นโยบาย -> การตั้งค่า Windows -> สคริปต์ (การเข้าสู่ระบบ / ออกจากระบบ) -> การเข้าสู่ระบบ;
- ไปที่ สคริปต์ PowerShell แท็บ;
- คลิกปุ่ม แสดงไฟล์ และสร้าง FillCompDesc.ps1 ด้วยรหัสต่อไปนี้:
# write information about the computer hardware/model in the Description field in Active Directory
$computer = $env:COMPUTERNAME
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
$DNSDOMAIN= (Get-WmiObject -Namespace root\cimv2 -Class Win32_ComputerSystem).Domain
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($DNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()
คุณสามารถเลือกบันทึกการดำเนินการของสคริปต์ PowerShell เพื่อให้แก้ไขปัญหาได้ง่ายขึ้น - คลิกปุ่ม เพิ่ม และตั้งค่าพารามิเตอร์สคริปต์ต่อไปนี้:
ชื่อสคริปต์:FillCompDesc.ps1
พารามิเตอร์สคริปต์:-ExecutionPolicy Bypass
ในกรณีนี้ คุณไม่จำเป็นต้องเปลี่ยนการตั้งค่านโยบายการดำเนินการของ PowerShell หรือลงชื่อในไฟล์สคริปต์ PS1 เรียกใช้สคริปต์ PowerShell - มอบสิทธิ์ AD ให้กับ OU เฉพาะสำหรับ Authenticated ผู้ใช้ กลุ่มโดเมน กำหนดสิทธิ์ในการเปลี่ยนแปลงแอตทริบิวต์คำอธิบายของวัตถุคอมพิวเตอร์ทั้งหมดใน OU (
Write Description
การอนุญาต). ซึ่งจะอนุญาตให้ผู้ใช้โดเมนและคอมพิวเตอร์เปลี่ยนค่าในแอตทริบิวต์ Description ของวัตถุคอมพิวเตอร์ - หลังจากรีสตาร์ทคอมพิวเตอร์ใน OU เป้าหมายและอัปเดตการตั้งค่า Group Policy แล้ว ช่องคำอธิบายใน AD จะถูกกรอกโดยอัตโนมัติ ช่องนี้จะมีข้อมูลเกี่ยวกับฮาร์ดแวร์ของคอมพิวเตอร์ คุณแก้ปัญหา GPO ได้โดยใช้
gpresult
หรือใช้คำแนะนำจากบทความ ปัญหาทั่วไปที่ทำให้นโยบายกลุ่มไม่มีผลบังคับใช้
ดังนั้น คุณสามารถเพิ่มข้อมูลใดๆ ในฟิลด์ Description ของออบเจกต์คอมพิวเตอร์ใน AD ได้ ตัวอย่างเช่น ชื่อผู้ใช้ล่าสุดที่เข้าสู่ระบบ แผนก (คุณสามารถรับข้อมูลนี้ได้โดยใช้ Get-ADUser cmdlet) ที่อยู่ IP ของคอมพิวเตอร์ หรือข้อมูลที่เกี่ยวข้องอื่นๆ ที่คุณต้องการ
หมายเหตุ . ข้อเสียของแนวทางนี้คือ ผู้ใช้ AD ที่รับรองความถูกต้องสามารถเปลี่ยนหรือลบคำอธิบายของคอมพิวเตอร์เครื่องใดก็ได้ใน Active Directoryการเพิ่มชื่อผู้ใช้ที่เข้าสู่ระบบครั้งล่าสุดไปยังคำอธิบายคอมพิวเตอร์ในโฆษณา
สคริปต์ PowerShell ด้านบนสามารถใช้เพื่อเพิ่มข้อมูลอื่น ๆ ให้กับคำอธิบายของวัตถุคอมพิวเตอร์ใน AD ตัวอย่างเช่น จะมีประโยชน์เมื่อคำอธิบายของคอมพิวเตอร์แสดงผู้ใช้ที่เข้าสู่ระบบอยู่ในปัจจุบัน มาเพิ่มชื่อของตัวควบคุมโดเมนที่รับรองความถูกต้องของผู้ใช้ (LOGONSERVER
)
เปลี่ยนบรรทัดเดียวในสคริปต์การเข้าสู่ระบบ PowerShell เป็น:
$computerObj.Put("Description","$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")
ออกจากระบบและลงชื่อเข้าใช้ภายใต้บัญชีผู้ใช้ของคุณ ตรวจสอบว่าแอตทริบิวต์คำอธิบายคอมพิวเตอร์แสดงชื่อของผู้ใช้ปัจจุบันและเซิร์ฟเวอร์การเข้าสู่ระบบ (ตัวควบคุมโดเมน) ที่คุณรับรองความถูกต้อง
เพื่อแยกวิเคราะห์ข้อมูลจากแอตทริบิวต์ Description คุณสามารถใช้รหัส PowerShell ต่อไปนี้:
$ComputerName = 'PC-MUN22s7b2'
$vendor,$Model,$SerialNumber,$Username,$LogonServer = ((Get-ADComputer -identity $ComputerName -Properties *).description).split("|")
เราแบ่งค่าฟิลด์คำอธิบาย (คั่นด้วย | ) เป็นตัวแปรแยกกันหลายตัว ในการรับชื่อผู้ใช้บนคอมพิวเตอร์ระยะไกลที่ระบุ ให้เรียกใช้:
$Username
คุณสามารถรับชื่อคอมพิวเตอร์ที่ผู้ใช้รายใดรายหนึ่งเข้าสู่ระบบอยู่โดยใช้สคริปต์ PowerShell ต่อไปนี้:
$user='*M.Becker*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft