Outlook, SharePoint, Skype for Business, Office365 và các ứng dụng Microsoft khác cho phép bạn sử dụng ảnh Active Directory (hoặc Azure AD) của người dùng hiện đã đăng nhập làm hình đại diện người dùng trong giao diện của họ. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng Group Policy và PowerShell script để đặt ảnh người dùng từ Active Directory làm ảnh hồ sơ người dùng (ảnh đại diện) trong Windows 10 (Ảnh hồ sơ Windows được hiển thị trên Màn hình khóa, Màn hình chào mừng, trong Menu Bắt đầu, v.v.).
Tập lệnh của chúng tôi sẽ hoạt động như sau:khi người dùng đăng nhập vào Windows 10, một tập lệnh PowerShell phải được chạy; nó lấy ảnh của người dùng từ thuộc tính người dùng thumbnailPhoto trong Active Directory, lưu tệp hình ảnh vào ổ đĩa cục bộ và đặt tệp này làm ảnh tài khoản người dùng trong hồ sơ hiện tại. Giải pháp sẽ hoạt động trên tất cả các máy khách được hỗ trợ:Windows 10, 8.1, 7 và trên máy chủ RDS chạy Windows Server 2016/2012 R2.
Cách Đặt Ảnh cho Người dùng Active Directory?
Trước hết, đặt ảnh cho người dùng AD bằng cách tải tệp hình ảnh lên thumbnailPhoto thuộc tính của một người dùng đặc biệt. Bạn có thể đặt ảnh người dùng bằng cách sử dụng các công cụ của bên thứ ba hoặc sử dụng mô-đun ActiveDirectory cho Windows PowerShell. Xin lưu ý rằng kích thước tệp ảnh đại diện tối đa không được vượt quá 100 Kb với độ phân giải ảnh lên đến 96 × 96 pixel. Bạn có thể đặt hình ảnh tài khoản AD cho người dùng jchan
như sau:
$ photo =[byte []] (Get-Content C:\ PS \ jchan_photo.jpg -Encoding byte)
Set-ADUser jchan -Replace @ {thumbnailPhoto =$ photo}
Chúng tôi đã xem xét chi tiết cách quản lý ảnh người dùng AD bằng PowerShell trong bài viết Cách nhập ảnh người dùng vào Active Directory.
Cung cấp Quyền cho Người dùng Thay đổi Ảnh Hồ sơ trong Windows
Trong Windows 10, bạn có thể đặt ảnh hồ sơ tài khoản người dùng thông qua khóa đăng ký HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users . Tuy nhiên, người dùng không phải quản trị viên không có quyền cần thiết để thêm giá trị vào khóa đăng ký này. Để cho phép người dùng không có đặc quyền của quản trị viên thay đổi ảnh hồ sơ, bạn phải cấp cho họ quyền ghi vào khóa đăng ký này.
Dễ dàng triển khai quyền khóa đăng ký trong miền AD bằng GPO:
- Để thực hiện việc này, hãy chạy bảng điều khiển Quản lý chính sách nhóm (gpmc.msc), tạo một chính sách mới và liên kết chính sách đó với đơn vị tổ chức với máy tính của người dùng;
- Sau đó, trong trình soạn thảo GPO, hãy chuyển đến phần sau Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Cài đặt bảo mật -> Đăng ký và thêm khóa đăng ký mới ( Thêm khóa ) với đường dẫn MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users;
- Sau đó, trong tab Bảo mật, chọn Kiểm soát hoàn toàn quyền cho tất cả người dùng miền ([Tên miền] \ Người dùng) và nhấp vào OK;
- Trong cửa sổ tiếp theo, chọn tùy chọn Thay thế quyền hiện có trên tất cả các khóa phụ bằng các quyền có thể kế thừa , nếu không, người dùng sẽ không có bất kỳ đặc quyền nào đối với các khóa con đăng ký lồng nhau.
Tập lệnh PowerShell để Lấy Ảnh của Người dùng AD và Đặt Ảnh Hồ sơ Người dùng trong Windows 10
Sau đó, chúng ta cần chạy một tập lệnh PowerShell để lấy ảnh của người dùng hiện tại từ Active Directory, lưu nó vào tệp jpg và đặt nó làm ảnh hồ sơ người dùng Windows. Có hai cách để lấy ảnh người dùng từ AD. Bạn có thể sử dụng lệnh ghép ngắn Get-ADUser từ mô-đun ActiveDirectory (mô-đun này phải được cài đặt trên tất cả các máy tính thông qua RSAT hoặc bạn chỉ có thể sao chép các tệp mô-đun RSAT-AD-PowerShell cần thiết mà không cần cài đặt RSAT). Vì tập lệnh phải phổ biến và hoạt động tốt trong Windows 7, chúng tôi sẽ không sử dụng mô-đun RSAT-AD-PowerShell, nhưng chúng tôi sẽ truy cập AD thông qua lớp ADSISearcher C #.
Ví dụ về SetADPicture.ps1 script để lấy ảnh của người dùng từ AD và đặt nó làm ảnh đại diện tài khoản Windows được cung cấp bên dưới:
[CmdletBinding (SupportsShouldProcess =$ true)] Hàm Param ()
Test-Null ($ InputObject) {return! ([bool] $ InputObject)}
$ ADuser =([ADSISearcher] " (&(objectCategory =User) (SAMAccountName =$ env:username)) "). FindOne (). Thuộc tính
$ ADuser_photo =$ ADuser.thumbnailphoto
$ ADuser_sid =[System.Security.Principal.WindowsIdentity ] ::GetCurrent (). User.Value
If ((Test-Null $ ADuser_photo) -eq $ false) {
$ img_sizes =@ (32, 40, 48, 96, 192, 200, 240, 448)
$ img_mask ="Hình ảnh {0} .jpg"
$ img_base ="C:\ Users \ Public \ AccountPictures"
$ reg_base ="HKLM:\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ {0} "
$ reg_key =[string] ::format ($ reg_base, $ ADuser_sid)
$ reg_value_mask =" Hình ảnh {0} "
If ((Test-Path -Path $ reg_key) -eq $ false) {New-Item -Path $ reg_key}
Hãy thử {
ForEach ($ size tính bằng $ img_sizes) {
$ dir =$ img_base + "\" + $ ADuser_sid
If ((Test-Path -Path $ dir) -eq $ false) {$ (mkdir $ dir) .Attributes ="Hidden"}
$ fil e_name =([string] ::format ($ img_mask, $ size))
$ path =$ dir + "\" + $ file_name
Write-Verbose "save:$ file_name"
$ ADuser_photo | Set-Content -Path $ path -Encoding Byte -Force
$ name =[string] ::format ($ reg_value_mask, $ size)
$ value =New-ItemProperty -Path $ reg_key -Tên $ name -Value $ path -Force
}
}
Bắt {
Ghi-Lỗi "Kiểm tra quyền đối với tệp hoặc sổ đăng ký."
}
}
mã>
Tập lệnh nhận giá trị thuộc tính thumbnailphoto của người dùng AD hiện tại và lưu nó vào thư mục cục bộ C:\ Users \ Public \ AccountPictures \ {User SID}. Thư mục sẽ chứa các tệp có tệp hình ảnh với các độ phân giải khác nhau (từ 32 × 32 đến 448 × 448 pixel) cho các phần tử giao diện Windows 10 khác nhau:image32.jpg, image40.jpg, v.v.
Việc liên kết ảnh với hồ sơ người dùng được thực hiện thông qua tham số trong khóa đăng ký HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ {User_SID}.
Chạy Tập lệnh PowerShell để liên kết ảnh với hồ sơ bằng GPO
Bây giờ chúng ta muốn chạy tập lệnh SetADPicture.ps1 khi người dùng đăng nhập vào Windows. Làm điều đó dễ dàng hơn bằng cách sử dụng tập lệnh đăng nhập GPO.
Để thực hiện, trong chính sách đã tạo trước đó trong phần Cấu hình người dùng -> Chính sách -> Cài đặt Windows -> Tập lệnh (Đăng nhập / Logoff) tạo tập lệnh đăng nhập PowerShell mới:
- Tên tập lệnh:
% windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe
- Các tham số tập lệnh:
-Noninteractive -ExecutionPolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1
Quan trọng . Tập lệnh SetADPicture.ps1 trước đó phải được sao chép vào thư mục netlogon \ script \ trên bộ điều khiển miền.
Trong cài đặt chính sách, hãy bật chế độ xử lý lặp lại GPO (Cấu hình máy tính -> Mẫu quản trị -> Hệ thống -> Chính sách nhóm -> Định cấu hình chế độ xử lý vòng lặp chính sách nhóm của người dùng = Hợp nhất ). Trong chế độ này, bạn có thể áp dụng chính sách cho đơn vị tổ chức với tài khoản người dùng.
Bạn chỉ cần liên kết chính sách với các đơn vị tổ chức cụ thể, đăng xuất và đăng nhập lại vào Windows.
Để chẩn đoán GPO trên máy tính mục tiêu, hãy sử dụng công cụ gpresult và bài viết “Chính sách nhóm không áp dụng”.
Hình đại diện sẽ được gán cho hồ sơ người dùng Windows 10 và nó sẽ được hiển thị chính xác dưới dạng ảnh tài khoản trong menu Bắt đầu, trên Màn hình chào mừng và những nơi khác sau lần đăng nhập tiếp theo. Hướng dẫn gán ảnh hồ sơ này đã được thử nghiệm trên Windows 10 LTSC (1809).