登录脚本示例
登录脚本这个题材非常大,根本没有固定的登录脚本可使用,因为不同用户、不同网络应用都会有不同的需求。而且脚本可以实现的功能非常广,可使用的命令也是难以全面掌握,所以在本节小王只向大家展示几个用户登录脚本的片断,当然也可以作为一个完整的登录脚本来使用。这些登录脚本片段都是为了实现不同的功能而编制的。以前这项工作通常是由系统管理员来为各用户定期清理的,这项工作看似简单,但工作量挺大的,而且又看不到成绩,特烦。于是小王就想,能否偷一下懒,让系统自动清理呢? 经过苦思,终于在登录脚本中找到了答案。
在用脚本文件自动清理“Temporary Internet Files"文件夹中的所有文件任务中,惟一复杂的是尝试确定用户“Temporary Internet Files"文件夹放在何处。通常,可以在用户的本地用户配置文件中找到该文件夹,比如:C:kDocuments and SettingskkenmyerkLocal Settings \Temporary Internet Files。但是,该文件夹并不一定非得在上述位置,毕竟,Windows系统可能并未安装在启动驱动器C上。
那么,如何定位该文件夹呢?办法还是有的,毕竟“Temporary Internet Files’’文件夹不是一般的文件夹,它的定位还是有些特殊性的。因此,可以使用Shell(外壳)对象功能来定位这个特殊的文件夹。无论其物理位置如何都可找到,然后使用该路径来绑定该文件夹,并删除在其中找到的所有文件即可。
具体脚本及注释如下:
Const TEMPORARY_INTERNET_FILES=&H20&#将TEMPORARY INTERNET FILES常量设为变量&H20&
Set objShell=CreateObject("Shell.Application¨) 掸创建Shell对象 Set objFolder=objShell.Namespace(TEMPORARY_INTERNET_FILES) #使用Namespace (命名空间)方法定位TEMPORARY INTERNET FILES文件夹
Set objFolderltem=objFolder.Self 挣用Self方法来连接到该文件夹 strPath=objFolderltem.Path&”F术Il #构建清空文件的路径 Set objFSO=CreateObject(”Scripting.FileSystemObject") #创建FileSystemObject对象实例 obj FS O.DeleteFile(strPath) 掸清空Temporary Internet Files文件夹
根据以上任务和代码,我们可以自然地联想到另一项文件夹清理任务,那就是存放平时上网所产生的Cookie文件的文件 -Internet Cookies。以下是清空该文件的脚本,各行代码解释参照以上对应代码行解释即可。
Const COOKIES=&H2l& Set obj Shell=CreateObject(¨Shell.Application¨) Set objFolder=objShell.Namespace(COOKIES) S et obj Folderltem=obj Folder.S elf strPath=obj Folderltem.Path&"\木.利 Set objFSO=CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile(strPath)
在Windows资源管理器中,用鼠标右键单击应用程序执行文件图标,然后选择 “附到[开
始]菜单"选项即可将应用程序放到“开始"菜单上。其实我们完全可以用脚本实现这一功能。例如,下面的脚本就是将Windows画图(mspaint.exe)程序附到“开始"菜单上。
Set objShell=CreateObject("Shell.Application”) Set objFolder=obj Shell.Namespace("E:\WindowsNT~System32”) Set objFolderltem=objFolder.ParseName("mspaint.exe") objFolderItem.InvokeVerb("P&in to Start Menu”)
在以上脚本中,我们使用了Shell Application对象程序执行该任务。在创建了Shell对象实例后,再使用Namespace方法绑定到画图程序所在的文件夹(E:\Windows\System32)。然后使用ParseName方法绑定到实际的可执行文件(mspaint.exe)
为何不直接绑定到该文件呢?原来Shell对象在设计之初就是这么假定的。最后,我们使用InvokeVerb方法将该应用程序附到“开始"菜单上。当在Windows资源管理器中右击该应用程序时,那些词将显示在上下文菜单上。
既然可以将程序附加到“开始"菜单上,是否可以解除附加在“开始"菜单上的一些程序呢?答案当然是肯定的。脚本如下:
Set objShell=CreateObject("Shell.Application") Set objFolder=objShell.Namespace("C:\WindowsiSystem32”) Set objFolderItem=objFolder.ParseName("calc.exe”) objFolderltem.InvokeVerb("Unp&in from Start Menu”)
这是一个来自微软站点的脚本,它利用VMI来设定日志最大为25MB,并允许日志自行覆盖1 4天前的日志,供大家学习。本脚本为VBScript类型,脚本扩展名要为.vbs。 strComputer=”.”
Set objWMIService=GetObject("winmgmts:”一 &"{impersonationLevel=impersonate,(S ecurity))!\\"&一 strComputer&¨kroot\cimv2”) S et colLogFiles=obj WMIS ervice.ExecQuery一 ("Select木from Win32_NTEventLogFile") For each objLogfile in colLogFiles . strLogFileName=objLogfile.Name Set wmiSWbemObject=GetObject.... ("winmgmts:{impersonationLevel=Impersonate}!\\Aroot\cimv2:”一 Next &”Win32_NTEventlogFile.Name='”&strLogFileName&…’’) wmiSWbemObject.MaxFileSize=2500000000 wmiSWbemObject.OverwriteOutdated=1 4 wmiSWbemObject.Put__
好了,下面再列几个简单的脚本示例供大家
此脚本也是VBScript学习。类型,扩展名需为.vbs。
strComputer=”.” Set objWMIService=GetObject(¨winmgmts:” (Backup))!\\"&strComputer&¨~root\cimv2”) Set colLogFiles=objWMIService.ExecQuery一&¨{impersonationLevel=impersonate,_
{}}获得VMI对象
("Select冰from Win32_NTEventLogFile where LogFileName='Application'I’) #获取日志对象中的应用程序日志
For Each objLogfile in colLogFiles errBackupLog-"0bjLogFile.BackupEventLog(¨f:\application.evt'’) #将日志备份到 f:\application.evt文件中
If errB ackupLog<>0 Then Wscript.Echo¨The Application event log could not be backed up.¨ else Wscript.Echo”success backup log” End If
Next
Const MY_COMPUTER:&H 11& # 将MY_COMPUTER常量设为变量&H l l& Set objShell=CreateObject("Shell.Application") 样创建Shell对象 Set objFolder--0bjShell.Namespace(MY_COMPUTER) #使用Namespace(命名空间)方法定位MY_COMPUTER文件夹 Set objFolderltem=objFolder.Self Wscript.Echo obiFolderItem.Path Set colItems=objFolder.Items For Each obj Item in colltems Wscript.Echo ob{Item.Name Next #重复执行
{}j}用Self方法来连接到该文件夹
#定位列出项目的文件夹MY_COMPUTER位置
#将查到的项目所有文件保存在变量colltems中
#用For Each循环语句来循环集合中的所有文件
#列出对象项目文件的名称
strComputer=”.” {fj}定义主机,相当于localhost Set objWMIService=GetObject("winmgmts:\V’&strComputer&”~oot\cimv2") #创建对象, WMI的全称为Windows Management Instrumentation,是微软的一种管理工具开发技术 Set colFileList=objWMIService.ExecQuery一
("ASSOCIATORS OF{Win32一Directory.N锄e:IC:\Logst】Where¨ &”ResultClass=CIM:_DataFile") #使用Associators Of查询以便返回在某个文件夹 (此处为C:kLogs文件夹)中找到的所有文件的集合
For Each objFile In colFileList
strNewName=objFile.Drive&objFile.Path&”pl一”&一 objFile.FileName&¨.”&objFile.Extension errResult=objFile.Rename(strNewName) 样 为新的文件名构建整个路径,将其指派给 strNewName变量,然后将strNewName传递给Rename
Next
Const NETHOOD=&H13& Set objShell=CreateObject(”Shell.Application¨) Set objFolder=obj Shell.Namespace(NETHOOD) S et obi FolderItem==obi Folder.S elf Wscriot.Echo obiFolderItem.Path Set colItems=obiFolder.Items For Each obi Item in colItems Wscriot.Echo ob{Item.Name
Next
Const NETWORK CONNECTIONS=&H3 1& Set objShell=CreateObject("Shell.Application”) Set objFolder=obj Shell.Namespace(NETWORK_CONNECTIONS) Set obiFolderItem==objFolder.Self Wscriot.Echo objFolderltem.Path S et colItems=obj Folder.Items For Each obi Item in colItems Wscriot.Echo ob{Item.Name
Next