Windows 7脚本编程和命令行工具指南
作 者: (美) Brian Knittel 著,李军 等译
出版时间:2011
丛编项: 华章专业开发者丛书
内容简介
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.1 VBScript4
1.2.2 JScript4
1.2.3 Perl4
1.2.4 Python5
1.2.5 Open Object REXX5
1.2.6 Ruby5
1.2.7 选择一种语言5
1.3 一个简单的脚本5
1.4 脚本文件的类型7
1.4.1 JSE和VBE:已编码脚本8
1.4.2 Windows脚本文件(WSF)8
1.4.3 Windows脚本组件10
1.4.4 WSH设置10
1.5 创建第一个脚本文件10
1.5.1 创建一个脚本文件夹并使其安全化10
1.5.2 创建脚本12
1.5.3 脚本编辑工具12
1.6 Windows如何运行脚本13
1.6.1 Wscript和Cscript13
1.6.2 运行脚本的方式14
1.6.3 给脚本传递信息15
1.6.4 保存脚本的结果16
1.6.5 Wscript和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.1 VBScript简介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.1 If…Then语句33
2.2.2 Select Case语句35
2.2.3 Do While循环36
2.2.4 用Exit Do终止循环38
2.2.5 用For…Next语句计数39
2.2.6 使用For…Each处理集合和数组39
2.3 VBScript函数40
2.3.1 调用函数和子例程40
2.3.2 文档和语法41
2.3.3 字符串操作函数42
2.3.4 日期和时间函数45
2.4 与用户交互47
2.4.1 MsgBox()函数48
2.4.2 InputBox()函数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.1 Automation和文档文件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.2 Perl对象接口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.1 Scripting.FileSystemObject78
4.2.2 操作文件和路径名82
4.2.3 Scripting.Drive对象86
4.2.4 Scripting.Folder对象88
4.2.5 Scripting.File对象93
4.3 读取和写入文件96
4.3.1 TextStream对象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.1 WScript.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.2 CDO对象模型159
6.2.1 CDO.Message对象161
6.2.2 使用Field165
6.2.3 CDO.Message对象的Field167
6.2.4 CDO BodyParts集合168
6.2.5 CDO BodyPart对象168
6.2.6 ADO Stream对象171
6.2.7 CDO.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.1 WMI简介192
7.1.1 WMI功能193
7.1.2 命名空间193
7.1.3 远程管理Windows195
7.2 进行WMI连接197
7.2.1 WMI对象层级197
7.2.2 使用WbemScripting.SWbemLocator对象连接200
7.2.3 使用别名连接201
7.2.4 连接到本地计算机202
7.2.5 安全性和验证202
7.2.6 指定安全选项205
7.3 WMI集合和查询206
7.3.1 SWbemServices207
7.3.2 WQL查询208
7.3.3 SWbemObjectSet209
7.3.4 SWbemObject210
7.3.5 SWbemMethodSet和SWbemPropertySet211
7.4 Scriptomatic212
7.5 WMI示例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.1 ADSI的使用219
8.1.2 使用ADSI和WSH的局限性220
8.2 ADSI概念220
8.2.1 多重继承222
8.2.2 创建ADSI对象223
8.2.3 目录安全性225
8.2.4 确定容器和叶子之间的区别226
8.3 针对WinNT:提供者的ADSI228
8.3.1 IADs229
8.3.2 IADsCollection和IADsContainer231
8.3.3 操作ADSI集合232
8.3.4 IADsComputer和IADsComputer-Operations233
8.3.5 IADsDomain235
8.3.6 IADsFileService和IADsFileService-Operations237
8.3.7 IADsFileShare239
8.3.8 IADsGroup240
8.3.9 IADsMembers241
8.3.10 IADsNamespaces241
8.3.11 IADsPrintJob和IADsPrintJob-Operations242
8.3.12 IADsPrintQueue和IADsPrintQueue-Operations244
8.3.13 IADsService和IADsService-Operations246
8.3.14 IADsSession249
8.3.15 IADsUser250
8.4 IIS和Exchange251
8.5 管理活动目录252
8.6 活动目录对象254
8.6.1 RootDSE254
8.6.2 IADsO and IADsOU255
8.7 开发ADSI脚本256
8.8 EzAD Scriptomatic257
8.9 获取更多信息258
第9章 为计算机和网络管理部署脚本260
9.1 在现实世界中使用脚本260
9.2 使用WSF文件261
9.2.1 WSF文件格式引用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.2 CMD选项302
10.2.3 关闭命令扩展303
10.3 命令行处理303
10.3.1 停止失控程序304
10.3.2 控制台程序输入和输出304
10.3.3 使用控制台窗口305
10.3.4 I/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.1 AutoRun312
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.1 Windows上的MS-DOS程序359
12.1.1 虚拟DOS机359
12.1.2 MS-DOS和COMMAND.COM361
12.2 配置MS-DOS环境361
12.2.1 窗口和内存选项362
12.2.2 CONFIG.NT365
12.2.3 AUTOEXEC.NT367
12.2.4 MS-DOS环境变量367
12.3 MS-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.1 Windows命令行程序371
13.2 必备的命令行371
13.3 GUI快捷方式372
13.4 通用的shell程序374
13.4.1 findstr374
13.4.2 more377
13.4.3 tree378
13.4.4 xcopy378
13.5 文件管理工具380
13.5.1 attrib381
13.5.2 cacls382
13.6 管理能力工具385
13.6.1 driverquery385
13.6.2 runas385
13.6.3 tasklist386
13.6.4 taskkill388
13.6.5 sc388
13.7 网络工具390
13.7.1 ipconfig390
13.7.2 net392
13.7.3 netstat399
13.7.4 nslookup400
13.7.5 ping402
13.7.6 tracert403
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.3 PowerShell环境410
14.4 PowerShell命令提示符410
14.4.1 命令行编辑411
14.4.2 复制和粘贴412
14.4.3 暂停输出和停止一个失控程序412
14.4.4 命令行语法412
14.5 Cmdlet、对象和脚本414
14.6 获取帮助416
14.7 提示完整的命令417
14.8 别名417
14.8.1 如何获取别名列表418
14.8.2 如何定义一个新的别名418
14.9 导航目录和其他位置418
14.10 PowerShell安全性419
14.10.1 PowerShell脚本和用户账户控制419
14.10.2 脚本执行策略420
14.11 PowerShell配置文件421
第15章 PowerShell编程423
15.1 Windows PowerShell编程语言423
15.2 Windows 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.6 Here-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.1 if444
15.6.2 while445
15.6.3 do…while和do…until445
15.6.4 for445
15.6.5 foreach446
15.6.6 switch447
15.6.7 break449
15.6.8 continue449
15.6.9 程序块450
15.7 异常处理450
15.7.1 trap450
15.7.2 try/catch/finally451
15.7.3 throw451
15.8 定义函数452
15.8.1 函数参数452
15.8.2 函数作用域454
15.8.3 Dot-Source运算符454
15.8.4 变量作用域455
15.8.5 管道函数和过滤器456
15.8.6 Splatting457
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.7 PowerShell集成脚本环境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
附录
附录A VBScript参考485
附录B CMD和批处理文件语言参考495
附录C 命令行程序参考503