譯者序
前言
第壹部分 用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