公司购买了Bartender软件,网络版。供多台电脑连接使用。
但是实践使用中发现,这个软件的license的验证是限定的打印机数量的,并不是我们传统理解的限制的电脑数量。于是乎,就发生下面所说的情况了:
A电脑接了一台USB接口的打印机,连接license server 后占用了一个license数量。然后因为某种原因,用户换了USB接口的话,有的时候显示在电脑端的打印机名字可能就换了一个什么 XXXX Copy, XXX 副本之类的名字,这时再去连接License server 的话,License Server 会认为这是一个新的打印机,因为它看起来只认打印机名字。时间一久,明明实际使用的用户,实际使用的打印机没多少,但是购买的License 数量也会被占用光,非常不合理。别的真正要连接的打印机,这里因为没有剩余的可用的License数量了,也就连接不上了,无法使用了,只能由管理员连上License Server 进行手工清理。时间久了耗时耗精力。本来50个的使用量,如果额外买license也相当于浪费银两。于是决定研究一下。
经过研究发现,发现它会使用slspl.lpl文件记录打印机名字。每增加一台就往里记录。明白了该License server 的机制,于是写了个脚本,配合Windows计划任务终于可以实现无人值守定期自动清理了。
批处理原理:
- 停用license server (service)
- 删除slspl.lpl 文件(sls printer list )
- 启动license service
net stop "Seagull License Server"
del “C:\ProgramData\Seagull\Seagull License Server\slspl.lpl” /q
net start "Seagull License Server"
之所有需要停用服务,删除列表文件后再启用服务。
是因为如果不停用的话,你即使删除了文件,它的数据仍在内存中,在下次服务停用时(比如服务器重启时),它还会将内存中数据保存到文件中。
声明:
- 本批处理基于本人所在的公司购买了充足license数量的前提下制作,仅为方便管理之用,他人滥用引发的license问题与本人无关;
- 这种license数量计算方式确实有缺陷,没办法手工设置失效打印机的存活期,并自动清理。希望官方软件后续版本中有所提高。