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ấ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()
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.
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:
- 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; - 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;
- Đi tới Tập lệnh PowerShell tab ;
- 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. - 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
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. - Ủ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; - 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.
Để 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
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