本書通過大量實(shí)例帶領(lǐng)系統(tǒng)管理員將眾多的日常任務(wù)自動(dòng)化,構(gòu)建自定義工具,充分利用神通廣大的PowerShell。全書分為三大部分。部分概述PowerShell的基本功能和用法,以及一些基本的編程概念,如變量、對象、函數(shù)、模塊等。第二部分詳述日常任務(wù)的自動(dòng)化,內(nèi)容包括如何解析結(jié)構(gòu)化數(shù)據(jù),以及如何構(gòu)建服務(wù)器管理工具。第三部分介紹如何構(gòu)建模塊,內(nèi)容涉及優(yōu)秀模塊的設(shè)計(jì)策略,以及將測試服務(wù)器環(huán)境自動(dòng)化,預(yù)置Hyper-V虛擬機(jī),安裝操作系統(tǒng),部署和配置SQL服務(wù)器等。
PowerShell既是腳本語言,也是執(zhí)行系統(tǒng)管理任務(wù)的shell,可用于控制和自動(dòng)化IT系統(tǒng)的方方面面。本書由五次榮獲微軟MVP的PowerShell行家亞當(dāng)·伯特倫傾情著述,教你使用PowerShell這一省時(shí)利器,實(shí)現(xiàn)系統(tǒng)管理任務(wù)自動(dòng)化。
- 組合命令、控制流、處理錯(cuò)誤、編寫腳本、遠(yuǎn)程運(yùn)行腳本,并使用PowerShell測試框架Pester測試腳本
- 解析XML和JSON等結(jié)構(gòu)化數(shù)據(jù),使用常見服務(wù)編寫實(shí)際可用的服務(wù)器清點(diǎn)腳本
- 設(shè)計(jì)并構(gòu)建PowerShell模塊,證明PowerShell并不局限于臨時(shí)腳本編程
- 使用PowerShell完全自動(dòng)部署Windows
- 僅用幾個(gè)ISO文件在Hyper-V主機(jī)上構(gòu)建完整的AD林
- 僅用幾行代碼創(chuàng)建任意數(shù)量的Web服務(wù)器和SQL服務(wù)器
亞當(dāng)·伯特倫(Adam Bertram),微軟MVP,擁有20余年信息技術(shù)從業(yè)經(jīng)驗(yàn),專注于系統(tǒng)管理、DevOps、自動(dòng)化技術(shù)等領(lǐng)域,創(chuàng)辦了流行信息技術(shù)知識(shí)服務(wù)平臺(tái)TechSnips,在Pluralsight和LinkedIn的在線學(xué)習(xí)平臺(tái)上講授PowerShell課程,惠及數(shù)萬學(xué)習(xí)者。
【譯者介紹】
安道,專注于現(xiàn)代計(jì)算機(jī)技術(shù)書的翻譯,譯有《流暢的Python》《Flask Web開發(fā)》《Python網(wǎng)絡(luò)編程攻略》《Ruby on Rails教程》等書。
第 一部分 基礎(chǔ)知識(shí)
第 1 章 上手體驗(yàn) 2
1.1 打開PowerShell控制臺(tái) 2
1.2 使用DOS命令 3
1.3 探索PowerShell命令 4
1.4 獲取幫助 6
1.4.1 顯示文檔 6
1.4.2 學(xué)習(xí)一般主題 7
1.5 更新文檔 8
1.6 小結(jié) 9
第 2 章 PowerShell基本概念 10
2.1 變量 10
2.1.1 顯示及修改變量 10
2.1.2 用戶定義的變量 11
2.1.3 自動(dòng)變量 13
2.2 數(shù)據(jù)類型 16
2.2.1 布爾值 16
2.2.2 整數(shù)和浮點(diǎn)數(shù) 16
2.2.3 字符串 18
2.3 對象 20
2.3.1 查看屬性 20
2.3.2 使用Get-Member cmdlet 21
2.3.3 調(diào)用方法 22
2.4 數(shù)據(jù)結(jié)構(gòu) 23
2.4.1 數(shù)組 23
2.4.2 ArrayList 26
2.4.3 哈希表 27
2.5 自定義對象 30
2.6 小結(jié) 31
第 3 章 組合命令 32
3.1 啟動(dòng)一個(gè)Windows服務(wù) 32
3.2 使用管道 33
3.2.1 通過管道在命令間傳遞對象 33
3.2.2 通過管道在命令間傳遞數(shù)組 33
3.2.3 參數(shù)綁定 34
3.3 編寫腳本 36
3.3.1 設(shè)置執(zhí)行策略 37
3.3.2 PowerShell腳本編程 38
3.4 小結(jié) 40
第 4 章 控制流 41
4.1 理解控制流 41
4.2 使用條件語句 42
4.2.1 用運(yùn)算符構(gòu)建表達(dá)式 42
4.2.2 if語句 43
4.2.3 else語句 44
4.2.4 elseif語句 44
4.2.5 switch語句 46
4.3 使用循環(huán) 47
4.3.1 foreach循環(huán) 47
4.3.2 for循環(huán) 50
4.3.3 while循環(huán) 51
4.3.4 do/while循環(huán)和do/until循環(huán) 51
4.4 小結(jié) 52
第 5 章 錯(cuò)誤處理 53
5.1 了解異常和錯(cuò)誤 53
5.2 處理非終止性錯(cuò)誤 54
5.3 處理終止性錯(cuò)誤 56
5.4 探索$Error自動(dòng)變量 57
5.5 小結(jié) 58
第 6 章 編寫函數(shù) 59
6.1 函數(shù)與cmdlet 59
6.2 定義函數(shù) 60
6.3 為函數(shù)添加參數(shù) 61
6.3.1 創(chuàng)建簡單的參數(shù) 61
6.3.2 參數(shù)屬性:Mandatory 62
6.3.3 參數(shù)的默認(rèn)值 63
6.3.4 為參數(shù)添加驗(yàn)證屬性 63
6.4 接受管道輸入 65
6.4.1 再添加一個(gè)參數(shù) 65
6.4.2 讓函數(shù)支持管道 66
6.4.3 添加process塊 67
6.5 小結(jié) 67
第 7 章 探索模塊 68
7.1 探索默認(rèn)模塊 68
7.1.1 查找會(huì)話中的模塊 68
7.1.2 查找計(jì)算機(jī)中的模塊 69
7.1.3 導(dǎo)入模塊 71
7.2 PowerShell模塊的構(gòu)成 72
7.2.1 .psm1文件 72
7.2.2 模塊清單文件 73
7.3 使用自定義模塊 74
7.3.1 查找模塊 74
7.3.2 安裝模塊 75
7.3.3 卸載模塊 76
7.4 自己創(chuàng)建模塊 76
7.5 小結(jié) 77
第 8 章 遠(yuǎn)程運(yùn)行腳本 78
8.1 使用腳本塊 78
8.1.1 使用Invoke-Command在遠(yuǎn)程系統(tǒng)中運(yùn)行代碼 80
8.1.2 在遠(yuǎn)程計(jì)算機(jī)中運(yùn)行本地腳本 81
8.1.3 遠(yuǎn)程使用本地變量 81
8.2 使用會(huì)話 83
8.2.1 新建會(huì)話 83
8.2.2 在會(huì)話中調(diào)用命令 84
8.2.3 打開交互式會(huì)話 85
8.2.4 斷開及重新連接會(huì)話 85
8.2.5 使用Remove-PSSession刪除會(huì)話 87
8.3 解讀PowerShell遠(yuǎn)程處理身份驗(yàn)證 88
8.3.1 雙躍點(diǎn)問題 88
8.3.2 使用CredSSP繞過雙躍點(diǎn)問題 89
8.4 小結(jié) 91
第 9 章 使用Pester進(jìn)行測試 92
9.1 Pester簡介 92
9.2 Pester基礎(chǔ)知識(shí) 93
9.2.1 Pester文件 93
9.2.2 describe塊 93
9.2.3 context塊 94
9.2.4 it塊 94
9.2.5 斷言 95
9.3 執(zhí)行Pester測試 96
9.4 小結(jié) 96
第二部分 日常任務(wù)自動(dòng)化
第 10 章 解析結(jié)構(gòu)化數(shù)據(jù) 99
10.1 CSV文件 99
10.1.1 讀取CSV文件 99
10.1.2 創(chuàng)建CSV文件 103
10.1.3 項(xiàng)目1:編寫計(jì)算機(jī)清點(diǎn)報(bào)告 104
10.2 Excel電子表格 107
10.2.1 創(chuàng)建Excel電子表格 108
10.2.2 讀取Excel電子表格 109
10.2.3 向Excel電子表格中添加行 110
10.2.4 項(xiàng)目2:創(chuàng)建Windows服務(wù)監(jiān)控工具 111
10.3 JSON數(shù)據(jù) 112
10.3.1 讀取JSON 113
10.3.2 創(chuàng)建JSON字符串 114
10.3.3 項(xiàng)目3:查詢并解析REST API 115
10.4 小結(jié) 118
第 11 章 AD任務(wù)自動(dòng)化 119
11.1 環(huán)境要求 119
11.2 安裝ActiveDirectory PowerShell模塊 120
11.3 查詢和篩選AD對象 120
11.3.1 篩選對象 121
11.3.2 返回單個(gè)對象 122
11.3.3 項(xiàng)目4:查找30天內(nèi)未修改密碼的用戶賬戶 123
11.4 創(chuàng)建和修改AD對象 124
11.4.1 用戶和計(jì)算機(jī) 124
11.4.2 組 126
11.4.3 項(xiàng)目5:創(chuàng)建員工配置腳本 127
11.5 與其他數(shù)據(jù)源同步 130
11.5.1 項(xiàng)目6:編寫同步腳本 131
11.5.2 映射數(shù)據(jù)源屬性 131
11.5.3 定義返回相似屬性的函數(shù) 132
11.5.4 在AD中查找匹配對象 134
11.5.5 修改AD屬性 135
11.6 小結(jié) 136
第 12 章 Azure任務(wù)自動(dòng)化 137
12.1 環(huán)境要求 137
12.2 Azure身份驗(yàn)證 137
12.2.1 創(chuàng)建服務(wù)主體 138
12.2.2 使用Connect-AzAccount實(shí)現(xiàn)非交互式身份驗(yàn)證 140
12.3 創(chuàng)建Azure虛擬機(jī)及所有依賴 140
12.3.1 創(chuàng)建資源組 141
12.3.2 創(chuàng)建網(wǎng)絡(luò)棧 141
12.3.3 創(chuàng)建存儲(chǔ)賬戶 143
12.3.4 創(chuàng)建操作系統(tǒng)映像 143
12.3.5 收尾工作 145
12.3.6 自動(dòng)創(chuàng)建虛擬機(jī) 146
12.4 部署Azure Web應(yīng)用 146
12.5 部署Azure SQL數(shù)據(jù)庫 147
12.5.1 創(chuàng)建Azure SQL服務(wù)器 148
12.5.2 創(chuàng)建Azure SQL數(shù)據(jù)庫 149
12.5.3 創(chuàng)建SQL服務(wù)器防火墻規(guī)則 149
12.5.4 測試SQL數(shù)據(jù)庫 150
12.6 小結(jié) 151
第 13 章 Amazon Web Services任務(wù)自動(dòng)化 152
13.1 環(huán)境要求 152
13.2 AWS身份驗(yàn)證 152
13.2.1 使用根用戶驗(yàn)證身份 153
13.2.2 創(chuàng)建IAM用戶和角色 154
13.2.3 驗(yàn)證IAM用戶的身份 156
13.3 創(chuàng)建一個(gè)AWS EC2實(shí)例 156
13.3.1 虛擬私有云 157
13.3.2 互聯(lián)網(wǎng)網(wǎng)關(guān) 158
13.3.3 路由 158
13.3.4 子網(wǎng) 159
13.3.5 為EC2實(shí)例分配一個(gè)AMI 160
13.3.6 錦上添花 161
13.4 部署Elastic Beanstalk應(yīng)用 162
13.4.1 創(chuàng)建應(yīng)用 163
13.4.2 部署包 165
13.5 在AWS中創(chuàng)建SQL Server數(shù)據(jù)庫 167
13.6 小結(jié) 170
第 14 章 創(chuàng)建服務(wù)器清點(diǎn)腳本 171
14.1 環(huán)境要求 171
14.2 創(chuàng)建項(xiàng)目腳本 171
14.3 定義終輸出 172
14.4 探索腳本輸入 172
14.5 查詢單臺(tái)服務(wù)器 173
14.6 提前規(guī)劃:合并不同類型的信息 174
14.7 查詢遠(yuǎn)程文件 176
14.8 查詢Windows Management Instrumentation 178
14.8.1 磁盤空閑空間 179
14.8.2 操作系統(tǒng)信息 180
14.8.3 內(nèi)存 181
14.8.4 網(wǎng)絡(luò)信息 183
14.9 Windows服務(wù) 186
14.10 清理和優(yōu)化腳本 188
14.11 小結(jié) 190
第三部分 自制模塊
第 15 章 配置虛擬環(huán)境 194
15.1 環(huán)境要求 194
15.2 創(chuàng)建模塊 195
15.2.1 創(chuàng)建空模塊 196
15.2.2 創(chuàng)建模塊清單文件 196
15.2.3 函數(shù)名稱使用固定的前綴 196
15.2.4 導(dǎo)入新模塊 197
15.3 自動(dòng)配置虛擬環(huán)境 197
15.3.1 虛擬交換機(jī) 198
15.3.2 虛擬機(jī) 199
15.3.3 虛擬硬盤 201
15.4 使用Pester測試新定義的函數(shù) 205
15.5 小結(jié) 205
第 16 章 安裝操作系統(tǒng) 206
16.1 環(huán)境要求 206
16.2 部署操作系統(tǒng) 207
16.2.1 創(chuàng)建VHDX文件 207
16.2.2 依附虛擬機(jī) 209
16.3 自動(dòng)部署操作系統(tǒng) 210
16.4 在磁盤中存儲(chǔ)加密憑據(jù) 211
16.5 PowerShell Direct功能 213
16.6 Pester測試 214
16.7 小結(jié) 215
第 17 章 部署AD 216
17.1 環(huán)境要求 216
17.2 創(chuàng)建AD林 216
17.3 構(gòu)建林 217
17.3.1 將安全字符串保存到磁盤中 217
17.3.2 自動(dòng)創(chuàng)建林 218
17.3.3 填充域 220
17.4 編寫并運(yùn)行Pester測試 224
17.5 小結(jié) 226
第 18 章 創(chuàng)建并配置SQL服務(wù)器 227
18.1 環(huán)境要求 227
18.2 創(chuàng)建虛擬機(jī) 227
18.3 安裝操作系統(tǒng) 228
18.4 添加Windows無人值守應(yīng)答文件 228
18.5 將SQL服務(wù)器添加到域中 229
18.5.1 安裝SQL Server 231
18.5.2 將文件復(fù)制到SQL服務(wù)器中 231
18.5.3 運(yùn)行SQL Server安裝程序 232
18.6 自動(dòng)安裝SQL Server 233
18.7 運(yùn)行Pester測試 236
18.8 小結(jié) 237
第 19 章 重構(gòu)代碼 238
19.1 回頭看New-PowerLabSqlServer函數(shù) 238
19.2 使用參數(shù)集 242
19.3 小結(jié) 245
第 20 章 創(chuàng)建并配置IIS Web服務(wù)器 246
20.1 環(huán)境要求 246
20.2 安裝和設(shè)置 246
20.3 從頭開始構(gòu)建Web服務(wù)器 248
20.4 WebAdministration模塊 248
20.5 為網(wǎng)站配置SSL 251
20.6 小結(jié) 254