第一部分用Windows Script Host进行脚本编程 1
第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 VBScript 4
1.2.2 JScript 4
1.2.3 Perl 4
1.2.4 Python 5
1.2.5 Open Object REXX 5
1.2.6 Ruby 5
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和Cscript 13
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在W SH中运行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… FileSystemObject 78
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和Stdout 104
4.3.5读取二进制文件 106
4.4读取和写入XML 110
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从脚本发送Email 158
6.2 CDO对象模型 159
6.2.1 CDO.Message对象 161
6.2.2使用Field 165
6.2.3 CDO.Message对象的Field 167
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章WMI 192
7.1 WMI简介 192
7.1.1 WMI功能 193
7.1.2命名空间 193
7.1.3远程管理Windows 195
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 SWbemServices 207
7.3.2 WQL查询 208
7.3.3 SWbemObjectSet 209
7.3.4 SWbemObject 210
7.3.5 SWbemMethodSet和SWbenProprerySet 211
7.4 Scriptomatic 212
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和W SH的局限性 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:提供者的ADSI 228
8.3.1 IADs 229
8.3.2 IADsCollection和IADsContainer 231
8.3.3操作ADSI集合 232
8.3.4 IADsComputer和IADsComputer-Operations 233
8.3.5 IADsDomain 235
8.3.6 IADsFileService和IADsFileService-Operations 237
8.3.7 IADsFileShare 239
8.3.8 IADsGroup 240
8.3.9 IADsMembers 241
8.3.10 IADsNamespaces 241
8.3.11 IADsPrintJob和IADsPrintJob-Operations 242
8.3.12 IADsPrintQueue和IADsPrintQueue-Operations 244
8.3.13 IADsService和IADsService-Operations 246
8.3.14 IADsSession 249
8.3.15 IADsUser 250
8.4 IIS和Exchange 251
8.5管理活动目录 252
8.6活动目录对象 254
8.6.1 RootDSE 254
8.6.2 IADsO and IADsOU 255
8.7开发ADSI脚本 256
8.8 EzAD Scriptomatic 257
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
第二部分 命令行环境 299
第10章CMD命令行 299
10.1命令提示符窗口 299
10.2运行CMD 300
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 1/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 AutoRun 312
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.COM 361
12.2配置MS-DOS环境 361
12.2.1窗口和内存选项 362
12.2.2 CONFIGNT 365
12.2.3 AUTOEXEC.NT 367
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 findstr 374
13.4.2 more 377
13.4.3 tree 378
13.4.4 xcopy 378
13.5文件管理工具 380
13.5.1 attrib 381
13.5.2 cacls 382
13.6管理能力工具 385
13.6.1 driverquery 385
13.6.2 runas 385
13.6.3 tasklist 386
13.6.4 taskkill 388
13.6.5 sc 388
13.7网络工具 390
13.7.1 ipconfig 390
13.7.2 net 392
13.7.3 netstat 399
13.7.4 nslookup 400
13.7.5 ping 402
13.7.6 tracert 403
13.8获取更多工具 404
第三部分Windows PowerShell 405
第14章 Windows PowerShell简介 405
14.1什么是Windows PowerShell 405
14.1.1一个面向对象的命令Shell 405
14.1.2基于.NET Framework 407
14.1.3一个可扩展的环境 408
14.2获取Windows PowerShell 408
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-Strings 428
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 if 444
15.6.2 while 445
15.6.3 do…while和do … until 445
15.6.4 for 445
15.6.5 foreach 446
15.6.6 switch 447
15.6.7 break 449
15.6.8 continue 449
15.6.9程序块 450
15.7异常处理 450
15.7.1 trap 450
15.7.2 try/catch/finally 451
15.7.3 throw 451
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 Splatting 457
15.9使用.NET API 458
15.9.1调用静态成员函数 458
15.9.2操作字符串 459
15.9.3操作日期和时间 460
15.9.4转换值 462
15.9.5数学函数 462
第16章 使用PowerShell 464
16.1现实世界的PowerShell 464
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启动PowerShellISE 479
16.7.2配置ISE 480
16.7.3创建和编辑脚本 480
16.7.4在ISE中运行脚本 481
16.7.5设置断点和单步执行 482
16.7.6交互地检查和修改变量 482
16.7.7有条件的断点 483
16.8远程和后台PowerShell 483
16.9如何继续学习 483
附录 485
附录A VBScript参考 485
附录B CMD和批处理文件语言参考 495
附录C命令行程序参考 503