Windows并不是只有GUI的管理界面可用 什么情况下使用 script会比使用GUI更方便? :批量处理工作 一次执行大量性质类似的工作 让许多使用者执行相同的工作 为什么要使用Script作系统管理?:减少管理上所需的时间和复杂度 Windows下面的Script能够做些什么?:绝对比你想象的要多 大部分GUI能完成的工作都可以用script完成 Windows Scripting相关基础知识:可以使用的语言:VBScript and Jscript 扩展名:.vbs/ .js /.wsf .wsf具有类似XML的结构,可以使用多种script语言 .wsf可以远程执行 Script Host:Wscript:Window based script interpreter Cscript:command line based script interpreter 系统默认是以Wscript作为标准的解释器 执行Script的方法:使用命令提示符 使用资源管理器:Double-click 远程执行:通过WSH Drag and drop Wscript / Cscript 参数 //H:CScript or //H:Wscript:更改默认的Script Host //nologo:不显示banner //T:nn:设置执行的timeout时间 //S:储存目前设置 //B:批量模式,关闭所有输入及错误信息 //I:互动模式
在命令提示符里面输入Wscript /?按回车键 可以看到那些参数 输入Wscript //H:CScript按回车键 那么这个意味着当前数字脚本程序已经由Cscript来执行了 也就是说当你双击一个脚本的时候它会自动默认用Cscript来解释了 如果你想切换到WScript就输入Wscript //H:WScript按回车键 那么这个时候你的脚本执行解释器会自动切换到WScript里面了
VB Script初步:类似VisualBasic的语法 使用_字符连接多行 对象:set objWMIService=GetObject("winmgmts:") 变量和常量:Filesize=1024 Const MasFileSize=4096 字符串:Filepath="C:\Temp\" 使用&来连接字符串 Filename=Filepath & "test.txt" IF Else 判断:if conditions then ... Else if conditions then ... Else ... End if Select Case 判断:Select Case variable Case condition... Case condition... End select For Next 循环:For i=1 to n....Next For Each object in containter...Next Do Loop循环:Do While condition...Loop Do...Loop While condition 阵列/数组:Computers=Array("cismpc01","cismpc02","cismpc03" 使用For Each来枚举数组内所有元素 For Each computer in Computers... Procedures / Functions Sub procedurename()...End Sub Function funcname()...End Function 错误处理:默认情况下遇到错误自动停止执行 On Error Resume Next Err对象:Err.Number / Err.Description / Err.Clear
我现在来写一个脚本 首先打开记事本 在记事本面输入UserName="Alice" Age="18" MsgBox UserName & vbtab & Age 按文件--按另存为--按桌面 在文件名里面输入test.vbs 按保存就ok了 然后在桌面上双击test.vbs这个脚本文件就可以看到Alice 18 这表示我刚才写的脚本已经生效了 UserName和Age是变量 如果想把这两个变量弹出来 就用MsgBox这个命令 如果你不加vbtab这个参数的话 Alice就和18连接在一起 这样格式就不对了 如果你想把它们分开就使用vbtab这个参数 vbtab代表一个字符串
打开记事本 在里面输入set objDomain = Getobject ( "WinNT://London") For Each objuser in objDomain Msgbox objuser.Name Next 然后保存 London是这台计算机的名称 ( "WinNT://London")实际上代表的是去获取NT4的域 objDomain代表的是它本地所有用户的数据库 如果写成域的名字( "WinNT://ntdom") 这个时候就代表NT域的下面所有用户的信息 注意:WinNT的大小写一定要注意 W是大写 in是小写 NT是大写 双击桌面上的test.vbs 就可以看到第一个用户(Administrator) 按确定就可以看到第二个用户了
双击桌面上的test.vbs马上就可以看到一个错误 第三行 错误:对象不支技此属性或方法 objuser.casddca 就是说到错误的那一行就不会再往下一行执行了 如果你想让它继续执行下去就加on error resume next按保存就ok了 当你加上这条语句之后意味着在这条语句之后的所有语句 如果出现错误的话 它是不会停止执行 它会跳过当前出错的语句 继续执行后面的语句 双击桌面上的test2.vbs可以看到Schema了 另外还有一个如果产生错误的话 它会有一个error 你可以用error对象去看一下 毕如说看一下err.Number是什么 在记事本里面加入Msgbox err.Number按保存 双击桌面上的test3.vbs就可以看到err.Number是438
ADSI(Active Directory Service Interface):用来访问活动目录的接口 使用标准LDAP路径来访问目录服务中的对象 撰写ADSI Scripts 的基本流程:连接到活动目录对象 处理对象(更新/复制/删除) 保存所作修改 Object.SetInfo
本文转自 叶俊生 51CTO博客,原文链接:http://blog.51cto.com/yejunsheng/162193