Windows7及其之前的Vista版本都带有脚本命令、批处理文件和命令行工具,这些工具可以帮助管理员更轻松地完成任务,大大提高工作效率。本书通过大量实例,深入浅出地讲解这些工具,为广大Windows用户揭开这些工具的神秘面纱。
本书主要内容包括三大部分:第一部分介绍Windows ScriptHost工具,包括VBScript编程语言、对象的使用、编写和调试脚本等,提供了Windows很多脚本编程对象的详细参考。第二部分介绍用来编写批处理文件的Windows命令语言,包括命令行环境、MS-DOS模拟、通过管理工具来修改命令环境的方法,还给出Windows提供的20多种重要的命令行程序的指南。第三部分介绍WindowsPowerShell的基础知识、编程和应用,掌握管理Windows工作站、服务器和应用程序的快捷方法。本书内容丰富,实例众多,适合Windows高级用户、系统管理员、开发人员参考。
封面图
目录
- 译者序
- 前言
- 第一部分用Windows Script Host进行脚本编程
- 第1章Windows脚本宿主(WSH)1
- 1.1什么是Windows脚本1
- 1.1.1“Script”部分1
- 1.1.2“Windows”部分2
- 1.1.3 “Host”部分2
- 1.1.4与编写批处理文件有何不同3
- 1.2脚本语言3
- 1.2.1VBScript4
- 1.2.2JScript4
- 1.2.3Perl4
- 1.2.4Python5
- 1.2.5Open Object REXX5
- 1.2.6Ruby5
- 1.2.7选择一种语言5
- 1.3一个简单的脚本5
- 1.4脚本文件的类型7
- 1.4.1JSE和VBE:已编码脚本8
- 1.4.2Windows脚本文件(WSF)8
- 1.4.3Windows脚本组件10
- 1.4.4WSH设置10
- 1.5创建第一个脚本文件10
- 1.5.1创建一个脚本文件夹并使其安全化10
- 1.5.2创建脚本12
- 1.5.3脚本编辑工具12
- 1.6Windows如何运行脚本13
- 1.6.1Wscript和Cscript13
- 1.6.2运行脚本的方式14
- 1.6.3给脚本传递信息15
- 1.6.4保存脚本的结果16
- 1.6.5Wscript和Cscript命令选项17
- 1.7运行自己的脚本19
- 1.7.1将脚本添加到路径19
- 1.7.2用一个快捷方式图标来运行脚本20
- 1.7.3制作一个脚本快捷方式20
- 1.7.4从批处理文件运行脚本21
- 1.7.5自动运行脚本21
- 1.8安全问题21
- 1.9调试脚本23
- 1.10到哪里获得更多信息26
- 第2章VBScript教程27
- 2.1VBScript简介27
- 2.1.1变量28
- 2.1.2常量28
- 2.1.3命名常量29
- 2.1.4运算符和表达式30
- 2.1.5自动类型转换 32
- 2.2流程控制32
- 2.2.1If…Then语句33
- 2.2.2Select Case语句35
- 2.2.3Do While循环36
- 2.2.4用Exit Do终止循环38
- 2.2.5用For…Next语句计数39
- 2.2.6使用For…Each处理集合和数组39
- 2.3VBScript函数40
- 2.3.1调用函数和子例程40
- 2.3.2文档和语法41
- 2.3.3字符串操作函数42
- 2.3.4日期和时间函数45
- 2.4与用户交互47
- 2.4.1MsgBox()函数48
- 2.4.2InputBox()函数49
- 2.4.3用Wscript.Echo显示简单的文本信息51
- 2.5高级VBScript话题52
- 2.5.1错误处理52
- 2.5.2过程:函数和子例程53
- 2.5.3数组54
- 2.5.4变量作用域56
- 2.6如何进一步学习56
- 第3章对象57
- 3.1对象简介57
- 3.1.1类和实例58
- 3.1.2容器和集合58
- 3.1.3对象命名59
- 3.2在VBScript中使用对象60
- 3.2.1Automation和文档文件61
- 3.2.2属性和方法之间的区别61
- 3.2.3嵌套对象62
- 3.2.4释放对象63
- 3.2.5使用集合63
- 3.3在JScript中使用对象64
- 3.3.1区分大小写64
- 3.3.2使用集合64
- 3.4用ActivePerl使用对象65
- 3.4.1在WSH中运行Perl脚本66
- 3.4.2Perl对象接口66
- 3.4.3使用集合67
- 3.5用ActivePython使用对象68
- 3.6使用WScript对象69
- 3.7查找并使用不常见的对象72
- 第4章文件和注册表访问77
- 4.1完成实际工作77
- 4.2操作文件和文件夹77
- 4.2.1Scripting.FileSystemObject78
- 4.2.2操作文件和路径名82
- 4.2.3Scripting.Drive对象86
- 4.2.4Scripting.Folder对象88
- 4.2.5Scripting.File对象93
- 4.3读取和写入文件96
- 4.3.1TextStream对象97
- 4.3.2从文件读取文本99
- 4.3.3把文本写入文件100
- 4.3.4使用Stdin和Stdout104
- 4.3.5读取二进制文件106
- 4.4读取和写入XML110
- 4.4.1一些XML基础知识111
- 4.4.2读取XML文件117
- 4.4.3创建XML或HTML文件119
- 4.5操作程序和快捷方式121
- 4.5.1WScript.Shell对象122
- 4.5.2运行程序125
- 4.5.3创建和修改快捷方式130
- 4.6操作环境132
- 4.6.1提取环境信息133
- 4.6.2管理环境设置134
- 4.7操作注册表136
- 4.7.1查看注册表键和值137
- 4.7.2在注册表中保存信息137
- 第5章网络和打印机对象140
- 5.1管理网络和打印机连接140
- 5.2获取网络用户信息143
- 5.3管理驱动器映射145
- 5.3.1使用EnumNetworkDrives列出驱动映射145
- 5.3.2添加驱动器映射147
- 5.3.3删除驱动映射148
- 5.3.4在脚本中设置映射149
- 5.4管理网络打印机连接150
- 5.4.1显示打印机信息151
- 5.4.2连接到网络打印机152
- 5.4.3重定向DOS会话打印机153
- 5.4.4删除打印机集合154
- 5.4.5设置默认打印机155
- 5.5从脚本打印156
- 第6章消息和传真对象158
- 6.1使用CDO从脚本发送Email158
- 6.2CDO对象模型159
- 6.2.1CDO.Message对象161
- 6.2.2使用Field165
- 6.2.3CDO.Message对象的Field167
- 6.2.4CDO BodyParts集合168
- 6.2.5CDO BodyPart对象168
- 6.2.6ADO Stream对象171
- 6.2.7CDO.Configuration对象171
- 6.3用CDO发送消息175
- 6.3.1构建消息175
- 6.3.2添加附件178
- 6.3.3包含图像的HTML消息179
- 6.3.4指定接收者和主题180
- 6.3.5指定发送服务器180
- 6.3.6发送消息181
- 6.3.7综合应用182
- 6.4从脚本发传真186
- 6.4.1使用脚本发送传真189
- 6.4.2获取关于传真的更多信息190
- 第7章WMI192
- 7.1WMI简介192
- 7.1.1WMI功能193
- 7.1.2命名空间193
- 7.1.3远程管理Windows195
- 7.2进行WMI连接197
- 7.2.1WMI对象层级197
- 7.2.2使用WbemScripting.SWbemLocator对象连接200
- 7.2.3使用别名连接201
- 7.2.4连接到本地计算机202
- 7.2.5安全性和验证202
- 7.2.6指定安全选项205
- 7.3WMI集合和查询206
- 7.3.1SWbemServices207
- 7.3.2WQL查询208
- 7.3.3SWbemObjectSet209
- 7.3.4SWbemObject210
- 7.3.5SWbemMethodSet和SWbemPropertySet211
- 7.4Scriptomatic212
- 7.5WMI示例213
- 7.5.1收集系统信息214
- 7.5.2管理打印机215
- 7.5.3监控Windows服务包和热补丁215
- 7.5.4管理服务和任务216
- 7.6获取更多信息218
- 第8章活动目录脚本编程接口219
- 8.1管理用户目录219
- 8.1.1ADSI的使用219
- 8.1.2使用ADSI和WSH的局限性220
- 8.2ADSI概念220
- 8.2.1多重继承222
- 8.2.2创建ADSI对象223
- 8.2.3目录安全性225
- 8.2.4确定容器和叶子之间的区别226
- 8.3针对WinNT:提供者的ADSI228
- 8.3.1IADs229
- 8.3.2IADsCollection和IADsContainer231
- 8.3.3操作ADSI集合232
- 8.3.4IADsComputer和IADsComputer-Operations233
- 8.3.5IADsDomain235
- 8.3.6IADsFileService和IADsFileService-Operations237
- 8.3.7IADsFileShare239
- 8.3.8IADsGroup240
- 8.3.9IADsMembers241
- 8.3.10IADsNamespaces241
- 8.3.11IADsPrintJob和IADsPrintJob-Operations242
- 8.3.12IADsPrintQueue和IADsPrintQueue-Operations244
- 8.3.13IADsService和IADsService-Operations246
- 8.3.14IADsSession249
- 8.3.15IADsUser250
- 8.4IIS和Exchange251
- 8.5管理活动目录252
- 8.6活动目录对象254
- 8.6.1RootDSE254
- 8.6.2IADsO and IADsOU255
- 8.7开发ADSI脚本256
- 8.8EzAD Scriptomatic257
- 8.9获取更多信息258
- 第9章为计算机和网络管理部署脚本260
- 9.1在现实世界中使用脚本260
- 9.2使用WSF文件261
- 9.2.1WSF文件格式引用262
- 9.2.2用WSF文件提供在线帮助266
- 9.2.3处理命令行参数267
- 9.2.4包含多个脚本270
- 9.2.5综合应用271
- 9.3在网络上部署脚本274
- 9.4使用IExpress创建简单的安装程序274
- 9.4.1创建IExpress安装脚本或批处理文件277
- 9.4.2处理用户账号控制278
- 9.4.3提供一个Uninstall选项279
- 9.5编写脚本来管理其他计算机280
- 9.5.1远程脚本编程282
- 9.5.2将脚本复制到多台计算机上282
- 9.6脚本安全性问题284
- 9.6.1脚本签名285
- 9.6.2脚本编码器288
- 9.7建立登录脚本288
- 9.7.1用户配置文件登录脚本289
- 9.7.2在Window 7和Vista上用于登录、退出和其他事件的脚本290
- 9.7.3组策略登录、退出、启动和关闭脚本290
- 9.8计划脚本以自动运行291
- 9.8.1编写无人值守脚本292
- 9.8.2给事件日志发送消息293
- 9.8.3使用Task Scheduler调度脚本296
- 第二部分命令行环境
- 第10章CMD命令行299
- 10.1命令提示符窗口299
- 10.2运行CMD300
- 10.2.1用管理员权限打开一个命令提示符301
- 10.2.2CMD选项302
- 10.2.3关闭命令扩展303
- 10.3命令行处理303
- 10.3.1停止失控程序304
- 10.3.2控制台程序输入和输出304
- 10.3.3使用控制台窗口305
- 10.3.4I/O重定向和管道305
- 10.3.5在命令提示符窗口复制和粘贴308
- 10.3.6命令编辑和历史列表308
- 10.3.7名称自动完成309
- 10.3.8打开目录名称自动完成310
- 10.3.9一行上的多条命令311
- 10.3.10用括号组合命令311
- 10.3.11参数、逗号和引号312
- 10.3.12转义特殊字符312
- 10.4配置CMD命令312
- 10.4.1AutoRun312
- 10.4.2环境变量替换313
- 10.4.3搜索路径313
- 10.4.4预定义环境变量和虚拟环境变量315
- 10.4.5设置默认环境变量316
- 10.5内建命令317
- 10.5.1扩展命令327
- 10.5.2使用dir命令列出文件327
- 10.5.3用set命令设置变量330
- 10.5.4使用if命令的条件处理331
- 10.5.5使用for命令扫描文件332
- 10.6获取更多信息335
- 第11章批处理文件337
- 11.1为何使用批处理文件337
- 11.2创建并使用批处理文件337
- 11.3批处理文件编程339
- 11.4在批处理文件中显示信息340
- 11.5参数替代340
- 11.6参数编辑341
- 11.7使用if的条件处理343
- 11.7.1基本的if命令343
- 11.7.2查看文件和文件夹343
- 11.7.3检查一个程序的成功343
- 11.7.4执行if之后的几条命令344
- 11.7.5扩展的测试345
- 11.8处理多个参数346
- 11.9使用环境变量348
- 11.10使用for命令处理多个项349
- 11.10.1在for循环中使用多条命令350
- 11.10.2延迟扩展352
- 11.11使用批处理文件子例程353
- 11.12提示要求输入353
- 11.13有用的批处理文件技术354
- 11.13.1处理命令行选项354
- 11.13.2管理网络映射356
- 11.13.3检查正确参数357
- 11.13.4保存日志文件357
- 第12章Windows上的MS-DOS程序359
- 12.1Windows上的MS-DOS程序359
- 12.1.1虚拟DOS机359
- 12.1.2MS-DOS和COMMAND.COM361
- 12.2配置MS-DOS环境361
- 12.2.1窗口和内存选项362
- 12.2.2CONFIG.NT365
- 12.2.3AUTOEXEC.NT367
- 12.2.4MS-DOS环境变量367
- 12.3MS-DOS和网络367
- 12.4从MS-DOS打印368
- 12.4.1打印重定向368
- 12.4.2打印屏幕369
- 12.5使用MS-DOS配置串行通信369
- 12.6针对DOS使用特殊用途设备369
- 12.7管理MS-DOS程序369
- 第13章Windows命令行工具371
- 13.1Windows命令行程序371
- 13.2必备的命令行371
- 13.3GUI快捷方式372
- 13.4 通用的shell程序374
- 13.4.1findstr374
- 13.4.2more377
- 13.4.3tree378
- 13.4.4xcopy378
- 13.5文件管理工具380
- 13.5.1attrib381
- 13.5.2cacls382
- 13.6管理能力工具385
- 13.6.1driverquery385
- 13.6.2runas385
- 13.6.3tasklist386
- 13.6.4taskkill388
- 13.6.5sc388
- 13.7网络工具390
- 13.7.1ipconfig390
- 13.7.2net392
- 13.7.3netstat399
- 13.7.4nslookup400
- 13.7.5ping402
- 13.7.6tracert403
- 13.8获取更多工具404
- 第三部分Windows PowerShell
- 第14章Windows PowerShell简介405
- 14.1什么是Windows PowerShell405
- 14.1.1一个面向对象的命令Shell405
- 14.1.2基于.NET Framework407
- 14.1.3一个可扩展的环境408
- 14.2获取Windows PowerShell408
- 14.3PowerShell环境410
- 14.4PowerShell命令提示符410
- 14.4.1命令行编辑411
- 14.4.2复制和粘贴412
- 14.4.3暂停输出和停止一个失控程序412
- 14.4.4命令行语法412
- 14.5Cmdlet、对象和脚本414
- 14.6获取帮助416
- 14.7提示完整的命令417
- 14.8别名417
- 14.8.1如何获取别名列表418
- 14.8.2如何定义一个新的别名418
- 14.9导航目录和其他位置418
- 14.10PowerShell安全性419
- 14.10.1PowerShell脚本和用户账户控制419
- 14.10.2脚本执行策略420
- 14.11PowerShell配置文件421
- 第15章PowerShell编程423
- 15.1Windows PowerShell编程语言423
- 15.2Windows PowerShell语法423
- 15.3注释424
- 15.4变量和类型424
- 15.4.1字面值425
- 15.4.2对象方法和属性426
- 15.4.3对象构造器427
- 15.4.4字符串插值427
- 15.4.5特殊字符428
- 15.4.6Here-Strings428
- 15.4.7释放变量428
- 15.4.8预定义的变量429
- 15.4.9数组430
- 15.4.10常量434
- 15.5表达式434
- 15.5.1比较数组435
- 15.5.2字符串运算符437
- 15.5.3&(执行)运算符439
- 15.5.4运算符优先级439
- 15.5.5赋值运算符440
- 15.5.6语句值441
- 15.5.7强制转型441
- 15.5.8传引用442
- 15.5.9散列表442
- 15.6流程控制444
- 15.6.1if444
- 15.6.2while445
- 15.6.3do…while和do…until445
- 15.6.4for445
- 15.6.5foreach446
- 15.6.6switch447
- 15.6.7break449
- 15.6.8continue449
- 15.6.9程序块450
- 15.7异常处理450
- 15.7.1trap450
- 15.7.2try/catch/finally451
- 15.7.3throw451
- 15.8定义函数452
- 15.8.1函数参数452
- 15.8.2函数作用域454
- 15.8.3Dot-Source运算符454
- 15.8.4变量作用域455
- 15.8.5管道函数和过滤器456
- 15.8.6Splatting457
- 15.9使用.NET API458
- 15.9.1调用静态成员函数458
- 15.9.2操作字符串459
- 15.9.3操作日期和时间460
- 15.9.4转换值462
- 15.9.5数学函数462
- 第16章使用PowerShell464
- 16.1现实世界的PowerShell464
- 16.2命令行技术465
- 16.2.1生成对象465
- 16.2.2过滤466
- 16.2.3采取实际行动468
- 16.3格式化Cmdlet输出468
- 16.4操作文件和文件夹469
- 16.4.1查看一个文件是否存在473
- 16.4.2从文件读取文本473
- 16.4.3向文件写入文本474
- 16.4.4根据大小识别文件474
- 16.5创建有用的脚本475
- 16.5.1加注释475
- 16.5.2命令行处理575
- 16.5.3编写模块476
- 16.5.4把异常处理作为一种退出策略477
- 16.6使用散列表478
- 16.7PowerShell集成脚本环境479
- 16.7.1启动PowerShell ISE479
- 16.7.2配置ISE480
- 16.7.3创建和编辑脚本480
- 16.7.4在ISE中运行脚本481
- 16.7.5设置断点和单步执行482
- 16.7.6交互地检查和修改变量482
- 16.7.7有条件的断点483
- 16.8远程和后台PowerShell483
- 16.9如何继续学习483
- 附录
- 附录AVBScript参考485
- 附录BCMD和批处理文件语言参考495
- 附录C命令行程序参考503