Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?

คุณสามารถเก็บข้อมูลที่เป็นประโยชน์ต่างๆ ไว้ในคำอธิบายของออบเจ็กต์คอมพิวเตอร์ใน 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

วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?

รับชื่อของคอมพิวเตอร์ปัจจุบันจากตัวแปรสภาพแวดล้อมและกำหนดให้กับ $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 cmdlet อย่างไรก็ตาม สิ่งนี้จำเป็นต้องติดตั้ง Active Directory Module สำหรับ Windows PowerShell (จากชุดเครื่องมือการดูแลระบบ RSAT) บนคอมพิวเตอร์
Set-ADComputer $computer –Description "$vendor|$Model|$SerialNumber”

หากคุณต้องการใช้ cmdlet จากโมดูล AD PowerShell คุณสามารถคัดลอกไฟล์โมดูลไปยังคอมพิวเตอร์ทุกเครื่องโดยไม่ต้องติดตั้ง RSAT

ตรวจสอบว่าช่องคำอธิบายคอมพิวเตอร์ในคอนโซล ADUC แสดงข้อมูลผู้ผลิตและรุ่น

วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?

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

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

  1. เปิดคอนโซลการจัดการนโยบายกลุ่มของโดเมน (gpmc.msc ) สร้าง GPO และกำหนดให้กับ OU ด้วยคอมพิวเตอร์
  2. ขยาย GPO:การกำหนดค่าผู้ใช้ -> นโยบาย -> การตั้งค่า Windows -> สคริปต์ (การเข้าสู่ระบบ / ออกจากระบบ) -> การเข้าสู่ระบบ;
  3. ไปที่ สคริปต์ PowerShell แท็บ;
  4. คลิกปุ่ม แสดงไฟล์ และสร้าง 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 เพื่อให้แก้ไขปัญหาได้ง่ายขึ้น
  5. คลิกปุ่ม เพิ่ม และตั้งค่าพารามิเตอร์สคริปต์ต่อไปนี้:
    ชื่อสคริปต์:FillCompDesc.ps1
    พารามิเตอร์สคริปต์:-ExecutionPolicy Bypass วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ? ในกรณีนี้ คุณไม่จำเป็นต้องเปลี่ยนการตั้งค่านโยบายการดำเนินการของ PowerShell หรือลงชื่อในไฟล์สคริปต์ PS1 เรียกใช้สคริปต์ PowerShell
  6. มอบสิทธิ์ AD ให้กับ OU เฉพาะสำหรับ Authenticated ผู้ใช้ กลุ่มโดเมน กำหนดสิทธิ์ในการเปลี่ยนแปลงแอตทริบิวต์คำอธิบายของวัตถุคอมพิวเตอร์ทั้งหมดใน OU (Write Description การอนุญาต). ซึ่งจะอนุญาตให้ผู้ใช้โดเมนและคอมพิวเตอร์เปลี่ยนค่าในแอตทริบิวต์ Description ของวัตถุคอมพิวเตอร์ วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?
  7. หลังจากรีสตาร์ทคอมพิวเตอร์ใน 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")

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

วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?

เพื่อแยกวิเคราะห์ข้อมูลจากแอตทริบิวต์ Description คุณสามารถใช้รหัส PowerShell ต่อไปนี้:

$ComputerName = 'PC-MUN22s7b2'
$vendor,$Model,$SerialNumber,$Username,$LogonServer = ((Get-ADComputer -identity  $ComputerName -Properties *).description).split("|")

เราแบ่งค่าฟิลด์คำอธิบาย (คั่นด้วย | ) เป็นตัวแปรแยกกันหลายตัว ในการรับชื่อผู้ใช้บนคอมพิวเตอร์ระยะไกลที่ระบุ ให้เรียกใช้:

$Username

วิธีการกรอกรายละเอียดคอมพิวเตอร์ใน Active Directory โดยอัตโนมัติ?

คุณสามารถรับชื่อคอมพิวเตอร์ที่ผู้ใช้รายใดรายหนึ่งเข้าสู่ระบบอยู่โดยใช้สคริปต์ PowerShell ต่อไปนี้:

$user='*M.Becker*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft