本書通過大量實例帶領(lǐng)系統(tǒng)管理員將眾多的日常任務(wù)自動化,構(gòu)建自定義工具,充分利用神通廣大的PowerShell。全書分為三大部分。部分概述PowerShell的基本功能和用法,以及一些基本的編程概念,如變量、對象、函數(shù)、模塊等。第二部分詳述日常任務(wù)的自動化,內(nèi)容包括如何解析結(jié)構(gòu)化數(shù)據(jù),以及如何構(gòu)建服務(wù)器管理工具。第三部分介紹如何構(gòu)建模塊,內(nèi)容涉及優(yōu)秀模塊的設(shè)計策略,以及將測試服務(wù)器環(huán)境自動化,預(yù)置Hyper-V虛擬機,安裝操作系統(tǒng),部署和配置SQL服務(wù)器等。
PowerShell既是腳本語言,也是執(zhí)行系統(tǒng)管理任務(wù)的shell,可用于控制和自動化IT系統(tǒng)的方方面面。本書由五次榮獲微軟MVP的PowerShell行家亞當(dāng)·伯特倫傾情著述,教你使用PowerShell這一省時利器,實現(xiàn)系統(tǒng)管理任務(wù)自動化。
- 組合命令、控制流、處理錯誤、編寫腳本、遠程運行腳本,并使用PowerShell測試框架Pester測試腳本
- 解析XML和JSON等結(jié)構(gòu)化數(shù)據(jù),使用常見服務(wù)編寫實際可用的服務(wù)器清點腳本
- 設(shè)計并構(gòu)建PowerShell模塊,證明PowerShell并不局限于臨時腳本編程
- 使用PowerShell完全自動部署Windows
- 僅用幾個ISO文件在Hyper-V主機上構(gòu)建完整的AD林
- 僅用幾行代碼創(chuàng)建任意數(shù)量的Web服務(wù)器和SQL服務(wù)器
亞當(dāng)·伯特倫(Adam Bertram),微軟MVP,擁有20余年信息技術(shù)從業(yè)經(jīng)驗,專注于系統(tǒng)管理、DevOps、自動化技術(shù)等領(lǐng)域,創(chuàng)辦了流行信息技術(shù)知識服務(wù)平臺TechSnips,在Pluralsight和LinkedIn的在線學(xué)習(xí)平臺上講授PowerShell課程,惠及數(shù)萬學(xué)習(xí)者。
【譯者介紹】
安道,專注于現(xiàn)代計算機技術(shù)書的翻譯,譯有《流暢的Python》《Flask Web開發(fā)》《Python網(wǎng)絡(luò)編程攻略》《Ruby on Rails教程》等書。
第 一部分 基礎(chǔ)知識
第 1 章 上手體驗 2
1.1 打開PowerShell控制臺 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 自動變量 13
2.2 數(shù)據(jù)類型 16
2.2.1 布爾值 16
2.2.2 整數(shù)和浮點數(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 啟動一個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 用運算符構(gòu)建表達式 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 章 錯誤處理 53
5.1 了解異常和錯誤 53
5.2 處理非終止性錯誤 54
5.3 處理終止性錯誤 56
5.4 探索$Error自動變量 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ù)的默認值 63
6.3.4 為參數(shù)添加驗證屬性 63
6.4 接受管道輸入 65
6.4.1 再添加一個參數(shù) 65
6.4.2 讓函數(shù)支持管道 66
6.4.3 添加process塊 67
6.5 小結(jié) 67
第 7 章 探索模塊 68
7.1 探索默認模塊 68
7.1.1 查找會話中的模塊 68
7.1.2 查找計算機中的模塊 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 章 遠程運行腳本 78
8.1 使用腳本塊 78
8.1.1 使用Invoke-Command在遠程系統(tǒng)中運行代碼 80
8.1.2 在遠程計算機中運行本地腳本 81
8.1.3 遠程使用本地變量 81
8.2 使用會話 83
8.2.1 新建會話 83
8.2.2 在會話中調(diào)用命令 84
8.2.3 打開交互式會話 85
8.2.4 斷開及重新連接會話 85
8.2.5 使用Remove-PSSession刪除會話 87
8.3 解讀PowerShell遠程處理身份驗證 88
8.3.1 雙躍點問題 88
8.3.2 使用CredSSP繞過雙躍點問題 89
8.4 小結(jié) 91
第 9 章 使用Pester進行測試 92
9.1 Pester簡介 92
9.2 Pester基礎(chǔ)知識 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ù)自動化
第 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 項目1:編寫計算機清點報告 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 項目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 項目3:查詢并解析REST API 115
10.4 小結(jié) 118
第 11 章 AD任務(wù)自動化 119
11.1 環(huán)境要求 119
11.2 安裝ActiveDirectory PowerShell模塊 120
11.3 查詢和篩選AD對象 120
11.3.1 篩選對象 121
11.3.2 返回單個對象 122
11.3.3 項目4:查找30天內(nèi)未修改密碼的用戶賬戶 123
11.4 創(chuàng)建和修改AD對象 124
11.4.1 用戶和計算機 124
11.4.2 組 126
11.4.3 項目5:創(chuàng)建員工配置腳本 127
11.5 與其他數(shù)據(jù)源同步 130
11.5.1 項目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ù)自動化 137
12.1 環(huán)境要求 137
12.2 Azure身份驗證 137
12.2.1 創(chuàng)建服務(wù)主體 138
12.2.2 使用Connect-AzAccount實現(xiàn)非交互式身份驗證 140
12.3 創(chuàng)建Azure虛擬機及所有依賴 140
12.3.1 創(chuàng)建資源組 141
12.3.2 創(chuàng)建網(wǎng)絡(luò)棧 141
12.3.3 創(chuàng)建存儲賬戶 143
12.3.4 創(chuàng)建操作系統(tǒng)映像 143
12.3.5 收尾工作 145
12.3.6 自動創(chuàng)建虛擬機 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ù)自動化 152
13.1 環(huán)境要求 152
13.2 AWS身份驗證 152
13.2.1 使用根用戶驗證身份 153
13.2.2 創(chuàng)建IAM用戶和角色 154
13.2.3 驗證IAM用戶的身份 156
13.3 創(chuàng)建一個AWS EC2實例 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實例分配一個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ù)器清點腳本 171
14.1 環(huán)境要求 171
14.2 創(chuàng)建項目腳本 171
14.3 定義終輸出 172
14.4 探索腳本輸入 172
14.5 查詢單臺服務(wù)器 173
14.6 提前規(guī)劃:合并不同類型的信息 174
14.7 查詢遠程文件 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 自動配置虛擬環(huán)境 197
15.3.1 虛擬交換機 198
15.3.2 虛擬機 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 依附虛擬機 209
16.3 自動部署操作系統(tǒng) 210
16.4 在磁盤中存儲加密憑據(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 自動創(chuàng)建林 218
17.3.3 填充域 220
17.4 編寫并運行Pester測試 224
17.5 小結(jié) 226
第 18 章 創(chuàng)建并配置SQL服務(wù)器 227
18.1 環(huán)境要求 227
18.2 創(chuàng)建虛擬機 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 運行SQL Server安裝程序 232
18.6 自動安裝SQL Server 233
18.7 運行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