Windows 8 – Profilbild via CMD setzen

Ich beschrieb ja schon, wie man Benutzerbilder ins AD bekommt. Nun gibt’s wieder etwas neues. Wie wird das AD-Bild in Windows 8 angezeigt ?
Normalerweise kann man das Profilbild so setzen:

Windows/PC-Einstellungen -> Anpassen -> Profilbild

Macht man es so, wird das Profilbild in 5 verschiedenen Größen in folgendem Ordner gespeichert. (Achtung: Versteckte Dateien)

C:\Users\Public\AccountPictures\S-1-5-21-141383358-124726640-2919435464-1237 (eigene USER-SID)

Ich habe noch keinen Weg gefunden die Dateien von Hand zu löschen, oder auszutauschen.
Profilbild von Hand setzen:
Einfach das Bild von Hand in den 5 verschiedenen Größen in den Ordner:

C:\Users\Public\AccountPictures\----EIGENE SID----

kopieren. Eure SID bekommt ihr via Powershell heraus:

[System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value

Bildernamen und Größen:

Image40.jpg -->  40x40px
Image96.jpg --> 96x96px
Image200.jpg --> 200x200px
Image240.jpg --> 240x240px
Image448.jpg --> 448x448px

Folgendes Powershell-Skript erstellt euch den passenden Ordner (mit SID): 

# Get Current User SID
$sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
# Create Folder
if (Test-Path ($env:PUBLIC\AccountPictures\$sid)) -eq $FALSE) {
$(mkdir $env:PUBLIC\AccountPictures\$sid).Attributes = 'Hidden'
}

Das Profilbild wird aber erst neu geladen, wenn man z.B. den PC sperrt, oder neu anmeldet. Wie man direkt das Metro Menü neu laden kann, habe ich  noch nicht herausgefunden.
Weitere nützliche Ordner:

Default Account Picture:
C:\ProgramData\Microsoft\User Account Pictures
Lockscreen
C:\Windows\Web\Screen
C:\ProgramData\Microsoft\Windows\SystemData\S-1-5-18\ReadOnly\LockScreen_Z
C:\Windows\WinSxS\long_random_file_name
C:\Users\Username\AppData\Roaming\Microsoft\Windows\LockScreen_Z
C:\Users\Public\AccountPictures

Jetzt fehlt erst einmal nur noch der Mechanismus, der das Foto aus dem Active-Directory ausliest und als .jpg abspeichert. Das kommt dann später. Eventuell gibt es auch noch einen anderen, besseren weg. (Wie z.B. über die neue API von Microsoft. Der Code für Windows 7 findet ihr hier.)

Active Directory etwas persönlicher -> Mit Fotos

Sofern man schon Office 2010 im Einsatz hat, findet man im Outlook und an anderen Stellen immer ein leeres Kontakt-Bild.

Um das aufzupeppen und es etwas persönlicher zu gesalten, kann man nun für jeden AD-User ein Foto hinterlegen.
Schlussendlich sieht es dann so aus:

Was benötigen wir dafür?
Angefanen damit, wird das Bild in den Benutzer-Attributen „thumbnail“ und „jpegPhoto“ abgespeichert. Die Bilder sollten nicht größer als 10kb sein. (Rechnet man mit 1000 Usern: 1000*10KB  werden im Globalen Katalog ca. 10 MB belegt.)
Es gibt 2 Wege das Bild ins AD zu bekommen: 1) Via GUI 2) per Powershell / Console
Für das Bearbeiten von mehreren Benutzern gleichzeitig würde ich die Powershell empfehlen. Ich habe mir folgendes Skript geschrieben, welches Bilder in einem Ordner sucht (Namensgebung: SamAccountName.jpg) und die Bilder ihren Benutzern zuordnet. Beachten, dass muss man für thumbnailPhoto und jpegPhoto machen.

$dir = Get-ChildItem C:\IT\picture\bilder
$list = $Dir | where {$_.extension -eq ".jpg"}
foreach ($file in $list)
{
$username = $file.basename
$photo = [byte[]](Get-Content $file -Encoding byte)
Set-ADUser $file.basename -Replace @{thumbnailPhoto=$photo}
}

 

Hat man nun erstmal alle Bilder drinnen, kann man später vereinzelte User noch per GUI bearbeiten. Dafür gibt es ein super Active-Directory Snapin.
Download:ADPhoto
 
 
 
 
 
 
 
 
 
Wie bekommt man jetzt seine Windows 7 Clients dazu automatisch das Profilbild des Users anzuzeigen? Da ich hier nichts einfach kopieren möchte – schaut euch dieses Howto an.

Squid Proxy – Active Directory Authentifizierung / LDAP

Diesen Beitrag musste ich einfach schreiben, mich hat es beinahe in den Wahnsinn getrieben, dass ich dieAuthentifizierung gegen eine Windows 2008 R2 Domäne auf anhieb nicht funktionieren wollte.
Ich habe mich auch an diverse Anleitungen / Howto’s gehalten, doch es klappte einfach nicht.
Beispiel, wie es in mehreren Blogs beschrieben wird:

/usr/lib/squid/group_ldap_auth -b dc=my-domain,dc=de -h "server.my-domain.de" -p 636 -g distinguishedName -d "CN=lookup,OU=Services,OU=Users,DC=my-domain,DC=de" -w lookup -u cn -m member -o group -S

oder

auth_param basic program /usr/lib/squid/ldap_auth -b o=Company -h ldapserver -D cn=Tim,ou=IT-Services,o=Company -w timspassword -f (&(objectclass=person)(cn=%s))

Bekam ich jedesmal den Fehler: Invalid Credentials for Binddn
Ich wusste, dass es also an der Authentifizierung des Users liegt, welcher das AD abfragt. (LDAP Abfragen, ohne Authentifizierung sollte ja bei jedem ausgeschaltet sein 😉
Nur warum funktioniert es nicht…..
Am nächsten Tag, habe ich das ganze nochmal mit dem LDAP Browser nachgestellt, und da ist es mir direkt ins Auge gesprungen….
Anstatt bei dem Befehl -D „CN=…..“ anzugeben, muss „DOMAINE\USERNAME“ stehen 🙂
So funktioniert es bei uns:
# Testen

admin@SQUIDSRV:/usr/lib/squid3$ ./squid_ldap_auth -R -b "DC=DOMAINE,DC=INFO" -D "DOMAINE\LDAPREADUSER" -w "PASSWORT" -f sAMAccountName=%s -h 192.168.0.1

Viele Grüße
Constey