您的位置:首页 > 其它

批量为LYNC用户添加头像 推荐

2010-12-08 23:25 225 查看
LYNC 客户端现在做得更加人性化了,其中一点就是用户可以使用头像来彰显个性。这个功能大家都比较喜欢,头像可以用户自己添加,但是要用网络路径,所以用户可能不会添加。所以由管理员来添加是最方便的。今天我们来看看怎么批量的为用户添加头像。

我们先登录看看。





默认的图像,光秃秃的。很是不好看。不过通过以前的帖子,我们还知道这个图像的原型是微软的创始人盖茨先生,还是先拜一个!

开始吧!

我们要实现准备好一些照片,照片不要超过大小不要超过30KB,所以尺寸也要控制好,一般就96X96就差不多了,太大了没有意义,因为这些照片是存在AD内的,所以如果太大的话,会导致AD的数据库增大,从而影响复制。

照片就采用姓名来命名就好了,因为我们的脚本一会会读取到这个名字,然后用这个名字去搜索AD。

大家可以看我的实例,我AD里面的用户名字是张三,那么照片也是张三。





AD里面用户的名称为张三,而AD属性里面对应名称字段的值为name,要以这个为准。因为我们一会脚本搜索的属性也是这个name属性。





照片就非常简单了,用户的名字为文件名。

AD里面存照片对应的值为thumbnailPhoto,我们利用adsiedit.msc看看现在的值为空。





脚本内容:

红色地方为关键,主要是第一个为照片所存放的文件夹。第二个标为红色是告诉大家,我们查询的是name属性。

Const ForReading = 1

'图片存的目录

InDir = "C:\photo"

Set fso = CreateObject("Scripting.FileSystemObject")

set oIADS = GetObject("LDAP://RootDSE")

strDefaultNC = oIADS.Get("defaultnamingcontext")

Set theConn = CreateObject("ADODB.Connection")

theConn.Provider = "ADsDSOObject"

theConn.Open "ADs Provider"

Set theCmd = CreateObject("ADODB.Command")

theCmd.ActiveConnection = theConn

Set objRecordSet = CreateObject("ADODB.Recordset")

For Each tFile In fso.GetFolder(InDir).Files

tName = tFile.Name

tName = Left(tName, InStrRev(tName,".")-1)

strQuery = "<LDAP://" & strDefaultNC & ">;" & "(&(objectClass=person)(name=" & tName & "));name,adspath;subtree"

theCmd.CommandText = strQuery

Set objRS = theCmd.Execute

If objRS.RecordCount = 0 Then

MsgBox "Can't find account for " & tName

Else

Set objUser = GetObject(objRS("adspath"))

ObjUser.Put "thumbnailPhoto", ReadByteArray(tFile.Path)

ObjUser.SetInfo

End If

Next

Function ReadByteArray(strFileName)

Const adTypeBinary = 1

Dim bin

Set bin = CreateObject("ADODB.Stream")

bin.Type = adTypeBinary

bin.Open

bin.LoadFromFile strFileName

ReadByteArray = bin.Read

End Function

双击执行,然后先不要急着去登录用户,先去看看用户的值改变了没有。





我们看到张三这个用户的thumbnailphoto已经有值了。我们再登录看看。





头像已经出来了。





这里也看到了我们定义给用户图像。

过程就这么简单,如果你有多用户,就批量的把照片弄到文件夹里,然后双击脚本执行吧。 前提条件是这些用户必须要存在于AD内,不然脚本是要报错的。

如果大家想了解脚本具体的含义,欢迎向我提问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息