第1篇 Power Shell语法 2
第1章 Power Shell简介 2
1.1 什么是Power Shell 3
1.1.1 Power Shell的设计目标 3
1.1.2 Power Shell的设计定位 4
1.2 微软重新使用命令行的原因 4
1.3 学习方法 5
1.4 小结 6
第2章 安装与配置开发环境 7
2.1 Power Shell运行环境 8
2.1.1 安装要求 8
2.1.2 .NET框架 9
2.1.3 Power Shell 2.0 10
2.2 下载与安装.NET框架 10
2.2.1 安装前验证 10
2.2.2 下载.NET框架 11
2.2.3 安装.NET框架 12
2.3 下载安装Power Shell 14
2.3.1 下载Power Shell 14
2.3.2 安装Power Shell 15
2.4 运行Power Shell 17
2.4.1 运行方式 17
2.4.2 初次尝试Power Shell 18
2.5 小结 20
第3章 对象和对象类型 21
3.1 扩展类型系统 22
3.1.1 访问对象属性 22
3.1.2 使用对象方法 23
3.1.3 对象适配器 24
3.1.4 类型扩展 27
3.2 内置类型 28
3.2.1 字符串和字符串操作 28
3.2.2 数字类型 33
3.2.3 数组与集合 35
3.2.4 字典和哈希表 39
3.3 字面类型 42
3.3.1 类型转换 43
3.3.2 访问静态成员 47
3.4 小结 47
第4章 执行控制流 48
4.1 条件表达式 49
4.1.1 值比较 50
4.1.2 隐式类型转换 51
4.1.3 逻辑和位操作 52
4.1.4 布尔转换 56
4.1.5 字符互转换的作用 57
4.1.6 集合与条件表达式 58
4.2 分支语句 58
4.2.1 简单分支语句if/else 59
4.2.2 多分支语句switch 59
4.3 循环 62
4.3.1 简单循环语句while 62
4.3.2 循环和计数器 64
4.3.3 遍历集合的循环语句for each Loop 64
4.3.4 控制循环执行语句break和continue 65
4.4 小结 67
第5章 管道对象 68
5.1 传统基于文本的管道 69
5.2 基于对象的管道 69
5.3 使用Foreach-Object处理集合 71
5.4 使用Where-Object过滤集合 72
5.5 新增或删除指定对象的属性 73
5.6 排序集合 74
5.7 管道树 75
5.8 分类对象 75
5.9 采集对象统计信息 76
5.10 检测对象间的变化和不同 77
5.11 管道对象和功能编程 78
5.12 小结 78
第6章 运行脚本块 79
6.1 定义脚本块 80
6.2 返回值和参数 81
6.3 处理管道输入 86
6.3.1 变量作用域 88
6.4 将字符串作为表达式调用 93
6.5 脚本块作为委托 95
6.6 小结 96
第7章 运行函数 97
7.1 定义函数 98
7.1.1 函数体 98
7.1.2 函数参数 100
7.1.3 通过引用传递参数 102
7.1.4 返回值 103
7.1.5 作用域规则 104
7.2 过滤器 107
7.3 函数和脚本块 110
7.3.1 实现新的控制结构 110
7.3.2 脚本块策略 113
7.4 小结 115
第8章 命令别名 116
8.1 使用别名 117
8.1.1 创建别名 117
8.1.2 修改别名 119
8.1.3 导入/导出别名 121
8.2 别名提示、技巧和缺陷 124
8.2.1 名称冲突 124
8.2.2 复杂别名 126
8.2.3 删除破损别名 127
8.3 内置别名 129
8.3.1 类cmd.exe别名 129
8.3.2 类Unix别名 131
8.3.3 便捷别名 132
8.4 小结 133
第9章 提供程序 135
9.1 列举提供程序 136
9.2 驱动器 137
9.2.1 驱动器作用域 140
9.2.2 浏览驱动器 141
9.3 提供程序的能力 142
9.3.1 基本提供能力 142
9.3.2 驱动器提供程序 142
9.3.3 项提供程序 142
9.3.4 项容器提供程序 142
9.3.5 导航提供程序 143
9.3.6 项内容提供程序 143
9.3.7 项属性提供程序 143
9.3.8 动态项提供程序 144
9.3.9 项安全描述提供程序 144
9.4 小结 144
第10章 脚本文件 145
10.1 创建脚本 146
10.1.1 调用脚本 146
10.1.2 传递参数 147
10.1.3 返回值 151
10.2 从其他环境中执行脚本 152
10.3 开发和维护脚本库 153
10.3.1 以dot sourcing方式包含库 154
10.3.2 库路径 154
10.4 小结 155
第11章 错误处理和调试 156
11.1 处理错误 157
11.1.1 常见错误处理参数 158
11.1.2 诱捕错误 161
11.1.3 捕捉非终止性错误 170
11.1.4 抛出错误 172
11.2 调试代码 177
11.2.1 打印调试 178
11.2.2 步进调试脚本和中断执行 186
11.2.3 跟踪脚本执行细节 188
11.3 小结 192
第12章 脚本签名 193
12.1 代码签名如何工作 194
12.1.1 保证脚本的完整性 194
12.1.2 保证原始脚本 194
12.2 管理证书 195
12.3 创建自签名证书 197
12.3.1 创建认证证书 197
12.3.2 发行代码签名证书 200
12.4 签发脚本 204
12.5 在其他电脑中运行脚本 208
12.6 小结 209
第2篇 Power Shell基础应用第13章 Shell环境及其配置 211
13.1 Shell主机 212
13.2 用户配置脚本 214
13.2.1 设置所有用户和Shell 214
13.2.2 设置所有用户使用的特定Shell 215
13.2.3 设置特定用户和所有Shell 215
13.2.4 设置特定用户和特定Shell 215
13.3 使用已保存控制台配置工作 216
13.4 改变提示设置 217
13.5 小结 219
第14章 扩展类型系统 220
14.1 修改对象和类型 221
14.1.1 为单对象新增成员 221
14.1.2 为类的所有实例新增成员 226
14.2 扩展对象的格式 227
14.2.1 自定义视图 230
14.3 小结 232
第15章 获取帮助 233
15.1 帮助系统 234
15.1.1 基础知识 234
15.1.2 参数的详细信息 236
15.1.3 高级技巧 238
15.2 获取命令信息 243
15.3 获取对象信息 246
15.4 利用Internet获得帮助 247
15.5 小结 252
第16章 进程和服务 253
16.1 使用进程 254
16.1.1 获取进程列表 254
16.1.2 启动和停止进程 255
16.1.3 进程及其窗口 256
16.1.4 获取进程依赖的库 257
16.1.5 获取程序发布的信息 258
16.1.6 设置进程优先级 259
16.2 管理服务 259
16.2.1 改变服务状态 261
16.2.2 改变服务的属性 261
16.2.3 分析服务的依赖性 262
16.3 小结 262
第17章 输入和输出 263
17.1 读取内容 264
17.2 写入内容 266
17.3 指定编码方式 268
17.3.1 获取二进制内容 269
17.3.2 不同Unicode编码 270
17.4 从文本中提取数据 273
17.4.1 查找符合正则表达式的匹配 273
17.4.2 查找文件中的字符串 274
17.5 小结 274
第3篇 Power Shell高级应用第18章 管理PC 276
18.1 使用Windows事件日志 277
18.1.1 查看事件日志 277
18.1.2 读取事件日志 278
18.1.3 写入事件日志 280
18.1.4 搜索事件日志 283
18.1.5 管理事件日志 285
18.1.6 创建事件日志 290
18.2 性能计数器 291
18.2.1 Consuming Counter Data 292
18.2.2 监视程序 292
18.3 桌面计算机维护 293
18.3.1 维护计算机 294
18.3.2 监控磁盘空间 303
18.3.3 用户管理 304
18.3.4 设置桌面选项 310
18.4 维护网络 322
18.4.1 使用网络设置 322
18.4.2 设置网络适配器 328
18.4.3 配置Windows防火墙 338
18.5 Windows排错 340
18.5.1 启动故障排错 340
18.5.2 查看服务依存性 343
18.5.3 查看硬件问题 350
18.5.4 检查网络故障 352
18.6 证书存储 354
18.6.1 定位证书 354
18.6.2 管理证书 364
18.7 小结 371
第19章 Power Shell和万维网 373
19.1 基础 374
19.1.1 从网站获取文件 374
19.1.2 设置连接选项和调试连接问题 377
19.2 测试和验证网站 379
19.2.1 使用Test-Url验证页是否存在 380
19.2.2 检查网页是否包含破损的链接 381
19.3 使用新闻订阅Feed 383
19.3.1 获取Feed 383
19.4 调用Web Service 387
19.4.1 使用HTTP GET请求调用Web Service 388
19.4.2 使用HTTP POST请求调用Web Service 389
19.4.3 使用SOAP协议调用Web Service 391
19.5 处理FTP事务 393
19.5.1 从FTP服务器下载文件 393
19.5.2 上传文件到FTP服务器 394
19.6 小结 395
第20章 管理服务器 396
20.1 管理Internet信息服务 397
20.1.1 启用IIS 7.0 399
20.1.2 查看IIS 7.0配置 400
20.1.3 新建网站 409
20.1.4 创建应用程序池 412
20.1.5 启动和停止网站 414
20.2 管理网络服务 418
20.2.1 查看DNS配置 418
20.2.2 设置DNS服务器选项 426
20.2.3 查看DNS区域 429
20.2.4 创建DNS区域 431
20.2.5 管理WINS和DHCP 433
20.3 管理终端服务 435
20.3.1 设置终端服务选项 435
20.3.2 管理用户 442
20.4 配置群集服务 452
20.4.1 检查群集服务器 452
20.4.2 管理节点和移除群集 457
20.5 管理域用户 462
20.5.1 创建OU 462
20.5.2 创建域用户 464
20.5.3 修改用户属性 466
20.5.4 使用.csv文件创建用户 467
20.5.5 创建域组 468
20.5.6 添加用户到域组 470
20.6 管理SQL Server 2008 471
20.6.1 SQL Server 2008环境和提供程序 471
20.6.2 生成数据库脚本 475
20.7 小结 486
第21章 与COM对象交互 487
21.1 COM如何工作 488
21.2 Power Shell如何支持COM 488
21.3 通过COM界面脚本编程 490
21.3.1 Microsoft Word自动化 490
21.3.2 Microsoft Excel脚本 498
21.3.3 驱动Internet Explorer 503
21.4 与Windows脚本宿主代码协同工作 506
21.4.1 执行代码 507
21.4.2 在MSScript Control中公开对象 509
21.5 小结 510
第22章 用WMI管理Windows 511
22.1 WMI概述 512
22.2 WBEM和WMI组件 512
22.2.1 通用信息模型 512
22.2.2 网络传输 513
22.2.3 对象发现 514
22.3 Power Shell对WMI的支持 514
22.3.1 WMI查询工具Get-WmiObject 515
22.4 对WMI对象的语言支持 517
22.4.1 获得类和命名空间清单 520
22.4.2 WMI系统属性 522
22.5 查询硬件设备 523
22.6 获取软件信息 524
22.6.1 操作系统更新 524
22.6.2 已安装程序 525
22.7 网络配置 526
22.8 生成WMI代码 527
22.8.1 通过Scriptomatic生成WMI代码 527
22.9 小结 529
第23章 Power Shell社区扩展 531
23.1 安装和配置 532
23.1.1 标签扩展 532
23.1.2 编辑配置文件 533
23.1.3 获取帮助 533
23.2 文件系统工具 535
23.2.1 导航助手 535
23.2.2 NTFS助手 536
23.2.3 压缩和归档文件 539
23.3 网络工具 541
23.4 执行过程和命令 542
23.5 XML工具 544
23.6 使用图像文件 547
23.7 剪贴板助手 548
23.8 Internet Explorer订阅存储 552
23.9 实用程序 554
23.10 小结 557
第24章 PSEventing:Power Shell中的.NET事件 558
24.1 PSEventing 559
24.2 事件处理机制 559
24.3 FileSystem Watcher 560
24.4 监视写入系统事件日志的条目 562
24.5 处理WMI事件 563
24.6 检测脚本是否被用户终止 565
24.7 使用脚本块作为事件处理 567
24.8 小结 569
第25章 使用Power Tab加强Tab键自动补全 570
25.1 安装、禁用和卸载Power Tab 571
25.2 Power Tab的工作原理 573
25.2.1 数据栅格弹出窗口 575
25.3 配置Power Tab 576
25.3.1 智能感知补全程序 577
25.3.2 Tab扩展数据库 579
25.4 小结 581
第26章 Power Shell的安全性 582
26.1 安全概述 583
26.1.1 什么是安全 583
26.1.2 安全风险 583
26.2 安全模型 584
26.2.1 欺诈模型介绍 584
26.2.2 通过STRIDE模型分类 584
26.2.3 安全基础 585
26.2.4 黑名单/白名单 585
26.2.5 授权认证和角色 586
26.2.6 输入校验 586
26.2.7 代码注入 587
26.3 Power Shell环境的安全性 588
26.3.1 默认安全 588
26.3.2 管理命令路径 589
26.3.3 选择脚本执行策略 589
26.4 脚本签名 591
26.4.1 公钥加密及摘要 591
26.5 编写安全脚本 592
26.5.1 使用Secure String类 592
26.5.2 使用凭据 594
26.5.3 避免Invoke-Expression 597
26.6 小结 598
附录A Power Shell与其他语言的比较 599
附录B 管理实例 619
附录C Power Shell语法 629
附录D Power Shell语言快速参考 642
例3-1 使用.NET对象支持的Type()方法来获取对象的类型 22
例3-2 查找一个字符串中是否包含另外一个字符串 23
例3-3 不传递参数调用方法时不能省略后面的圆括号 23
例3-4 使用PSBase属性获取原始的未经适配器处理的对象 24
例3-5 读取XML文件中的内容 25
例3-6 说明Internet Explorer COM对象在Power Shell中如何工作 25
例3-7 获取System.Diagnostics.Process类型的扩展属性 27
例3-8 获取Process类型的所有扩展成员 28
例3-9 用一对单引号或者双引号括起字符序列创建字符串 29
例3-10 使用转义字符反引号“‘”处理引号转义 29
例3-11 包含‘a字符的字符串 29
例3-12 字符串的插入功能 31
例3-13 完全摆脱$process变量 31
例3-14 检测字符串是否以任意字母开头并以“s”或“n”结束 32
例3-15 匹配类似域名的字符串 32
例3-16 获取运行中程序的内存使用情况 34
例3-17 罗列其所有的元素并用逗号分隔创建数组 35
例3-18 创建空数组的方法 36
例3-19 通过起始和结束数字的数值区间序列来建立数组 36
例3-20 识别嵌套的数组语法并且将其转换为一个对象 37
例3-21 使用方括号[]来访问数组元素 37
例3-22 获取数组的第1个和最后一个元素 37
例3-23 用加运算符串联数组对象 38
例3-24 从对象集中搜索元素 39
例3-25 创建个人记录字典 40
例3-26 通过字面类型访问类型 42
例3-27 将字符串转换为整型 44
例3-28 从Ordered Dictionary对象转换到哈希表 45
例3-29 使用PSBase替代适配器视图获取真实的对象类型 46
例3-30 获取一个静态属性值 47
例4-1 比较一个变量值是否小于7 49
例4-2 比较字符串 51
例4-3 用大小写比较两个字符串 51
例4-4 比较字符串和数字类型 52
例4-5 检测一个文件是否具有.txt后缀并且大小超过10KB 52
例4-6 检验文件是否为今天创建或者修改的 53
例4-7 检查一个文件是否具有.txt后缀,或者是只读的 53
例4-8 检查一个文件是否为只读 53
例4-9 使用-band按位“与”数字3和1 54
例4-10 非零值转换为$true 56
例4-11 非零长度的字符串被转换为$true 56
例4-12 至少有一项的集合会返回$true 56
例4-13 将Word对象转换为布尔类型的值 57
例4-14 获取文件属性,System.IO.File Attributes枚举对象可以很容易地转换为字符串 57
例4-15 过滤集合 58
例4-16 获取字符串“LiMing” 58
例4-17 隐式类型转换的作用 58
例4-18 用多层复杂分支判断文件大小 59
例4-19 switch语句执行所有匹配的块 60
例4-20 使用正则表达式来执行操作 61
例4-21 为switch传递一个数字集合并判断数字类型 61
例4-22 等待notepad.exe进程退出 62
例4-23 do-while语句确定条件使循环重复执行 63
例4-24 使用for循环重写前一节的while循环 64
例4-25 使用for循环来达到遍历集合 64
例4-26 获取第1个有.log后缀的文件 65
例4-27 使用continue语句在遍历集合的过程中跳过偶数输出所有的奇数 66
例4-28 针对两个嵌套的foreach循环 66
例4-29 在外部循环中增加break语句 66
例5-1 将集合中所有元素与2相乘并返回一个新的集合 69
例5-2 获取所有以“Error”开头的字符串 70
例5-3 按照法语的习惯比较字符串 70
例5-4 将原始未排序的集合在排序之前保存在$unsort变量中 70
例5-5 将一些文件按照后缀分类 70
例5-6 快速统计数组值 71
例5-7 脚本块在所有对象上执行 72
例5-8 提取当前文件夹中文件的文件名和最后访问时间 73
例5-9 为文件列表增加Last Access Week Day属性 73
例5-10 选择当前文件夹中前面或后面的两个文件 73
例5-11 按照占用的内存大小排序进程列表 74
例5-12 使用Get-Process和Stop-Process来获取和终止进程 75
例5-13 根据系统服务的状态将集合分类 76
例5-14 收集与所有文件大小相关的信息 76
例5-15 检测当前的文件夹和昨天备份之间的不同 77
例5-16 确保没有因覆盖而丢失重要文件 77
例6-1 将脚本块赋值给一个变量 80
例6-2 获取脚本块的属性和方法 80
例6-3 多次执行脚本块,并通过不同的变量来访问它 81
例6-4 返回数字的脚本块 82
例6-5 使用return语句终止Write-Host命令的输出 82
例6-6 单个脚本块返回多个数字组成的数组 83
例6-7 演示$args的使用方法 83
例6-8 两个数相加时使用参数类型定义转换值类型 85
例6-9 调用者没有提供给$last Name参数值时使用“Unknown”默认值 85
例6-10 为$greeter脚本块的$last Name赋予默认值 86
例6-11 在$greeter中将$first Name参数设置为强制参数 86
例6-12 演示传递脚本块给For Each-Object并获取为所有文本文件最后的写入时间 86
例6-13 使用process段过滤数字集合并返回比5大的数字 87
例6-14 演示如何创建用于对管道中传入的所有数字求和脚本块 87
例6-15 累加管道中的所有元素 87
例6-16 计算特定日期和当前目录下文本文件最后修改时间之间的天数 88
例6-17 在$person Action脚本块中为$name变量赋值 89
例6-18 使用其获取$name变量的信息 90
例6-19 以$person Action脚本块为例把$name变量定义为全局变量 91
例6-20 演示如何在脚本块中隐藏变量 91
例6-21 在没有指定前缀的情况下为同名变量赋新值 92
例6-22 在脚本块中声明变量 92
例6-23 在同一个管道中的脚本块共享相同的作用域 93
例6-24 如何使用Invoke-Expression 94
例6-25 如何使用cmdlet创建允许用户输入表达式的计算程序 94
例6-26 如何声明脚本块并转换为委托 95
例7-1 使用函数输出字符 98
例7-2 获取之前定义的函数 99
例7-3 获取当前函数的信息 99
例7-4 如何使用Definition属性 99
例7-5 接收两个参数并将其和输出到控制台 100
例7-6 在函数中强制类型转换为整型参数 100
例7-7 格式化日期并输出到控制台 101
例7-8 强制通过抛出异常的形式使用默认值 101
例7-9 Format-Date函数在脚本块中声明变量 101
例7-10 创建函数交换两个变量值 102
例7-11 使用引用方式重写Swap Value函数 102
例7-12 在循环中输出多个对象的函数 103
例7-13 在集合中搜索对象的函数 103
例7-14 把对象写到控制台 104
例7-15 嵌套函数 104
例7-16 在当前作用域中覆盖父作用域中的同名函数 105
例7-17 在global和local作用域中声明同名函数 106
例7-18 定义接收文件的管道 107
例7-19 使用过滤器定义接收文件的管道 108
例7-20 定义一个ignore函数 111
例7-21 添加调试信息 112
例7-22 追踪除零操作并忽略所有错误 113
例8-1 检索在系统中注册的cmdlet的数目 117
例8-2 调用New-Alias实现输出 117
例8-3 返回所有以l开头的别名 118
例8-4 获取以l开头的别名 118
例8-5 获取所有以l开头的别名 119
例8-6 Test-Path cmdlet判断某个文件或目录是否存在 119
例8-7 更新log别名使用Write-Verbose替换Write-Host 119
例8-8 将log别名的指向改回Write-Host 120
例8-9 通过使用Set-Item cmdlet设置相应的记录 120
例8-10 通过设置别名记录的内容来使别名重新指向 120
例8-11 移除log别名的方法 120
例8-12 导出的别名文件为文本格式 121
例8-13 强制覆盖已经存在的别名 122
例8-14 通过指定过滤器的方式只导出部分别名 122
例8-15 分多次将别名导出 123
例8-16 将别名导出为脚本形式 123
例8-17 将别名导出为用逗号分隔的文件 123
例8-18 创建名为“Get-Command”的别名 124
例8-19 将别名dirr指向dir-recurse函数 127
例8-20 检查别名 127
例8-21 在cmd.exe下设置变量并获取其中的内容 130
例8-22 在Power Shell中执行相同操作的方法 130
例9-1 列出所有提供程序的清单 136
例9-2 获取所有提供程序管理单元的名称和.NET类型 136
例9-3 使用Get-PSDrive命令获取当前在系统中注册的驱动器 137
例9-4 创建docs:驱动器 138
例9-5 将网络共享\\FileServer\Public映射为本地的net:驱动器 139
例9-6 使用Remove-PSDrive移除映射的驱动器 139
例9-7 在驱动器被占用情况下强制删除的实例代码 139
例9-8 函数映射驱动器并返回项的根目录 140
例9-9 Power Shell中的目录切换 141
例9-10 获取驱动器 141
例10-1 创建脚本文件 146
例10-2 在指定目录中查找文件名符合指定通配符的文件 148
例10-3 重写脚本文件 148
例10-4 获取文件序列并过滤掉所有大于指定大小的文件 148
例10-5 使用脚本文件查找小于13个字节的文件 149
例10-6 创建一个访问父作用域的脚本文件 149
例10-7 在脚本文件内使用$global关键字修改父作用域变量 150
例10-8 生成对象并输出 151
例10-9 返回现有对象 152
例10-10 在脚本文件中的函数中退出整个脚本文件的执行 152
例10-11 调用Power Shell.exe并把脚本块名作为参数 153
例10-12 最简单的脚本库 154
例10-13 更换当前目录的位置 154
例11-1 调用包含终止错误的Raise-Terminating Error函数的脚本文件 158
例11-2 使用陷阱写一个脚本文件“Date-Traps.psl” 161
例11-3 处理不同数据格式的转换错误 163
例11-4 将continue语句替换为break语句 166
例11-5 删除某个文件 167
例11-6 生成的错误日志文件erroi-dump.xml的格式 167
例11-7 创建脚本Divide By Zero.psl捕获异常 169
例11-8 创建一个名为“Log-Non Terminating Errors.psl”的脚本 172
例11-9 演示如何抛出终止错误 173
例11-10 创建名为“Function-Parameters With Exce Obj.psl”的脚本文件 174
例11-11 创建名为“Function-Parameters Non Terminating.psl”的脚本文件 176
例11-12 创建名为“Prite-Debug.psl”的脚本文件 178
例11-13 创建名为“Print-Debug With Instrument.psl”脚本 181
例11-14 创建名为“Print-Debug Output.psl”脚本 182
例11-15 创建新的脚本,并命名为“Count-Characters Debug.psl” 187
例11-16 创建名为“Trace-Command.psl”的脚本文件 189
例12-1 列举用户管理证书 196
例13-1 获取宿主对象及其提供的内容 212
例13-2 使用PS Host User Inrerface方法 213
例13-3 PS Host User Interface对象提供Shell属性 213
例13-4 为特定用户的Shell添加配置 215
例13-5 添加PS Eventing管理单元 216
例13-6 将判断过程封装为函数Is-Administrator 218
例14-1 创建名为“Person-Define.psl”的范例脚本 223
例14-2 在新的脚本文件Person-All.psl中测试新创建的方法和属性 224
例14-3 列出后缀为“psl”的所有文件 227
例14-4 使用Update-Format Data cmdlet创建自定义制表符视图 230
例15-1 显示所有以“about_”开头的cmdlet的帮助 234
例15-2 集合用管道传递给select获取唯一的分类值 235
例15-3 获取特定语言的主题或者Help File分类 236
例15-4 获取Get-Child Item的-filter参数的信息 236
例15-5 获取Get-Help的parameter参数的信息 237
例15-6 演示包含处理文件和项目的Microsoft.Power Shell.Management管理单元的帮助文件 238
例15-7 使用Get-Help获取帮助主题 239
例15-8 获取Add-Content帮助主题的detail和description属性 239
例15-9 查看保存在AML文件中的例子 241
例15-10 将通过索引值访问参数的方法用于访问帮助信息中 241
例15-11 使用foreach来遍历一系列的文件 242
例15-12 使用notice.txt脚本块作为查询条件来找到目标实例 243
例15-13 获取动词部分的cmdlet返回所有涉及stop的cmdlet 244
例15-14 获取所有与证书处理相关的命令 245
例15-15 在控制台提示符下输入Get-Command help命令 245
例15-16 使用Get-Member cmdlet获取文件属性 246
例15-17 获取Date Time类型的静态属性 247
例15-18 验证[datetime]∷Parse静态方法接收字符串参数并返回Date Time对象 247
例15-19 使用Windows脚本宿主对象的Open()方法打开URL 248
例15-20 创建一个带有单个参数的Search-Msdn函数 249
例15-21 导入System.Web并调用类 249
例15-22 使用Show-Msdn Help函数获取对象并打开MSDN的帮助页面 250
例15-23 创建使用基于Google或者live.com搜索的函数 250
例16-1 获取所有与Process相关的cmdlet的方法 254
例16-2 按照特定属性值排序所有进程并返回顶端的5个 254
例16-3 按照WS(Working Set)属性检查工作区 254
例16-4 执行Get-Process命令 255
例16-5 尝试关闭Notepad窗口 256
例16-6 获取到所有Google搜索的浏览器窗口 257
例16-7 获取Power Shell的存放位置 257
例16-8 获取计算器依赖的库清单 258
例16-9 获取使用动态库的进程清单 258
例16-10 获取当前计算机中部分运行程序的发布信息清单 258
例16-11 降低安装程序msiexec.exe的优先级 259
例16-12 获取当前运行的所有服务 260
例16-13 通过服务名类似DNS*的通配符查询DNS client服务 260
例16-14 通过获取所有匹配*net*通配符获取Windows下与网络相关的服务 260
例17-1 创建通用脚本 265
例18-1 创建用于查询系统日志存档策略的脚本文件 287
例18-2 修改日志的存档策略 287
例18-3 创建事件日志 290
例18-4 获取分区信息 294
例18-5 获取系统中存在的分区属性 295
例18-6 获取硬盘特定分区的配置信息 297
例18-7 查询系统中存在的逻辑磁盘 298
例18-8 更改计算机名 299
例18-9 获得过期文件并生成列表 303
例18-10 创建域账户 305
例18-11 创建本地用户组 307
例18-12 禁用或启用特定账户的权限 308
例18-13 检查屏幕保护程序 311
例18-14 创建一个screensaver表 314
例18-15 提供电源配置信息 316
例18-16 设置电源计划 319
例18-17 检测网络适配器的状态 322
例18-18 收集特定网络适配器的用于排错的详细信息 325
例18-19 过滤无用属性 327
例18-20 获取网络适配器的配置信息 330
例18-21 控制DHCP 336
例18-22 检测端口 339
例18-23 启用远程管理 340
例18-24 输出错误原因 340
例18-25 读取引导配置 341
例18-26 查看服务的依存关系 344
例18-27 检查硬件驱动 346
例18-28 查询未启动的自动运行服务 349
例18-29 检查网络故障 352
例18-30 列出证书 357
例18-31 定位过期的证书 360
例18-32 识别即将过期的证书 362
例18-33 删除大量证书 368
例19-1 重建一个Web Proxy对象 378
例19-2 创建一个HEAD请求 380
例19-3 检测网页链接 381
例19-4 获取Feed 383
例19-5 获取RDF格式 386
例19-6 获取下一周的天气预报 389
例19-7 传递SOAP消息给服务器 391
例20-1 查看网站信息 400
例20-2 获取某个特定网站的主目录地址 401
例20-3 获取当前主机中所有程序池的信息 403
例20-4 查看应用程序池的默认值 405
例20-5 列出虚拟目录 408
例20-6 创建网站 410
例20-7 添加应用程序池 412
例20-8 关闭网站 415
例20-9 查询DNS根提示信息 422
例20-10 创建DNS区域 431
例20-11 获取有关WINS服务器和DHCP服务器的配置信息 434
例20-12 检查终端服务配置 436
例20-13 临时禁止用户通过终端服务接入 438
例20-14 读取终端服务器用户设置 443
例20-15 分配访问权限 444
例20-16 设置客户端桌面颜色 445
例20-17 设置客户端壁纸 448
例20-18 启用客户端活动桌面 450
例20-19 查看群集配置 452
例20-20 查看节点配置 455
例20-21 添加和移除群集节点 457
例20-22 移除群集 460
例20-23 访问和控制OU 463
例20-24 创建域用户 464
例20-25 创建域组 469
例20-26 添加用户到域组 470
例20-27 加载SMO程序集 475
例20-28 生成数据库中所有的存储过程 482
例20-29 生成数据库中所有的函数 483
例20-30 生成数据库中所有的XML方案 484
例20-31 生成数据库中所有的用户 485
例21-1 读取文档内容 490
例21-2 从Word文档中读取出原始的段落结构和内容 492
例21-3 逐句读取文档内容 492
例21-4 读取Words集合 493
例21-5 创建和修改文档 494
例21-6 把字体颜色修改为红色 495
例21-7 拼写错误检查 497
例21-8 从工作表中读取单元格值 499
例21-9 遍历区域中的单元格以获取其值 501
例21-10 设置单元格内容 502
例21-11 控制浏览器进程 504
例21-12 提取搜索结果 505
例24-1 订阅删除事件 560
例24-2 使用WMI事件来获取Windows时间服务(W32 Time)的停止时间 563
例24-3 WMI查询 564
例24-4 监视文件夹 565
例24-5 扩展文件系统监视程序 567
例26-1 创建名为Start-Local User Manager的函数 595