Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

Outlook、SharePoint、Skype for Business、Office 365などのMicrosoftアプリケーションでは、現在ログインしているユーザーのActive Directory(またはAzure AD)の写真を、インターフェース上のアバターとして表示できます。本記事では、グループポリシー(GPO)とPowerShellスクリプトを活用して、Active Directoryに登録されたユーザー写真をWindows 10のユーザープロファイル画像(アバター)として設定する方法を解説します。Windowsのプロファイル画像は、ロック画面、ようこそ画面、スタートメニューなどに表示されます。

今回ご紹介するスクリプトの仕組みは以下の通りです。ユーザーがWindows 10にログオンするとPowerShellスクリプトが実行され、Active DirectoryのthumbnailPhoto属性からユーザーの写真を取得し、ローカルドライブに画像ファイルとして保存した上で、そのファイルを現在のプロファイルのアカウント画像として設定します。このソリューションは、Windows 10、8.1、7といったサポート対象のすべてのクライアントOS、およびWindows Server 2016/2012 R2のRDSホストで動作します。

Active Directoryユーザーに写真を設定するには?

まず、ADユーザーの写真を設定します。これは、画像ファイルをユーザーオブジェクトの特殊な属性「thumbnailPhoto」にアップロードすることで実現できます。サードパーティ製ツールを使用するか、Windows PowerShell用のActiveDirectoryモジュールを利用して設定可能です。なお、アバター画像の最大ファイルサイズは100KB以内、解像度は96×96ピクセルまでという制限がある点に注意してください。ユーザー「jchan」のADアカウント画像は、次のように設定できます。

$photo = [byte[]](Get-Content C:\PS\jchan_photo.jpg -Encoding byte)
Set-ADUser jchan -Replace @{thumbnailPhoto=$photo}

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

PowerShellを使ったADユーザー写真の管理方法については、「Active Directoryへのユーザー写真のインポート」の記事で詳しく解説していますので、併せてご参照ください。

Windowsでプロファイル画像を変更するための権限付与

Windows 10では、レジストリキーHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Usersを通じてユーザーアカウントのプロファイル画像を設定できます。しかし、管理者権限を持たない一般ユーザーには、このレジストリキーに値を書き込む権限がありません。管理者権限のないユーザーにもプロファイル画像の変更を許可するには、このレジストリキーへの書き込み権限を付与する必要があります。

ADドメイン環境では、GPOを使ってレジストリキーのアクセス許可を展開するのが最も簡単です。手順は以下の通りです。

  1. グループポリシー管理コンソール(gpmc.msc)を起動し、新しいポリシーを作成して、対象ユーザーのコンピューターが属するOUにリンクします。
  2. GPOエディターで「コンピューターの構成 → ポリシー → Windowsの設定 → セキュリティの設定 → レジストリ」セクションに移動し、新しいレジストリキー(「キーの追加」)をパス MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users で追加します。【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法
  3. 「セキュリティ」タブで、すべてのドメインユーザー([DomainName]\Users)に対して「フルコントロール」のアクセス許可をチェックし、「OK」をクリックします。
  4. 次のウィンドウで「既存のすべてのサブキーのアクセス許可を、継承可能なアクセス許可で置き換える」オプションを選択します。これを選択しない場合、ユーザーはネストされたレジストリサブキーに対して一切の権限を持てなくなります。【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

ADユーザーの写真を取得してWindows 10のプロファイル画像に設定するPowerShellスクリプト

続いて、現在のユーザーの写真をActive Directoryから取得し、jpgファイルとして保存して、Windowsのユーザープロファイル画像として設定するPowerShellスクリプトを実行します。ADからユーザー写真を取得する方法は2つあります。1つはActiveDirectoryモジュールのGet-ADUserコマンドレットを使用する方法です(このモジュールはRSAT経由ですべてのコンピューターにインストールするか、必要なRSAT-AD-PowerShellモジュールのファイルのみをコピーして使用することもできます)。ただし、スクリプトを汎用的なものにしてWindows 7でも動作させるため、ここではRSAT-AD-PowerShellモジュールを使わず、ADSISearcherクラスを通じてADにアクセスする方式を採用します。

ADからユーザーの写真を取得し、Windowsアカウントのアバター画像として設定するSetADPicture.ps1スクリプトの例を以下に示します。

[CmdletBinding(SupportsShouldProcess=$true)]Param()
function Test-Null($InputObject) { return !([bool]$InputObject) }
$ADuser = ([ADSISearcher]"(&(objectCategory=User)(SAMAccountName=$env:username))").FindOne().Properties
$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 = "Image{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 = "Image{0}"
If ((Test-Path -Path $reg_key) -eq $false) { New-Item -Path $reg_key }
Try {
ForEach ($size in $img_sizes) {
$dir = $img_base + "\" + $ADuser_sid
If ((Test-Path -Path $dir) -eq $false) { $(mkdir $dir).Attributes = "Hidden" }
$file_name = ([string]::format($img_mask, $size))
$path = $dir + "\" + $file_name
Write-Verbose " saving: $file_name"
$ADuser_photo | Set-Content -Path $path -Encoding Byte -Force
$name = [string]::format($reg_value_mask, $size)
$value = New-ItemProperty -Path $reg_key -Name $name -Value $path -Force
}
}
Catch {
Write-Error "Check permissions to files or registry."
}
}

このスクリプトは、現在のADユーザーのthumbnailphoto属性の値を取得し、ローカルフォルダー「C:\Users\Public\AccountPictures\{ユーザーSID}」に保存します。フォルダー内には、Windows 10の各種インターフェース要素向けに異なる解像度(32×32〜448×448ピクセル)の画像ファイル(image32.jpg、image40.jpgなど)が格納されます。

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

写真とユーザープロファイルの紐付けは、レジストリキー HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{ユーザーSID} のパラメーターを通じて行われます。

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

GPOを使って写真をプロファイルに紐付けるPowerShellスクリプトの実行

次に、ユーザーがWindowsにログオンした際にSetADPicture.ps1スクリプトが実行されるように設定します。これにはGPOのログオンスクリプトを利用するのが最も簡単です。

先ほど作成したポリシーの「ユーザーの構成 → ポリシー → Windowsの設定 → スクリプト(ログオン/ログオフ)」セクションで、新しいPowerShellログオンスクリプトを作成します。

  • スクリプト名:%windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • スクリプトのパラメーター:-Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

重要:SetADPicture.ps1スクリプトは、事前にドメインコントローラーのnetlogon\script\フォルダーにコピーしておく必要があります。

さらに、ポリシー設定でGPOループバック処理モードを有効にします(「コンピューターの構成 → 管理用テンプレート → システム → グループポリシー → ユーザー グループ ポリシー ループバック処理モードの構成」=「結合」)。このモードでは、ユーザーアカウントが属するOUにポリシーを適用できます。【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

あとは、ポリシーを対象のOUにリンクし、一度Windowsからログオフして再度ログオンするだけです。

ターゲットコンピューター上でのGPOのトラブルシューティングには、gpresultツールや「グループポリシーが適用されない場合の対処法」に関する記事をご活用ください。

【Windows 10】Active Directoryのユーザー写真をプロファイル画像(アバター)として設定する方法

次回のログオン後、Windows 10のユーザープロファイルにアバターが割り当てられ、スタートメニュー、ようこそ画面などの各所でアカウント画像として正しく表示されるようになります。このプロファイル写真の設定手順は、Windows 10 LTSC(1809)で検証済みです。

  1. Windows 11でPowerToysを使いこなす方法!インストール手順と11個の便利ツールを徹底解説

    PowerToysは、ユーザーがより整理された効率的な作業を実現できるようにするソフトウェアです。豊富な機能を自由にカスタマイズ・追加でき、上級者向けに開発されましたが、多くの機能は誰でも活用できます。もともとはWindows 95向けに初めてリリースされたものであり、現在ではWindows 11にも対応しています。従来のように各ツールを個別にダウンロードする必要はなく、Windows 11ではすべてのツールがPowerToysという単一のソフトウェアから利用できるようになりました。本記事では、Windows 11でPowerToysを使用する方法をわかりやすく解説します。 Windows 1

  2. Windows 10でアカウントのプロフィール写真を変更する方法【ローカル・Microsoftアカウント対応】

    Windows 10の現在のプロフィール写真に飽きてしまったら、そろそろ別の画像に変更してみませんか。変更手順は、ローカルアカウントを使用しているか、Microsoftアカウントを使用しているかによって異なります。 ローカルアカウントの手順はこのまま読み進めてください。クラウド接続されたMicrosoftアカウントをお使いの場合は、「Microsoftアカウント」のセクションまでスキップしても構いません。どちらに該当するかわからない場合は、まず以下の手順から始めましょう。 ローカルアカウントの場合 ローカルアカウントのプロフィール写真は、標準の「設定」アプリから管理できます。スタートメニューか