Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?

Bạn có thể lưu trữ các thông tin hữu ích khác nhau trong phần mô tả các đối tượng máy tính trong Active Directory. Ví dụ:thông tin về kiểu máy tính, kho phần cứng hoặc tên người dùng đăng nhập lần cuối. Trong bài viết này, chúng ta sẽ xem xét cách tự động điền và cập nhật thông tin trong Mô tả trường đối tượng máy tính trong Active Directory bằng PowerShell.

Cập nhật Trường Mô tả Máy tính trong Active Directory bằng PowerShell

Ví dụ:bạn muốn trường Mô tả cho máy tính và máy chủ trong bảng điều khiển Máy tính và Người dùng Active Directory hiển thị thông tin về nhà sản xuất, kiểu máy và số sê-ri của máy tính. Bạn có thể lấy thông tin này trên máy cục bộ của mình từ WMI bằng lệnh PowerShell sau:
Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber
Truy vấn WMI trả về dữ liệu sau:

  • Nhà cung cấp - HP
  • Tên - Proliant DL 360 G5
  • Số nhận dạng - CZJ733xxxx

Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?

Lấy tên của máy tính hiện tại từ biến môi trường và gán nó cho $computer biến:

$computer = $env:COMPUTERNAME

Sau đó, lưu thông tin về phần cứng của máy tính:

$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber

Hãy xem những giá trị nào được chỉ định cho các biến:

$computer
$vendor
$Model
$SerialNumber

Nó vẫn là để ghi dữ liệu đã nhận vào trường Mô tả của tài khoản máy tính trong Active Directory. Chạy tập lệnh PowerShell sau:

$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()

Bạn cũng có thể thực hiện các thay đổi đối với mô tả máy tính bằng lệnh ghép ngắn Set-ADComputer. Tuy nhiên, điều này yêu cầu phải cài đặt Mô-đun Active Directory cho Windows PowerShell (từ bộ công cụ quản trị RSAT) trên máy tính.
Set-ADComputer $computer –Description "$vendor|$Model|$SerialNumber”

Nếu bạn muốn sử dụng các lệnh ghép ngắn từ mô-đun AD PowerShell, bạn có thể sao chép tệp mô-đun vào tất cả các máy tính mà không cần cài đặt RSAT.

Xác minh rằng trường Mô tả máy tính trong bảng điều khiển ADUC hiển thị thông tin về nhà sản xuất và kiểu máy.

Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?

Tập lệnh như vậy sẽ chỉ cập nhật thuộc tính mô tả máy tính hiện tại trong AD. Bạn có thể điền Mô tả từ xa cho tất cả các máy tính trong miền bằng Get-ADComputer và foreach vòng. Nhưng sẽ thuận tiện hơn nhiều nếu máy tính tự động cập nhật thông tin của họ trong AD khi người dùng đăng nhập hoặc máy tính khởi động.

Để thực hiện việc này, bạn cần tạo Chính sách Nhóm với tập lệnh đăng nhập PowerShell và áp dụng nó cho tất cả các máy tính:

  1. Mở Bảng điều khiển Quản lý Chính sách Nhóm miền (gpmc.msc ), tạo GPO và gán nó cho OU bằng máy tính;
  2. Mở rộng GPO: Cấu hình người dùng -> Chính sách -> Cài đặt Windows -> Tập lệnh (Đăng nhập / Logoff) -> Đăng nhập;
  3. Đi tới Tập lệnh PowerShell tab ;
  4. Nhấp vào nút Hiển thị tệp và tạo nút FillCompDesc.ps1 tệp có mã sau:
    # 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()

    Bạn có thể tùy chọn ghi nhật ký các hành động của tập lệnh PowerShell để khắc phục sự cố dễ dàng hơn.
  5. Nhấp vào Thêm và đặt các thông số tập lệnh sau:
    Tên tập lệnh:FillCompDesc.ps1 Tham số tập lệnh
    :-ExecutionPolicy Bypass Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory? Trong trường hợp này, bạn không phải thay đổi cài đặt chính sách thực thi PowerShell hoặc ký tệp tập lệnh PS1 của bạn thành chạy tập lệnh PowerShell.
  6. Ủy quyền quyền AD cho một đơn vị tổ chức cụ thể để Đã xác thực Người dùng nhóm miền. Gán quyền thay đổi thuộc tính Mô tả của tất cả các đối tượng Máy tính trong đơn vị tổ chức (Write Description sự cho phép). Điều này sẽ cho phép người dùng miền và máy tính thay đổi giá trị trong thuộc tính Mô tả của các đối tượng máy tính; Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?
  7. Sau khi khởi động lại máy tính trong đơn vị tổ chức đích và cập nhật cài đặt Chính sách Nhóm, trường Mô tả trong AD sẽ tự động được điền. Trường này sẽ chứa thông tin về phần cứng của máy tính. Bạn có thể khắc phục sự cố GPO bằng gpresult hoặc sử dụng các mẹo từ bài viết Các sự cố thường gặp khiến chính sách nhóm không áp dụng được.

Do đó, bạn có thể thêm bất kỳ thông tin nào trong trường Mô tả của các đối tượng máy tính trong AD. Ví dụ:tên của người dùng đăng nhập gần đây nhất, phòng ban (bạn có thể lấy thông tin này bằng cách sử dụng lệnh ghép ngắn Get-ADUser), địa chỉ IP của máy tính hoặc bất kỳ thông tin liên quan nào khác mà bạn cần.

Lưu ý . Hạn chế của phương pháp này là bất kỳ người dùng AD đã xác thực nào cũng có thể thay đổi hoặc xóa mô tả của bất kỳ máy tính nào trong Active Directory.

Thêm Tên người dùng Đăng nhập Lần cuối vào Mô tả Máy tính trong AD

Tập lệnh PowerShell ở trên có thể được sử dụng để thêm bất kỳ thông tin nào khác vào mô tả của các đối tượng máy tính trong AD. Ví dụ:sẽ hữu ích khi mô tả của máy tính hiển thị người dùng hiện đang đăng nhập. Cũng hãy thêm tên của bộ điều khiển miền mà người dùng được xác thực (LOGONSERVER ).

Thay đổi một dòng trong tập lệnh đăng nhập PowerShell thành:

$computerObj.Put("Description","$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")

Đăng xuất và đăng nhập bằng tài khoản người dùng của bạn. Kiểm tra xem thuộc tính mô tả máy tính hiện có hiển thị tên của người dùng hiện tại và máy chủ đăng nhập (bộ điều khiển miền) mà bạn đã xác thực hay không.

Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?

Để phân tích cú pháp dữ liệu từ thuộc tính Mô tả, bạn có thể sử dụng mã PowerShell sau:

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

Chúng tôi tách giá trị trường Mô tả (phân tách bằng | ) thành một số biến riêng biệt. Để lấy tên người dùng trên máy tính từ xa được chỉ định, chỉ cần chạy:

$Username

Làm thế nào để Tự động điền Mô tả Máy tính trong Active Directory?

Bạn có thể lấy tên của máy tính mà một người dùng cụ thể hiện đang đăng nhập bằng cách sử dụng tập lệnh PowerShell sau:

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