use strict; use warnings; use Win32::OLE qw[in]; my $adspath = shift || die "Provide an adspath already\n"; { warn $adspath, "\n"; my $user = Win32::OLE->GetObject("LDAP://$adspath"); die "Oh dear\n" unless $user; $user->GetInfo; unless ( defined $user->{thumbnailPhoto} ) { warn "No thumbnail\n"; exit 0; } my $thumb = $user->{thumbnailPhoto}; { open my $piccy, '>:raw', 'piccy.jpg' or die "$!\n"; print $piccy $thumb; } } exit 0; #### use strict; use warnings; use File::Slurp; use Win32::OLE qw[in]; my $adspath = shift || die "Provide an adspath already\n"; my $filename = shift || die "No filename provided\n"; my $content = read_file( $filename, binmode => ':raw' ); { warn $adspath, "\n"; my $user = Win32::OLE->GetObject("LDAP://$adspath"); die "Oh dear\n" unless $user; $user->GetInfo; $user->Put('thumbnailPhoto',$content); $user->SetInfo; } exit 0; #### Function ReadBinaryFile(FileName) Const adTypeBinary = 1 Dim BinaryStream Set BinaryStream = CreateObject("ADODB.Stream") BinaryStream.Type = adTypeBinary BinaryStream.Open BinaryStream.LoadFromFile FileName ReadBinaryFile = BinaryStream.Read End Function Set objNewUser = GetObject("LDAP://cn=some,ou=adspath,dc=domain,dc=local") objNewUser.GetInfo objNewUser.Put "thumbnailPhoto", ReadBinaryFile("image.jpg") objNewUser.SetInfo