登录脚本是一种集中控制各种日常管理任务的首选途径没有了登录脚本这些任务就必须到用户的桌面上手工完成特别是在WAN环境中登录脚本的优势非常明显 KiXtart是一个优秀的高级登录脚本工具远比Windows NT系列操作系统内建的DOS批命令风格的处理器强大例如KiXtart允许访问NT SAM或系统信息操作文件修改注册表或者执行OLE自动化任务KiXtart能够根据用户标识和所属群组灵活地调用脚本和子过程必要时我们可以用一个脚本来调用其他的脚本这些功能方便了脚本的集中控制简化了脚本代码的维护和调试 一配置KiXtart运行环境 配置一个基本的KiXtart运行环境很简单KiXtart是Microsoft Windows Resource Kit的一部分最新版可以从下载要运行KiXtart脚本只要在所有提供验证服务的服务器上将KiXtart执行文件(kixexe)放到\neglogon共享目录就可以了 但对于Windows x系统KiXtart还需要额外的配置才能与KiXtart远程过程调用服务通信即必须在每一个域控制器(DC)上安装RPC服务再把KiXtart的辅助DLL(kxdllkxdllkxdll)和kixexe文件一起放入\netlogon共享服务KiXtart的下载包带有RPC服务的执行文件kxrpcexe 二编写脚本 KiXtart脚本文件其实就是普通的文本文件可以用记事本或其他文本编辑器编辑但文件的扩展名一般是kix如果要在用户登录期间运行某个KiXtart脚本只要在该用户帐户的配置文件中设置登录脚本选项即可用不带参数的形式调用kixexe时KiXtart将寻找和运行默认的脚本文件kixtartkix我们可以在kixtartkix脚本中调用其他脚本将kixtartkix作为一个主控脚本使用 KiXtart具有丰富的脚本语言功能包括控制结构命令函数变量数组等虽然说不一定只有专业的开发者才能使用KiXtart但了解一些基本的编程知识还是有好处的 ■ 控制结构 控制结构是控制脚本运行流程的命令例如根据一定的条件允许某些命令或其他脚本运行假设在一个所有用户都运行的脚本中我们只想让某个用户运行特定的脚本代码可以加入下列If Else Endif结构 If @USERID = testuser Call testuserskix EndIf 每一个用户都会运行上面的登录脚本但只有testuser用户会调用testuserskix脚本其他KiXtart控制结构还包括 ⑴ DoUntil反复运行一个代码片断直至指定的条件为真 ⑵ While Loop当指定的条件为真时反复地运行一个代码片断 ⑶ For Each对于数组或对象中的每一个元素分别运行一次代码片断 ⑷ ForNext将一个代码片段运行一定的次数 ■ 变量 变量是一种用描述性名称来存储信息的机制存储在变量中的数据可以随时修改在KiXtart中所有变量必须以$符号开头 就象其他专业的编程语言一样KiXtart变量也有一定的作用范围变量的作用范围决定了当一个脚本调用子过程或其他脚本时被调用的子过程或脚本是否能够访问前者定义的变量如果为变量指定了错误的作用范围很可能导致脚本错误或出现不可预料的运行结果KiXtart变量的作用范围有两种Global这种类型的变量可以被所有脚本程序访问和修改Local这类变量只能在声明它的子过程或脚本之内访问 KiXtart变量可以用多种方式声明 ⑴ 隐式声明在脚本中直接将一个值赋予一个变量隐式声明的变量具有全局作用范围所有脚本程序和子过程都可以访问它 ⑵ 显式声明首先定义变量然后才给它赋值有两个命令可以定义变量即Dim和GlobalDim定义的变量作用范围是本地(Local)只能在定义它的子过程或脚本之内访问Global定义的变量是全局变量 ■ 宏 在KiXtart中宏的作用是从运行脚本的系统或网络返回信息KiXtart的宏类似于一种环境变量不要将它与WordExcel或Word Perfect的宏混淆KiXtart的宏不是程序用户不能修改它们所有的宏都以@字符开头常用的宏包括 ① @USERID返回当前的用户 ② @LSERVER返回为当前登录进程验证身份的服务器 ③ @WKSTA返回正在运行脚本的工作站名称 ④ @TIME返回系统时间 ■ 命令 命令执行一个动作下面列出了几种常用的命令 ⑴ Use映射驱动器或者连接到其他网络资源例如打印机 ⑵ Shell装入并运行一个程序在KiXtart脚本程序中我们不能直接使用标准的Windows批命令所以KiXtart提供了Shell命令让我们调用标准的批命令和外部程序被调用的外部程序可以是任何位或位Windows程序用Shell命令调用外部程序时KiXtart脚本会暂停执行等待外部程序结束所以调用外部程序时务必慎重如果被调用的程序挂起脚本也会停止响应 ⑶ Copy复制一个文件 ■ 函数 函数类似于命令不同之处在于函数会返回数据通常情况下我们要把函数的返回值保存到某个变量有时函数的返回值表示动作的执行状态例如ADDKEY()函数将一个注册键加入到注册表它的返回值表示加入注册键的操作是否成功又如UCASE()函数将字符串转换成大写例如UCASE(hello)的返回值是HELLO 除了大多数编程语言都提供的标准函数之外KiXtart专门提供了许多面向登录操作的函数INGROUP()函数就是一个例子——它能够判断登录的用户是否属于特定的组例如下面的代码判断当前用户是否属于Finance组如是则删除当前的驱动器映射G:然后再将G:映射到Finance部门的共享目录 If INGROUP(Finance) Use g: /delete Use g: \\servername\financeshare EndIf ■ 用户定义函数 KiXtart允许创建用户定义函数(UDF)极大地改进了登录脚本的灵活性我们可以利用UDF机制创建公用的脚本模块简化脚本开发 KiXtart网站提供了大量实用脚本范例包括计算和提示磁盘容量/配额比较目录配置打印机建立文件关联检查病毒库版本搜索文件配置环境变量等等有兴趣的读者可以参看地址是 |