# Update-AD-Picture.ps1
#
# copy a .jpg into a byte array, then push that into
# the "thumbnailPhoto" property of the specified user in AD

function UpDate-AD-Picture {
 param ([STRING] $UserName, [STRING] $JPEGfilePath)

 if ( ($JPEGfilePath) -and (test-path($JPEGfilePath)) ) {
   [BYTE[]] $JPEG = Get-Content $JPEGfilePath -encoding BYTE
 
   $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
   $root = $domain.GetDirectoryEntry()
 
   $search = [System.DirectoryServices.DirectorySearcher] $root
   $search.Filter = "(&(objectclass=user)(objectcategory=person)(samAccountName=$UserName))"
   $result = $search.FindOne()
 
   if ($result -ne $null)  {
     $user = $result.GetDirectoryEntry()
     $user.put("thumbnailPhoto",  $JPEG )
     $user.setinfo()
     Write-output "$($user.DisplayName)  updated"
   }
   else {
     Write-output "'$UserName' was not found in AD."
   }
 }
 else  {
   write-output "The file '$JPEGfilePath' was not found!"
 }

}

Update-AD-Picture "LukeB" "C:\shared\tabitha1.jpg"