当前位置:无忧公文网 >范文大全 > 征文 > Windows脚本技术在机房维护与管理中的应用

Windows脚本技术在机房维护与管理中的应用

时间:2022-03-21 08:14:00 浏览次数:


打开文本图片集

摘要:Windows脚本程序能够在Windows系统环境下快速地完成机房软件的安装与部署,为机房维护与管理节省大量的人力和财力资源。该文设计了 Windows脚本执行流程图,分别实现了读取主机名、修改UGS配置文件、修改UGS环境变量、读取MAC地址、修改ProE配置文件、重启计算机和删除脚本程序等七个功能模块。实践证明,采用Windows脚本程序,能够快速解决软件的批量安装与配置问题。

关键词:Windows脚本;WSH;VBS;机房维护;自动化执行

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)18-4151-04

1 问题的提出

Unigraphics NX(UGNX)是一个交互式CAD/CAM系统,功能强大,可以轻松实现各种复杂实体及造型的建构,已经成为模具行业三维设计的一个主流应用。Pro/ENGINEER(ProE)是现今主流的CAD/CAM/CAE三维软件之一,作为当今世界机械CAD/CAE/CAM领域的新标准而得到业界的认可和推广,特别是在国内产品设计领域占据重要位置。UGNX和ProE是模具设计、数控加工、汽车设计等专业重要的两款大型教学软件。由于这两款软件非常庞大,UGNX6.0版本接近2GB,而ProE5.0版本则超过3GB,因此在安装软件时需要耗费大量的人力和时间。

目前大多数大中专院校同一机房的计算机配置都基本相同,根据常见的机房软件维护模式,可以采用两种方式。方式一:选择一台状况良好的计算机,首先安装UGNX和ProE并完成配置,在确保软件能够正常运行之后,以此计算机作为发送端,利用增量同传或网络同传的功能将本机所安装的软件同传至其他计算机中[1],待同传操作完成后再对各计算机的UGNX和ProE进行单机配置。方式二:在已有操作系统的环境下,将UGNX和ProE的安装文件复制到各学生机器,再单独安装和配置。

可以看出,方式一在后续的单机配置中需要耗费较多的时间,而方式二在文件复制和安装中需要耗费更多的时间。在同等人力和时间长度的情况下,方式一是值得推荐的机房软件维护方式。但是,UGNX和ProE这两款软件通过网络同传后并不能正常使用,后续的设置工作又将变成繁琐的体力劳动。因此,探索出一种能快速有效而且能够自动化执行的解决方案,以缓解计算机系统管理员的劳动强度,更是迫在眉睫。

2 Windows脚本技术简介

在Windows操作系统中内置了Microsoft VBScript(即VBS)和JScript脚本引擎。在早期,脚本广泛地用于Web开发方面,这是因为早期脚本是在客户端的IE浏览器、服务器的llS这样的环境中运行的。但自从Windows98之后,在Windows操作系统中内置了WSH(Windows Script Host),即Windows脚本宿主环境,在客户端上使用脚本编程成为可能。WSH从最早的1.0版直至现在5.6版本,WSH脚本宿主环境变得越来越成熟,应用越来越广泛。

WSH是一种基于面向对象的编程语言环境,其内置对象封装了大量的Windows API函数,构成了以根为Wscript对象、包含14个对象组成的Windows脚本宿主对象模型。利用WSH可以轻松地完成一系列繁琐的工作,例如,批量进行文件改名、删除;映射网络驱动器、打印机;访问注册表等等。还可以结合强大的COM组件技术控制OFFICE成员对象,结合ODBC技术访问各类数据库等等。

当执行脚本文件时,Windows操作系统会启动Windows脚本宿主,由Windows脚本宿主调用与之相关的脚本引擎来解释,并运行该脚本文件。就VBScript和JScript脚本而言,VBScript更受编程人员的喜爱。VBScript是Visual Basic的一个抽象子集,是一个高效、强大而易于学习的编程语言,最方便的是它可以不需要专用的开发环境,使用记事本工具就可以编写VBS脚本并直接执行[2]。

3 Windows脚本执行流程设计

通过网络同传后的UGNX和ProE并不能正常使用,根据软件安装说明书得知,UGNX安装完成后需要将系统环境变量“UGS_LICENSE_SERVER”的值设置为本地主机名,以及ugs2.lic(UGNX6.0以上版本为ugs4.lic)文件中的“this_host”需要替换成本地主机名,而ProE则需将license.dat(部分版本为PTC_lic.dat)文件中的MAC地址“00-00-00-00-00-00”替换为本地主机MAC地址。

由于整个机房的计算机都是通过网络同传完成的,因此每一台计算机软件的安装位置与配置文件所在的位置都能保持一致。一般来说,计算机所安装的软件的路径都能够通过读取注册表来获取,然而在第一次安装软件时,文件的安装路径与配置文件的路径都已经被固定下来,为确保脚本文件的可读性与简易性,可以假设第一台主机MAC地址为“00-11-22-33-44-55”,UGNX配置文件在“D:\Soft\UGS\ugs2.lic”(通常在安装UGNX时系统会自动生成该文件)、ProE的配置文件在“D:\Soft\ProE\license.dat”目录中,则可以根据软件安装说明书编制自动化执行脚本程序,脚本执行流程如图1所示。

图1 Windows脚本执行流程图

4 功能模块设计与实现

由图1可知,整个脚本程序由七个功能模块组成,分别是:读取主机名、修改UGS配置文件、修改UGS环境变量、读取MAC地址、修改ProE配置文件、重启计算机和删除脚本程序,为保证脚本程序的模块化和可读性,这七个功能模块分别采用七个过程来实现。

4.1 全局变量设定模块

由于脚本程序所使用的参数值基本保持不变,并且为了便于参数值的修改,因此可以将参数定义为全局变量。其中,UGS_LIC_FILE为UGNX配置文件所在的路径,KEYWORDS为需要被替换的MAC地址,PROE_LIC_FILE为ProE配置文件所在路径,R和W分别指定文件的读写模式,REBOOT为计算机重启命令,代码如下。

Const UGS_LIC_FILE = "D:\Soft\UGS\UGSLICENSING\ugs2.lic"

Const KEYWORDS = "00-11-22-33-44-55"

Const PROE_LIC_FILE = "D:\Soft\ProE\license.dat"

Const R = 1, W = 2

Const REBOOT = "shutdown -r -t 10"

4.2 读取当前计算机主机名模块

在WSH对象模型中,WshNetwork对象提供对计算机所连接的网络上共享资源的访问, 该对象的属性能获取计算机系统的名称、用户的域名和用户名等网络信息,其中ComputerName属性用于获取计算机系统的名称,该对象的访问需要先创建WScript.Network对象的实例来实现,代码如下。

Function PC_NAME()

Set WS = WScript.CreateObject("WScript.Network")

PC_NAME = WS.ComputerName

End Function

4.3修改UGS认证服务器名称模块

自Windows NT系统开始,Windows操作系统的环境变量有“System”、“User”、“Volatile”和“Process”四种类型。在WSH对象模型中,WshEnvironment对象提供对Windows环境变量集合的访问,该对象是一个由WshShell对象的Environment属性返回的环境变量集合,该集合包含全部的环境变量,要获取集合中某个具体的环境变量及其值,可以使用环境变量类型作为索引。其中,WshEnvironment对象的Item属性用于获取环境变量名的值[3]。

UGNX安装完成后,软件会自动创建“UGS_LICENSE_SERVER”系统级变量名,变量值格式为“28000@主机名”,在变量值中,需要修改的仅有主机名部分,因此可以将字符串“28000@”与PC_NAME函数所获取的当前主机名拼接,并替换原变量值,代码如下。

Function EDIT_UGS_LICENSE_SERVER()

Set WS = WScript.CreateObject("WScript.Shell")

WS.Environment("SYSTEM").Item("UGS_LICENSE_SERVER") =”28000@" & PC_NAME

End Function

4.4 修改UGS配置文件模块

根据UGNX安装说明文件得知,任意版本的配置文件只需修改第一行即可,格式为“SERVER 主机名 ID=版本日期 端口号”,由于主机名有可能与配置文件中的某些内容相同,因而不能采用简单的查找与替换的方法。另外,不同的软件版本,版本日期不同,如果随意修改,则会导致软件无法正常启动。从配置文件第一行的结构可以看出,关键是需要截取出“=”之后的内容。因此可以按照以下步骤来进行,首先,通过FileSystemObject对象的FileExists方法[4]判断配置文件是否存在,若存在则通过OpenTextFile方法读取配置文件第一行内容,利用Split函数获取“版本日期 端口号”子串;其次,按照格式进行字符串的拼接;第三,读取配置文件剩余部分内容,并与第一行内容进行拼接;最后,通过TextStream对象的Write方法将拼接之后的内容重新写入配置文件中,代码如下。

Function EDIT_UGS_LICENSING()

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FileExists(UGS_LIC_FILE) Then

Set f = fso.OpenTextFile(UGS_LIC_FILE, R)

Do While Not f.AtEndOfStream

If f.Line = 1 Then

s = "SERVER " &PC_NAME&" ID="&Split(f.ReadLine, "=")(1)

End If

s = s &vbCrLf&f.ReadLine

Loop

Set f = fso.OpenTextFile(UGS_LIC_FILE, W)

f.Write s

f.Close

End If

End Function

4.5 获取计算机MAC地址模块

Win32_NetworkAdapterConfiguration是管理基于Windows系统的TCP/IP网络配置一个最有用的WMI类,通过调用SWbemServices对象的InstancesOf()方法将返回一个对象集合,该集合是一个包括零个或多个SWbemObject实例的SWbemObjectSet集合。首先使用“Winmgmts:”标记连接到WMI服务,其次使用InstancesOf方法检索 Win32_NetworkAdapterConfiguration 类的所有实例,再通过GetObject函数返回一个由计算机上的所有网络适配器配置组成的集合,最后通过IPEnabled属性为True筛选出可用的网络适配器,另外通过Replace函数将获取的MAC地址中的“:”替换成“-”字符,具体代码如下。

Function GET_MAC()

Set Mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")

For Each Mo In Mc

If Mo.IPEnabled = True Then

Mac = Mo.MacAddress

Exit For

End If

Next

GET_MAC = Replace(Mac, ":", "-")

End Function

4.6 修改ProE配置文件模块

由于ProE配置文件中多处存在MAC字符,因此只能采用查找与替换功能。首先,以只读模式打开配置文件;其次,读取全部内容,利用Replace函数将获取的主机MAC替换配置文件原有的MAC字符;最后,以只写模式打开配置文件,将替换之后的字符写入文件中,代码如下。

Sub EDIT_PROE_LICENSE()

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FileExists(PROE_LIC_FILE) Then

Set f = fso.OpenTextFile(PROE_LIC_FILE, R)

s = Replace(f.ReadAll, KEYWORDS, GET_MAC)

f.Close

Set f = fso.OpenTextFile(PROE_LIC_FILE, W)

f.Write s

f.Close

End If

End Sub

4.7 重启计算机模块

Windows XP系统通常通过Shutdown.exe程序来完成关机操作,参数[-r]和[-t]可以分别设置计算机重启与延迟时间。要从WSH脚本中启动另一个应用程序,必须使用WshShell对象的Run方法,Run方法会启动程序并执行包含参数的命令。为了保证软件在读取重新配置文件后能够正常启动,脚本程序需要控制计算机自动重新启动,代码如下。

Sub REBOOT_PC()

Set WS = WScript.CreateObject("WScript.Shell")

WS.Run REBOOT

End Sub

4.8 删除脚本程序模块

在WSH对象模型中,使用FileSystemObject对象存取磁盘驱动器、文件夹和文件,该对象的方法和属性具有对文件夹和文件进行复制、更名、移动和删除的功能,其中DeleteFile方法用于删除指定的文件,同时使用Wscript对象ScriptFullName属性获取当前运行脚本文件的完整路径。由于删除脚本前需要先执行计算机重启操作,因此本模块的执行必须放在“重启计算机模块”之后进行,具体代码如下。

Sub DELETE_SCRIPT()

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

f = fso.DeleteFile(WScript.ScriptFullName)

End Sub

5 脚本程序的运行

在完成以上脚本编写之后,将代码复制到文本文件中保存为“.vbs”脚本文件,通过多媒体广播软件分发至各学生机中,并远程执行该脚本文件。为确保各计算机的软件都能正常运行,在机器重新启动后,可以随机抽查软件的运行情况。

6 结束语

计算机机房是学生技能训练和教学实训的重要场所,在日常教学中占据重要地位。由于机房需要安装众多类型的教学软件,且各软件的安装与配置各不相同,如何在有限的时间内更快速更高效地完成机房软件安装与调试,成为机房维护人员和计算机教学人员必须考虑的问题。随着学校专业的不断细化,各种教学软件越来越庞大,对硬件资源的需求也越来越多,机房维护的重要性越加突出。通过实践证明,Windows脚本文件能很好的在Windows XP系统中解决软件的安装与配置问题,在实际应用中,并不需要逐台进行设置。2014年4月8日,Windows XP已经正式退出历史舞台,目前大部分学校的系统正逐步过渡到Windows 7系统,以上代码经过略为修改后同样能够在Windows 7系统中完成软件的批量安装与设置。

参考文献:

[1] 束锁平.基于MAC地址计算机登录名修改——用于全国计算机等级机房环境自动设置[J].南阳师范学院学报,2013(9):33.

[2] 刘珊.基于Windows脚本技术的计算机信息采集[J].计算机系统应用,2010(7):166-167.

[3] (美)Brian Knitte.Windows 7 脚本编程和命令行工具指南[M].北京:机械工业出版社,2011.

[4] Microsoft帮助文档,Microsoft Windows脚本技术.

推荐访问: 机房 脚本 维护 管理 技术