可适应打印机部署(2)
续:可适应打印机部署(1)
详述:打印机部署的管理主要是基于文件的,下面将要分别介绍使用电脑分组、打印机列表和打印机配置信息来描述企业内部管理状态,理解这些文件的使用定义,是决定成功使用本脚本的关键一步。
管理电脑分组
在现实中,电脑的功能是可以用分组的方式来描述的,就如同在LDAP中管理电脑和用户一样,具有相同功能/用途的电脑,或者相同管理背景的用户被分在同一组一样。同样,打印机的管理也是用分组的方式,一个打印机分组中的电脑,都具有相同打印机的配置,不同的打印配置的电脑被分在不同的组。
脚本使用默认的文件名Groups.ini来描述电脑分组,文件的格式很简单,一行代表一个电脑的分组定义,前面是分组的名称,后面是电脑名称,他们使用ASCII码逗号”,”分开;#符号用户注释一行,它必须在每行的开始;空行被忽略。
一个Groups.ini文件的举例:
管理打印机列表
前面说过,每一组电脑安装有相同的打印机,我们使用一个文件来定义一个组所要安装的所有打印机。上面定义了每个电脑的分组,每个分组有个组名,我们就使用每个组的组名作为文件名,比如上面有Office,Lib,和Mobile三个分组,我们为每个分组定义一个打印机列表。
打印机列表更简单,每个打印机名称占一行;第一个打印机是默认打印机;#符号用户注释一行,它必须在每行的开始;空行被忽略。
下面是一个Lib分组的例子:
下面是一个Office分组的例子:
通过上面两个部分的介绍,我们有了一个打印机管理方法的轮廓,把具有相同打印机配置的电脑分组,列表存放在Groups.ini文件中,然后为每个分组分别建立打印机列表文件,里面列出该组所须安装的打印机。
其实,也可以使用LDAP服务中的Computer的Location信息来对每个电脑进行分组,把分组名称填入Location里面。由于每个系统的实施不同,LDAP的描述不同,脚本中有该函数,不过需要个人根据自己的网络配置环境进行修改LDAP字符串。
配置打印机配置信息
终于来到这里了,上面说了分组啊,打印机列表啊伍的,打印机的具体描述呢?比如,打印机驱动程序,打印机IP地址等等。
每个打印机的具体描述,是在打印机配置信息PrinterConfig.ini文件中定义的。每行定义一个打印机,每行由预定义顺序的字段组成,每个字段之间使用ASCII码的逗号”,”分隔,可选字段可以为空,但不能省略分隔符,每个字段的前后空格和Tab被忽略;#符号用户注释一行,它必须在每行的开始;空行被忽略。
每个字段顺序定义为如下:
1. 系统平台定义:x32是定义本打印机配置是为32位系统使用的;x64是为64位系统使用的。
2. 打印机名称:打印机名,这个名称就是在打印机列表文件中所罗列的打印机名对应。
3. IP地址:也就是该打印机的IP地址。如果使用DNS名称也可以。
4. INF文件:这个定义打印机驱动程序的位置和它所使用的打印机描述inf文件。
5. 打印机型号:其实就是该打印机的驱动名称。在前面的“准备”一节中有介绍如何找到它。
6. 位置:为了方便用户找到这个打印机,在每个安装的打印机中可以定义“位置”信息,这是一个可选字段。
7. 注释:这也是一个可选字段,管理员可以添上附加的注释,比如彩色打印,不要使用双面等等。
8. 禁止访问的用户组:这个字段可选,用来限制一个组的用户访问该打印机。(这个功能将来可以被扩展为更多和灵活的语法,以适应更复杂的环境。)
关于系统平台定义这个字段,管理员完全可以通过定义不同的打印机名来区别64位还是32位系统,问题是,需要不太一样的打印机名,而且要手动区分。而有了这个字段定义,就可以为32位或者64位系统,定义使用相同的打印机名,方便管理和用户使用。记住,对每个打印机都要有32位和64位的打印驱动定义。
下面是一个例子:
分公司管理
在运行该脚本的时候,可以定义Location,也就是说,每个分公司可以有各自的相同名称的打印机,相同名称的分组或者电脑名,这个Location信息被用来添加到所有的上述控制文件的前面,比如代号为310的分公司的所有控制文件都以310_开头,也就是310_PrinterConfig.ini,310_Groups.ini, 310_Office.txt, 310_Mobile.txt等等,这样管理员可以轻松地集中管理不同分公司。
命令行
基本的命令行是:
Cscript APD.vbs options
其中Options可以是:
/l code: 定义分公司代码
/q: 安静模式,不输出任何的运行信息
/s: 在完成后删除自身
/d: 删除所有的TCP/IP打印机,适合于重新部署。
把VBScript脚本文件,以及相关的所有文件都放在一个网络共享文件夹中,
我的配置是这样的:所有的32位驱动程序放在Driver子文件夹中,64位驱动程序放在Driver.x64子文件夹中,其他文件和脚本本身都放在这个文件夹中。
命令行的举例:
其它:
两个辅助的程序,subinacl.exe用来设置打印机的访问权限,PsGetsid.exe用来获得一个用户/用户组在LDAP服务中的SID。
源代码:
参见Google Code: http://code.google.com/p/adaptable-printer-deployment/