<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=ZnilTools%3AImportThumbnailPhoto.exe</id>
	<title>ZnilTools:ImportThumbnailPhoto.exe - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=ZnilTools%3AImportThumbnailPhoto.exe"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=ZnilTools:ImportThumbnailPhoto.exe&amp;action=history"/>
	<updated>2026-04-20T16:22:23Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=ZnilTools:ImportThumbnailPhoto.exe&amp;diff=10118&amp;oldid=prev</id>
		<title>BLinz: /* Programmhilfe */</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=ZnilTools:ImportThumbnailPhoto.exe&amp;diff=10118&amp;oldid=prev"/>
		<updated>2017-11-06T12:23:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Programmhilfe&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Changelog:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* 06.11.2017 : Erste Version 1.0.0.15&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Download:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt; [[Media:ImportThumbnailPhoto.zip|ImportThumbnailPhoto.zip]]&lt;br /&gt;
----&lt;br /&gt;
==Was macht es?==&lt;br /&gt;
Dem Tool &amp;lt;code&amp;gt;ImportThumbnailPhoto.exe&amp;lt;/code&amp;gt; kann man entweder einen Benutzernamen + Bilddatei übergeben. Dann wird das Bild dieses Benutzers geändert.&amp;lt;br&amp;gt;&lt;br /&gt;
Oder gleich einen Ordner mit Bildern.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bilder in dem Ordner müssen das Schema&amp;lt;br&amp;gt;&lt;br /&gt;
 sAMAccountName.png&lt;br /&gt;
 oder&lt;br /&gt;
 sAMAccountName.jpg&lt;br /&gt;
haben. das Tool sucht für jeden Dateinamen nach einen passenden Active Directory Benutzer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
* Muss innerhalb der Domäne ausgeführt werden in die Bilder gesetzt werden sollen&lt;br /&gt;
* Muss Benutzer mit Berechtigung zum Ändern der AD-Konten sein (Domänen-Administrator)&lt;br /&gt;
* Bilder maximal 100KByte&lt;br /&gt;
* Bilder nicht zu groß und quadratisch. 300x300 Pixel scheint eine gute Größe zu sein&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Programmhilfe==&lt;br /&gt;
&amp;lt;source lang=DOS&amp;gt;&lt;br /&gt;
C:\_AutoIt\Active Directory\ProfilePicture&amp;gt;ImportThumbnailPhoto.exe&lt;br /&gt;
+------------------------------------------------------------------------------&lt;br /&gt;
| ImportThumbnailPhoto - Version 1.0.0.15&lt;br /&gt;
+------------------------------------------------------------------------------&lt;br /&gt;
| 2017/18 by Bernhard Linz for http://znil.net - Contact: Bernhard@znil.net&lt;br /&gt;
+------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Importiert .jpg oder .png mit einer Größe von maximal 100KByte in&lt;br /&gt;
das Active-Directory Attribut &amp;#039;tumbnailPhoto&amp;#039; eines Benutzers.&lt;br /&gt;
&lt;br /&gt;
Change single User-Photo:&lt;br /&gt;
-------------------------&lt;br /&gt;
ImportThumbnailPhoto.exe [sAMAccountName] [Path_to_jpg_org_png]&lt;br /&gt;
 [sAMAccountName]      : Login-Name of User like &amp;#039;Max.Mustermann&amp;#039;&lt;br /&gt;
 [Path_to_jpg_org_png] : Path like &amp;#039;D:\Pictures\Mustermann.png&amp;#039;&lt;br /&gt;
                         or &amp;#039;\\Server\Share\Folder\Mustermann.png&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bulk import Photos:&lt;br /&gt;
-------------------&lt;br /&gt;
ImportThumbnailPhoto.exe [Path_to_Folder]&lt;br /&gt;
 [Path_to_Folder]      : Folder will scan for all .jpg and .png&lt;br /&gt;
                         Use Name-Schema &amp;#039;sAMAccountName.jpg&amp;#039; or&lt;br /&gt;
                         &amp;#039;sAMAccountName.png&amp;#039;. Tool will search for&lt;br /&gt;
                         AD-Account for every Photo and Update the&lt;br /&gt;
                         thumbnailPhoto Attribut&lt;br /&gt;
&lt;br /&gt;
+------------------------------------------------------------------------------&lt;br /&gt;
| ImportThumbnailPhoto.exe is FREEWARE! Copy and use explicitly allowed!&lt;br /&gt;
| The latest version and instructions can be found at:&lt;br /&gt;
| https://znil.net/index.php?title=ZnilTools:ImportThumbnailPhoto.exe&lt;br /&gt;
+------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Beispielausgabe==&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Einzelner Benutzer:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 C:\_AutoIt\Active Directory\ProfilePicture&amp;gt;ImportThumbnailPhoto.exe Bernhard D:\Dropbox\Icons\Face-Avatars-by-deleket\Males\A05.png&lt;br /&gt;
 Updated: Bernhard &amp;lt;== D:\Dropbox\Icons\Face-Avatars-by-deleket\Males\A05.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Ordnerimport:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 C:\_AutoIt\Active Directory\ProfilePicture&amp;gt;ImportThumbnailPhoto.exe \\DC02\Netlogon\thumbnailPhoto&lt;br /&gt;
 Photos / User found: 7&lt;br /&gt;
 &lt;br /&gt;
  Status   sAMAccountName                     Path fo Photo&lt;br /&gt;
 -------------------------------------------------------------------------------&lt;br /&gt;
  OK       andre.krueger                  &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\andre.krueger.png&lt;br /&gt;
  OK       Bernhard                       &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\Bernhard.png&lt;br /&gt;
  OK       Margarethe.Minderman           &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\Margarethe.Minderman.png&lt;br /&gt;
  OK       Silke.Landwehr                 &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\Silke.Landwehr.png&lt;br /&gt;
  OK       thomas.landwehr                &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\thomas.landwehr.png&lt;br /&gt;
  NoUser   Unbekannter.Name               &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\Unbekannter.Name.png&lt;br /&gt;
  OK       Yasmin                         &amp;lt;== \\DC02\Netlogon\thumbnailPhoto\Yasmin.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
Beinhaltet die .exe, den Quellcode + UDF sowie das Icon:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Download:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt; [[Media:ImportThumbnailPhoto.zip|ImportThumbnailPhoto.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Quellcode==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;AutoIt&amp;quot;&amp;gt;&lt;br /&gt;
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
#AutoIt3Wrapper_Icon=Icon256-32.ico&lt;br /&gt;
#AutoIt3Wrapper_Change2CUI=y&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion=1.0.0.16&lt;br /&gt;
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y&lt;br /&gt;
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****&lt;br /&gt;
Opt(&amp;#039;MustDeclareVars&amp;#039;, 1)&lt;br /&gt;
#include &amp;quot;AD.au3&amp;quot;&lt;br /&gt;
#include &amp;lt;Array.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;File.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Global $s_sAMAccountName = &amp;quot;&amp;quot;&lt;br /&gt;
Global $s_PhotoPath = &amp;quot;&amp;quot;&lt;br /&gt;
Global $a_s_PictureFilenames[1]&lt;br /&gt;
Global $h_Picture&lt;br /&gt;
Global $s_Picture&lt;br /&gt;
&lt;br /&gt;
;                             10        20        30        40        50        60        70        80&lt;br /&gt;
;         			 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Global $Header = 	&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
					&amp;quot;| ImportThumbnailPhoto - Version &amp;quot; &amp;amp; FileGetVersion(@ScriptName) &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
					&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
					&amp;quot;| 2017/18 by Bernhard Linz for http://znil.net - Contact: Bernhard@znil.net&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
					&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
					@CRLF&lt;br /&gt;
&lt;br /&gt;
;                                10        20        30        40        50        60        70        80&lt;br /&gt;
;                 	  	 12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
Global $HilfeText = 	&amp;quot;Importiert .jpg oder .png mit einer Größe von maximal 100KByte in&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;das Active-Directory Attribut &amp;#039;tumbnailPhoto&amp;#039; eines Benutzers.&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						@CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;Change single User-Photo:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;-------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;ImportThumbnailPhoto.exe [sAMAccountName] [Path_to_jpg_org_png]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot; [sAMAccountName]      : Login-Name of User like &amp;#039;Max.Mustermann&amp;#039;&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot; [Path_to_jpg_org_png] : Path like &amp;#039;D:\Pictures\Mustermann.png&amp;#039;&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;                         or &amp;#039;\\Server\Share\Folder\Mustermann.png&amp;#039;&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						@CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;Bulk import Photos:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;-------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;ImportThumbnailPhoto.exe [Path_to_Folder]&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot; [Path_to_Folder]      : Folder will scan for all .jpg and .png&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;                         Use Name-Schema &amp;#039;sAMAccountName.jpg&amp;#039; or&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;                         &amp;#039;sAMAccountName.png&amp;#039;. Tool will search for&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;                         AD-Account for every Photo and Update the&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;                         thumbnailPhoto Attribut&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						@CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;| ImportThumbnailPhoto.exe is FREEWARE! Copy and use explicitly allowed!&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;| The latest version and instructions can be found at:&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;| https://znil.net/index.php?title=ZnilTools:ImportThumbnailPhoto.exe&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
						&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; F U N C T I O N E N / S U B R O U T I N E N&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; _ANSI2OEM löst das Problem mit dem Umlauten und anderen Sonderzeichen. Es wandelt Text so um das er korrekt in der DOS-Box dargestellt wird&lt;br /&gt;
; So können hier im Quellcode auch Umlaute verwendet werden (in den Textausgaben) und diese werden dann korrekt dargestellt&lt;br /&gt;
; Wir zudem für die Prüfung der Gruppenzugehörigkeit benötigt für Gruppen mit Umlauten, z.B. Domänen-Admins&lt;br /&gt;
; Dank an Xenobiologist von AutoIt.de für diese Lösung: http://www.autoit.de/index.php?page=Thread&amp;amp;threadID=9461&amp;amp;highlight=ANSI2OEM&lt;br /&gt;
&lt;br /&gt;
Func _ANSI2OEM($text)&lt;br /&gt;
	$text = DllCall(&amp;#039;user32.dll&amp;#039;, &amp;#039;Int&amp;#039;, &amp;#039;CharToOem&amp;#039;, &amp;#039;str&amp;#039;, $text, &amp;#039;str&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	Return $text[2]&lt;br /&gt;
	;Return $text&lt;br /&gt;
EndFunc   ;==&amp;gt;_ANSI2OEM&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Hilfsroutine die den Hilfetext ausgibt&lt;br /&gt;
Func _HilfeAusgeben()&lt;br /&gt;
	;_WinAPI_AttachConsole()&lt;br /&gt;
	;$ZeigerConsole = _WinAPI_GetStdHandle(1)&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($Header))&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($HilfeText))&lt;br /&gt;
	;_WinAPI_AttachConsole()&lt;br /&gt;
	;$ZeigerConsole = _WinAPI_GetStdHandle(1)&lt;br /&gt;
	;_WinAPI_WriteConsole($ZeigerConsole,$Header)&lt;br /&gt;
	;_WinAPI_WriteConsole($ZeigerConsole,$HilfeText)&lt;br /&gt;
	;_WinAPI_WriteConsole($ZeigerConsole,@CRLF)&lt;br /&gt;
	;Send(&amp;quot;{Enter}&amp;quot;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_HilfeAusgeben&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Hilfsroutine damit ich nicht jedesmal das ANSI2OEM und das @CRLF im Code eingeben muss&lt;br /&gt;
Func _MeldungAusgebenConsole($Meldungstext)&lt;br /&gt;
	ConsoleWrite(_ANSI2OEM($Meldungstext) &amp;amp; @CRLF)&lt;br /&gt;
	;_WinAPI_AttachConsole()&lt;br /&gt;
	;$ZeigerConsole = _WinAPI_GetStdHandle(1)&lt;br /&gt;
	;_WinAPI_WriteConsole($ZeigerConsole, $Fehlertext)&lt;br /&gt;
	;Send(&amp;quot;{Enter}&amp;quot;)&lt;br /&gt;
EndFunc   ;==&amp;gt;_MeldungAusgebenConsole&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Im Prinzip das selbe wie MeldungAusgebenConsole - ich fand die Fehlermeldungen aber&lt;br /&gt;
; zu unauffällig und habe diese hiermit auffälliger gestaltet&lt;br /&gt;
Func _FehlerAusgeben($FehlerUeberschrift, $Fehlertext)&lt;br /&gt;
	;_WinAPI_AttachConsole()&lt;br /&gt;
	;$ZeigerConsole = _WinAPI_GetStdHandle(1)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+----------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;| &amp;quot; &amp;amp; _ANSI2OEM($FehlerUeberschrift) &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;| &amp;quot; &amp;amp; _ANSI2OEM($Fehlertext) &amp;amp; @CRLF)&lt;br /&gt;
	ConsoleWrite(&amp;quot;+------------------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
EndFunc   ;==&amp;gt;_FehlerAusgeben&lt;br /&gt;
&lt;br /&gt;
; ###############################################################################################################################################################################################&lt;br /&gt;
;~       ____                          _           _____ _ _      _     _     _  _____       _&lt;br /&gt;
;~      |  _ \ ___  ___ _   _ _ __ ___(_)_   _____|  ___(_) | ___| |   (_)___| ||_   _|__   / \   _ __ _ __ __ _ _   _&lt;br /&gt;
;~      | |_) / _ \/ __| | | | &amp;#039;__/ __| \ \ / / _ \ |_  | | |/ _ \ |   | / __| __|| |/ _ \ / _ \ | &amp;#039;__| &amp;#039;__/ _` | | | |&lt;br /&gt;
;~      |  _ &amp;lt;  __/ (__| |_| | |  \__ \ |\ V /  __/  _| | | |  __/ |___| \__ \ |_ | | (_) / ___ \| |  | | | (_| | |_| |&lt;br /&gt;
;~  ____|_| \_\___|\___|\__,_|_|  |___/_| \_/ \___|_|   |_|_|\___|_____|_|___/\__||_|\___/_/   \_\_|  |_|  \__,_|\__, |&lt;br /&gt;
;~ |_____|                                                                                                       |___/&lt;br /&gt;
;===============================================================================&lt;br /&gt;
; Function Name:   _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $fRecursion][, $sDelim])&lt;br /&gt;
; Description::    gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen&lt;br /&gt;
; Parameter(s):    $sPath = Startverzeichnis&lt;br /&gt;
;                  $sPattern = ein beliebiges RexExp-Pattern für die Auswahl&lt;br /&gt;
;                  $iFlag = Auswahl&lt;br /&gt;
;                           0 = Dateien &amp;amp; Verzeichnisse&lt;br /&gt;
;                           1 = nur Dateien&lt;br /&gt;
;                           2 = nur Verzeichnisse&lt;br /&gt;
;                  $iFormat = Rückgabeformat&lt;br /&gt;
;                             0 = String&lt;br /&gt;
;                             1 = Array mit [0] = Anzahl&lt;br /&gt;
;                             2 = Nullbasiertes Array&lt;br /&gt;
;                  $fRecursion = Verzeichnisse rekursiv durchsuchen&lt;br /&gt;
;                                False = Nein&lt;br /&gt;
;                                True = Ja&lt;br /&gt;
;                  $sDelim = Trennzeichen für die String-Rückgabe&lt;br /&gt;
; Requirement(s):  AutoIt 3.3.0.0&lt;br /&gt;
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen&lt;br /&gt;
; Author(s):       Oscar (www.autoit.de)&lt;br /&gt;
;                  Anregungen von: bernd670 (www.autoit.de)&lt;br /&gt;
;                             und: AspirinJunkie (www.autoit.de)&lt;br /&gt;
;===============================================================================&lt;br /&gt;
; Oscars Funktion ist 4x schneller als das was ich sonst benutzt habe (bei 6000 Dateien statt 2 sec nur 0,05 sec)&lt;br /&gt;
Func _RecursiveFileListToArray($sPath, $sPattern = &amp;#039;&amp;#039;, $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)&lt;br /&gt;
	Local $hSearch, $sFile, $sReturn = &amp;#039;&amp;#039;, $aD&lt;br /&gt;
	Local Static $hDll&lt;br /&gt;
	If StringRight($sPath, 1) &amp;lt;&amp;gt; &amp;#039;\&amp;#039; Then $sPath &amp;amp;= &amp;#039;\&amp;#039;&lt;br /&gt;
	$hSearch = FileFindFirstFile($sPath &amp;amp; &amp;#039;*&amp;#039;)&lt;br /&gt;
	If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)&lt;br /&gt;
	If $fOpenDLL Then $hDll = DllOpen(&amp;#039;kernel32.dll&amp;#039;)&lt;br /&gt;
	While True&lt;br /&gt;
		$sFile = FileFindNextFile($hSearch)&lt;br /&gt;
		If @error Then ExitLoop&lt;br /&gt;
		If @extended Then&lt;br /&gt;
			$aD = DllCall($hDll, &amp;#039;dword&amp;#039;, &amp;#039;GetFileAttributesW&amp;#039;, &amp;#039;wstr&amp;#039;, $sPath &amp;amp; $sFile)&lt;br /&gt;
			If @error Or BitAND($aD[0], 0x400) Then ContinueLoop&lt;br /&gt;
			If StringRegExp($sPath &amp;amp; $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &amp;amp;= $sPath &amp;amp; $sFile &amp;amp; &amp;#039;\&amp;#039; &amp;amp; $sDelim&lt;br /&gt;
			If $fRecursion Then $sReturn &amp;amp;= _RecursiveFileListToArray($sPath &amp;amp; $sFile &amp;amp; &amp;#039;\&amp;#039;, $sPattern, $iFlag, 0, True, $sDelim, False)&lt;br /&gt;
			ContinueLoop&lt;br /&gt;
		EndIf&lt;br /&gt;
		If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &amp;amp;= $sPath &amp;amp; $sFile &amp;amp; $sDelim&lt;br /&gt;
	WEnd&lt;br /&gt;
	FileClose($hSearch)&lt;br /&gt;
	If $fOpenDLL Then DllClose($hDll)&lt;br /&gt;
	If $iFormat And $sReturn = &amp;#039;&amp;#039; Then Return SetError(0, 1, StringSplit($sReturn, &amp;#039;&amp;#039;, $iFormat))&lt;br /&gt;
	If $iFormat Then Return SetError(0, 2, StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat))&lt;br /&gt;
	Return $sReturn&lt;br /&gt;
EndFunc   ;==&amp;gt;_RecursiveFileListToArray&lt;br /&gt;
&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; H A U P T P R O G R A M M&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
; ######################################################################################################################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; H I L F E&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
&lt;br /&gt;
;testen ob wir überhaupt mit einem Parameter gestartet wurden - sonst Hilfe ausgeben&lt;br /&gt;
If $CmdLine[0] = 0 Then&lt;br /&gt;
	_HilfeAusgeben()&lt;br /&gt;
	Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
;testen ob der Parameter 1 ist auf &amp;quot;/?&amp;quot; testen und ebenfalls Hilfe ausgeben&lt;br /&gt;
If $CmdLine[1] = &amp;quot;/?&amp;quot; Then&lt;br /&gt;
	_HilfeAusgeben()&lt;br /&gt;
	Exit&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Benutzer &amp;lt;== Bild&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Testen ob es 2 Parameter sind und entsprechend handeln:&lt;br /&gt;
If $CmdLine[0] = 2 Then&lt;br /&gt;
	$s_sAMAccountName = $CmdLine[1]&lt;br /&gt;
	$s_PhotoPath = $CmdLine[2]&lt;br /&gt;
	; Testen ob es das Bild überhaupt gibt:&lt;br /&gt;
	If FileExists($s_PhotoPath) = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;File not found:&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	; Testen ob .jpg oder .png&lt;br /&gt;
	If StringRight($s_PhotoPath, 4) &amp;lt;&amp;gt; &amp;quot;.jpg&amp;quot; And StringRight($s_PhotoPath, 4) &amp;lt;&amp;gt; &amp;quot;.png&amp;quot; Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;File is not .jpg or .png:&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	; Dateigröße testen:&lt;br /&gt;
	If FileGetSize($s_PhotoPath) &amp;gt; 102400 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;File greater than 100KByte:&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	; Ok, Datei ist in Ordnung - einlesen!&lt;br /&gt;
	$h_Picture = FileOpen($s_PhotoPath, 16)&lt;br /&gt;
	If $h_Picture = (-1) Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Unable to open file:&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	$s_Picture = FileRead($h_Picture)&lt;br /&gt;
	FileClose($h_Picture)&lt;br /&gt;
	; Jetzt dem Benutzer aktualisieren&lt;br /&gt;
	_AD_Open()&lt;br /&gt;
	Local $i_Return = _AD_ModifyAttribute($s_sAMAccountName,&amp;quot;thumbnailPhoto&amp;quot;,$s_Picture)&lt;br /&gt;
	If $i_Return = 1 Then&lt;br /&gt;
		_MeldungAusgebenConsole(&amp;quot;Updated: &amp;quot; &amp;amp; $s_sAMAccountName &amp;amp; &amp;quot; &amp;lt;== &amp;quot; &amp;amp; $s_PhotoPath)&lt;br /&gt;
		_AD_Close()&lt;br /&gt;
		Exit 0&lt;br /&gt;
	Else&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;User not found or AD-Error:&amp;quot;, $s_sAMAccountName)&lt;br /&gt;
		_AD_Close()&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
EndIf&lt;br /&gt;
&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Ordner mit Bildern =&amp;gt; Benutzer&lt;br /&gt;
; ###################################################################################&lt;br /&gt;
; Testen ob es 1 Parameter ist und entsprechend handeln:&lt;br /&gt;
If $CmdLine[0] = 1 Then&lt;br /&gt;
	$s_PhotoPath = $CmdLine[1]&lt;br /&gt;
	; Ggf. Backslash am Ende abschneiden&lt;br /&gt;
	If StringRight($s_PhotoPath,1) = &amp;quot;\&amp;quot; Then&lt;br /&gt;
		StringTrimRight($s_PhotoPath, 1)&lt;br /&gt;
	EndIf&lt;br /&gt;
	; Testen ob es den Ordner überhaupt gibt:&lt;br /&gt;
	If FileExists($s_PhotoPath) = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;Folder / File not found:&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 1&lt;br /&gt;
	EndIf&lt;br /&gt;
	; Liste mit den Bildern erstellen:&lt;br /&gt;
	$a_s_PictureFilenames = _RecursiveFileListToArray($s_PhotoPath, &amp;#039;(?m)(?i).+\.(&amp;#039; &amp;amp; &amp;quot;JPG|PNG&amp;quot; &amp;amp; &amp;#039;)$&amp;#039;, 1, 1, True)&lt;br /&gt;
;~ 	_ArrayDisplay($a_s_PictureFilenames)&lt;br /&gt;
	If $a_s_PictureFilenames[0] = 0 Then&lt;br /&gt;
		_FehlerAusgeben(&amp;quot;No *.jpg or *.png Photos in path found&amp;quot;, $s_PhotoPath)&lt;br /&gt;
		Exit 0&lt;br /&gt;
	EndIf&lt;br /&gt;
	Local $_s_empty = &amp;quot;&amp;quot;&lt;br /&gt;
	_MeldungAusgebenConsole(&amp;quot;Photos / User found: &amp;quot; &amp;amp; $a_s_PictureFilenames[0])&lt;br /&gt;
	ConsoleWrite(@CRLF)&lt;br /&gt;
	;                        12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
	_MeldungAusgebenConsole(&amp;quot; Status   sAMAccountName                     Path fo Photo&amp;quot;)&lt;br /&gt;
	_MeldungAusgebenConsole(&amp;quot;-------------------------------------------------------------------------------&amp;quot;)&lt;br /&gt;
	_AD_Open()&lt;br /&gt;
	For $i = 1 To $a_s_PictureFilenames[0] Step 1&lt;br /&gt;
		; Wir dröseln den Pfad des Bildes auseinander&lt;br /&gt;
		Local $_a_PathSplit = _PathSplit($a_s_PictureFilenames[$i], $_s_empty, $_s_empty, $_s_empty, $_s_empty)&lt;br /&gt;
		$s_sAMAccountName = $_a_PathSplit[3] ; Dateiname&lt;br /&gt;
		$h_Picture = &amp;quot;&amp;quot;&lt;br /&gt;
		$s_Picture = &amp;quot;&amp;quot;&lt;br /&gt;
		; Dateigröße!&lt;br /&gt;
		If FileGetSize($a_s_PictureFilenames[$i]) &amp;lt; 102400 Then&lt;br /&gt;
			$h_Picture = FileOpen($a_s_PictureFilenames[$i], 16)&lt;br /&gt;
			If $h_Picture = (-1) Then&lt;br /&gt;
				ConsoleWrite(&amp;quot; FileOpen &amp;quot;)&lt;br /&gt;
			Else&lt;br /&gt;
				$s_Picture = FileRead($h_Picture)&lt;br /&gt;
				FileClose($h_Picture)&lt;br /&gt;
				If $s_Picture = &amp;quot;&amp;quot; Then&lt;br /&gt;
					Local $i_Return = _AD_ModifyAttribute($s_sAMAccountName,&amp;quot;thumbnailPhoto&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
					ConsoleWrite(&amp;quot; NotRead  &amp;quot;)&lt;br /&gt;
				Else&lt;br /&gt;
					Local $i_Return = _AD_ModifyAttribute($s_sAMAccountName,&amp;quot;thumbnailPhoto&amp;quot;, $s_Picture)&lt;br /&gt;
				EndIf&lt;br /&gt;
				If $i_Return = 1 Then&lt;br /&gt;
					;             1234567890&lt;br /&gt;
					ConsoleWrite(&amp;quot; OK       &amp;quot;)&lt;br /&gt;
				Else&lt;br /&gt;
					ConsoleWrite(&amp;quot; NoUser   &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
				EndIf&lt;br /&gt;
			EndIf&lt;br /&gt;
		Else&lt;br /&gt;
			ConsoleWrite(&amp;quot; FileSize &amp;quot;)&lt;br /&gt;
		EndIf&lt;br /&gt;
		_MeldungAusgebenConsole(StringFormat(&amp;quot;%-30s&amp;quot;, $s_sAMAccountName) &amp;amp; &amp;quot; &amp;lt;== &amp;quot; &amp;amp; $a_s_PictureFilenames[$i])&lt;br /&gt;
	Next&lt;br /&gt;
	Exit 0&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Kommentare==&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>