Inhalt von AD-Attribut thumbnailPhoto als Benutzerprofilbild

Vielleicht ist dem einen oder anderen schon einmal der Gedanke gekommen, das Profilbild auch als Benutzerprofilbild in Windows zu nutzen. an sich bietet ja eine einfache Art der Datenspeicherung ins Active Directory an. Somit ist es relativ einfach das Benutzerprofilbild aus in das AD-Attribut thumnailPhoto zu exportieren. Wie aber kann man dieses Foto als Windows-Benutzerprofilbild nutzen?

Um das Benutzerprofilbild von Windows zu ändern, gibt es mehrere Möglichkeiten. Hier wird eine Variante mit PowerShell beschrieben. Dabei wird das Bild aus dem AD-Attribut thumbnailPhoto ausgelesen, ein JPG erstellt und dieses dann als Windows-Profilbild genutzt.

 

AD-Attribut per PowerShell ändern

Wer das AD-Attribut manuell ändern möchte, kann dies mit dem folgenden PowerShell-Befehl tun:

$Foto = [byte[]](Get-Content C:\Fotos\meinBild.jpg -Encoding byte)
Set-ADUser TestUser -Replace @{thumbnailPhoto=$Foto}

Windows Benutzerprofilbild aus AD-Attribut thumbnailPhoto erstellen

1. Das folgende PowerShell-Script bspw. als get-UserPhoto.ps1 speichern.
 
# akt. Benutzernamen | Domäne | Usertemp-VZ auslesen

$username=$env:username 
$domain=$env:userdomain
$temp=$env:temp

# Wenn Var $Photo nicht leer ist, dann…
if ($photo)
{
 # AD-Attribut thumbnailphoto vom akt. User auslesen
 # und in Var $Photo schreiben
 $photo = ([ADSISEARCHER]“samaccountname
     =$($username)“).findone().properties.thumbnailphoto

 # Inhalt von $Photo in JPG-Datei auf User-Temp exportieren
 $photo | set-content $temp\$domain+$username.jpg -Encoding byte

 # Windows-Profilbild aus der JPG-Datei erstellen
 $command = „\\“+$domain+“\netlogon\userPhoto.exe $domain\$username
          $temp
\$domain+$username.jpg“

 cmd /c $command
}

# Messagebox mit Statusmeldung
[void][reflection.assembly]::LoadWithPartialName
         („System.Windows.Forms“)

$result = [windows.forms.messagebox]::Show(„Script wird ausgeführt!“,
         „Set User Photo…“)

 

2. Folgenden Quellcode bspw. unter userPhoto.cs speichern
 
using System;
using System.Runtime.InteropServices;
namespace AD_Syn_thumbnailPhoto
{
  class Program
{
[DllImport(„shell32.dll“, EntryPoint = „#262“, CharSet
     =CharSet.Unicode, PreserveSig = false)]

public static extern void SetUserTile(string username, int whatever,
          string picpath);

[STAThread]
static void Main(string[] args)
{
  SetUserTile(args[0], 0, args[1]);
}}}

3. userPhoto.cs zur EXE kompilieren
à CMD à in Verzeichnis von userPhoto.cs wechseln
à mit folgendem Befehl kompilieren:
C:\Windows\Microsoft.net\Framework64\v3.5\csc.exe userPhoto.cs
 
4. userPhoto.EXE in das Logon-Verzeichnis kopieren
à hier \\demo\netlogon
 
5. Logon-Script per Gruppenrichtlinie hinzufügen
à mmc  à SnapIn hinzufügen à Gruppenrichtlinienverwaltung starten
à Rechtsklick auf Domänennamen à Gruppenrichtlinienobjekt hier erstellen und verknüpfen
à erstellte Richtlinie per Rechtklick bearbeiten
à wechseln zu Benutzerkonfigà Richtlinien à Windowsà Skripts

à Doppelklick auf Anmelden
à Register PowerShellSkripts
à Durchsuchen
à Hier im Logon-Verzeichnis jetzt das PowerShell-Script get-UserPhoto.ps1 einfügen

 

AD-Attribut thumbnailPhoto als Windows-Benutzerprofilbild verwenden

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.