第1章 背景介绍 1
1.1 为什么要重视PowerShell 1
1.2 本书适用读者 3
1.3 如何使用本书 3
1.4 搭建自己的实验环境 4
1.5 安装WindowsPowerShell 5
1.6 在线资源 7
1.7 赶紧使用PowerShell吧 7
第2章 初识PowerShell 8
2.1 选择你的“武器” 8
2.2 重新认识代码输入 13
2.3 常见误区 15
2.4 如何查看当前版本 15
2.5 动手实验 16
2.6 进一步学习 16
第3章 使用帮助系统 18
3.1 帮助系统:发现命令的方法 18
3.2 可更新的帮助 19
3.3 查看帮助 21
3.4 使用帮助找命令 22
3.5 详解帮助 24
3.6 访问“关于”主题 30
3.7 访问在线帮助 31
3.8 动手实验 32
第4章 运行命令 33
4.1 无需脚本,仅仅是运行命令 33
4.2 剖析一个命令 34
4.3 Cmdlet命名惯例 35
4.4 别名:命令的昵称 36
4.5 使用快捷方式 37
4.6 小小作弊一下:Show-Command 39
4.7 对扩展命令的支持 41
4.8 处理错误 43
4.9 常见误区 44
4.10 动手实验 45
第5章 使用提供程序 46
5.1 什么是提供程序 46
5.2 FileSystem的结构 49
5.3 文件系统——其他数据存储的模板 50
5.4 使用文件系统 51
5.5 使用通配符以及绝对路径 52
5.6 使用其他提供程序 54
5.7 动手实验 57
5.8 进一步学习 57
第6章 管道:连接命令 58
6.1 一个命令与另外一个命令连接:为你减负 58
6.2 输出结果到CSV或XML文件 58
6.3 管道传输到文件或打印机 63
6.4 转换成HTML 64
6.5 使用Cmdlets修改系统:终止进程和停止服务 65
6.6 常见误区 66
6.7 动手实验 68
第7章 扩展命令 69
7.1 如何让一个shell完成所有事情 69
7.2 关于产品的“管理shell” 70
7.3 扩展:找到并添加插件 70
7.4 扩展:找到并添加模块 72
7.5 命令冲突和移除扩展 75
7.6 玩转一个新的模块 75
7.7 配置脚本:在启动shell时预加载扩展 77
7.8 常见误区 79
7.9 动手实验 79
第8章 对象:数据的另一个名称 80
8.1 什么是对象 80
8.2 为什么PowerShell使用对象 81
8.3 探索对象:Get-Member 83
8.4 对象标签,也就是所谓的“属性” 84
8.5 对象行为,也就是所谓的“方法” 85
8.6 排序对象 86
8.7 选择所需的属性 86
8.8 在命令结束之前总是对象的形式 87
8.9 常见误区 89
8.10 动手实验 89
第9章 深入理解管道 91
9.1 管道:更少的输入,更强大的功能 91
9.2 PowerShell如何传输数据给管道 91
9.3 方案A:使用ByValue进行管道输入 92
9.4 方案B:使用ByProperty Name进行管道传输 95
9.5 数据不对齐时:自定义属性 99
9.6 括号命令 103
9.7 提取属性的值 104
9.8 动手实验 109
9.9 进一步学习 110
第10章 格式化及如何正确使用 111
10.1 格式化:让输出更加美观 111
10.2 默认格式 111
10.3 格式化表格 115
10.4 格式化列表 116
10.5 宽度的格式化 117
10.6 定制列和列表记录 118
10.7 输出到文件、打印机或者主机上 120
10.8 另外一个输出:网格 121
10.9 常见误区 122
10.10 动手实验 124
10.11 进一步学习 125
第11章 过滤和对比 126
11.1 只获取必要的内容 126
11.2 左过滤 127
11.3 对比操作符 127
11.4 过滤对象的管道 129
11.5 迭代的命令行模式 130
11.6 常见误区 132
11.7 动手实验 133
11.8 进一步学习 133
第12章 学以致用 134
12.1 定义任务 134
12.2 发现命令 134
12.3 学习如何使用命令 137
12.4 自学的一些技巧 141
12.5 动手实验 142
第13章 远程处理:一对一及一对多 143
13.1 PowerShell远程处理的原理 143
13.2 WinRM概述 145
13.3 一对一场景的 Enter-PSSession和Exit-PSSession 148
13.4 一对多场景的 Invoke-Command 150
13.5 远程命令和本地命令之间的差异 153
13.6 深入探讨 157
13.7 远程处理的配置选项 157
13.8 常见误区 158
13.9 动手实验 159
13.10 进一步学习 159
第14章 Windows管理规范 160
14.1 WMI概要 160
14.2 关于WMI的坏消息 162
14.3 探索WMI 163
14.4 选择你的武器:WMI 或CIM 167
14.5 使用Get-WmiObject 167
14.6 使用Get-CimInstance 171
14.7 WMI文档 172
14.8 常见误区 172
14.9 动手实验 173
14.10 进一步学习 173
第15章 多任务后台作业 174
15.1 利用PowerShell实现多任务同时处理 174
15.2 同步VS异步 174
15.3 创建本地作业 175
15.4 WMI作业 176
15.5 远程处理作业 177
15.6 获取作业执行结果 178
15.7 使用子作业 181
15.8 管理作业的命令 183
15.9 调度作业 185
15.10 常见困惑点 187
15.11 动手实验 188
第16章 同时处理多个对象 189
16.1 对于大量管理的自动化 189
16.2 首选方法:“批处理”cmdlet 190
16.3 MI方式:调用WMI方法 191
16.4 后备计划:枚举对象 195
16.5 常见误区 199
16.6 动手实验 202
第17章 安全警报 203
17.1 保证Shell安全 203
17.2 Windows PowerShell的安全目标 204
17.3 执行策略和代码签名 205
17.4 其他安全措施 211
17.5 其他安全漏洞 211
17.6 安全建议 212
17.7 动手实验 213
第18章 变量:一个存放资料的地方 214
18.1 变量简介 214
18.2 存储值到变量中 214
18.3 使用变量:有趣的引号 217
18.4 存储多个对象在一个变量中 219
18.5 双引号的其他技巧 223
18.6 声明变量类型 225
18.7 与变量相关的命令 227
18.8 针对变量的最佳实践 228
18.9 常见误区 228
18.10 动手实验 229
18.11 进一步学习 229
第19章 输入和输出 230
19.1 提示并显示信息 230
19.2 Read-Host命令 231
19.3 Write-Host命令 234
19.4 Write-Output命令 235
19.5 其他写入的方式 237
19.6 动手实验 238
19.7 进一步学习 238
第20章 轻松实现远程控制 239
20.1 PoweShell远程控制稍微容易一点 239
20.2 创建并使用可重用会话 239
20.3 利用Fnter-PSSession命令使用会话 241
20.4 利用Invoke-Command命令使用会话 243
20.5 隐式远程控制:导入一个会话 244
20.6 断开会话 245
20.7 动手实验 247
20.8 进一步学习 248
第21章 你把这叫作脚本 249
21.1 非编程,而更像是批处理文件 249
21.2 使得命令可重复执行 250
21.3 参数化命令 251
21.4 创建一个带参数的脚本 252
21.5 为脚本添加文档 254
21.6 一个脚本,一个管道 256
21.7 作用域初探 259
21.8 动手实验 261
第22章 优化可传参脚本 262
22.1 起点 262
22.2 让PowerShell去做最难的工作 263
22.3 将参数定义为强制化参数 264
22.4 添加参数别名 266
22.5 验证输入的参数 268
22.6 通过添加详细输出获得用户友好体验 269
22.7 动手实验 271
第23章 高级远程配置 272
23.1 使用其他端点 272
23.2 创建自定义端点 273
23.3 启用多跳远程(multi-hop remoting) 277
23.4 深入远程身份验证 278
23.5 动手实验 280
第24章 使用正则表达式解析文本文件 281
24.1 正则表达式的目标 281
24.2 正则表达式入门 282
24.3 通过-Match使用正则表达式 284
24.4 通过Select-String使用正则表达式 284
24.5 动手实验 286
24.6 进一步学习 287
第25章 额外的提示、技巧以及技术 288
25.1 Profile、提示以及颜色:自定义Shell界面 288
25.2 运算符:-AS,-IS,-Replace,-Join,-Spli,-IN,-Contains 292
25.3 字符串处理 295
25.4 日期处理 297
25.5 处理WMI日期 298
25.6 设置参数默认值 299
25.7 学习脚本块 300
25.8 更多的提示、技巧及技术 301
第26章 使用他人的脚本 302
26.1 脚本 302
26.2 逐行检查 307
26.3 动手实验 308
第27章 学无止境 311
27.1 进一步学习的思想 311
27.2 既然已经阅读了本书,那么我要从哪里开始呢 312
27.3 你会喜欢的其他资源 313
第28章 PowerShell备忘清单 314
28.1 标点符号 314
28.2 帮助文档 317
28.3 运算符 318
28.4 自定义属性与列的语法 318
28.5 管道参数输入 319
28.6 何时使用$ 320
附录 复习实验 321
实验回顾1:第1—6章 321
实验回顾2:第1—14章 324
实验回顾3:第1—19章 327