具體描述
編輯推薦
PowerShell既是一門腳本語言,也是一種管理Shell,通過PowerShell幾乎可以管理Windows的方方麵麵。它可以交互式接受和執行命令,也可以通過編寫腳本管理諸如Exchange、IIS和SharePoint等Windows服務器,還可以管理諸如Azure與Office365等在綫服務。
《WindowsPowerShell實戰指南(第3版)》是為繁忙的IT專業人士所設計的具有創新性的教程。隻需要每天一個小時——持續一個月,就能夠快速將Windows任務自動化到一個新的高度。第3版圖書適閤Windows7、Windows2008R2以及更新版本的操作係統環境,主要講解瞭PowerShellv3以及更新版本的PowerShell功能,甚至包含諸如PowerShellGet等v5版本的功能。
內容特色
·從頭開始學習PowerShell,無需任何經驗!
·涵蓋運行於Windows7、WindowsServer2008R2以及更新版本操作係統的PowerShellv3以及更新版本PowerShell的功能。
·每章隻需花費一個小時或更少。
如果讀者曾經有Windows管理方麵的經驗,對學習本書會有一定幫助,但本書並不要求讀者有編程經驗。
相關資源下載,請訪問:https://www.manning.com/books/learn-windows-powershell-in-a-month-of-lunches-third-edition
內容簡介
PowerShell已經是一門開源、跨平颱的腳本語言與管理Shell。在DevOps流行的今天,PowerShell無疑是*好的實現語言之一。本書幾乎涵蓋瞭PowerShell所涉及技術的方方麵麵,提供瞭大量實戰案例,同時還包含瞭PowerShellv5*新功能的內容。隻需要一個月、每天一小時,讀者就能夠輕鬆掌握PowerShell的實戰技能。本書作者是PowerShell界泰鬥DonJones與JefferyHicks。他們都是多年的PowerShellMVP,並以簡潔、易入門的培訓與寫作風格而著稱。
作者簡介
本書作者是PowerShell界的泰鬥DonJones與JefferyHicks,他們倆都是多年的PowerShellMVP,並以簡潔、易入門的培訓和寫作風格而著稱。Don在PowerShell.org撰寫博客,而Jeff的博客則是jdhitsolutions.com/blog。
關於譯者
宋沄劍,微軟DataPlatformMVP,數據庫大會、TechED、Ignite特約講師,精通SQLServer與MySQL,並擅長使用PowerShell與Python編寫自動化運維工具。他目前就職於易車網,負責開源大數據平颱基礎架構的構建與自動化運維工作。同時,他還經常兼職幫助客戶設計數據平颱架構、私有雲架構、數據庫調優以及解決大型生産環境中的棘手問題。大傢可以在他的個人技術博客http://www.cnblogs.com/careyson看到他的****動態。
目錄
第1章背景介紹1
1.1為什麼要重視PowerShell1
1.2現在隻剩下“PowerShell”,而不是“WindowsPowerShell”3
1.3本書適用讀者3
1.4如何使用本書4
1.5搭建自己的實驗環境5
1.6安裝WindowsPowerShell6
1.7聯係我們8
1.8趕緊使用PowerShell吧8
第2章初識PowerShell9
2.1選擇你的“武器”9
2.2重新認識代碼輸入14
2.3常見誤區16
2.4如何查看當前版本16
2.5動手實驗17
第3章使用幫助係統19
3.1幫助係統:發現命令的方法19
3.2可更新的幫助20
3.3查看幫助22
3.4使用幫助係統查找命令23
3.5幫助詳解25
3.6訪問“關於”主題31
3.7訪問在綫幫助32
3.8動手實驗33
3.9動手實驗答案34
第4章運行命令35
4.1無需腳本,僅僅是運行命令35
4.2剖析一個命令36
4.3Cmdlet命名慣例37
4.4彆名:命令的昵稱38
4.5使用快捷方式39
4.6小小作弊一下:Show-Command42
4.7對擴展命令的支持43
4.8處理錯誤46
4.9常見誤區47
4.10動手實驗48
第5章使用提供程序49
5.1什麼是提供程序49
5.2FileSystem的結構51
5.3理解文件係統與其他數據存儲的類似之處53
5.4使用文件係統54
5.5使用通配符與字麵路徑55
5.6使用其他提供程序57
5.7動手實驗60
5.8進一步學習60
5.9動手實驗答案60
第6章管道:連接命令62
6.1一個命令與另外一個命令連接:為你減負62
6.2輸齣結果到CSV或XML文件62
6.3管道傳輸到文件或打印機67
6.4轉換成HTML68
6.5使用Cmdlets修改係統:終止進程和停止服務69
6.6常見誤區70
6.7動手實驗72
6.8動手實驗答案73
第7章擴展命令74
7.1如何讓一個Shell完成所有事情74
7.2關於産品的“管理Shell”75
7.3擴展:找到並添加插件76
7.4擴展:找到並添加模塊78
7.5命令衝突和移除擴展80
7.6在非Windows操作係統80
7.7玩轉一個新的模塊81
7.8配置腳本:在啓動Shell時預加載擴展83
7.9從Internet獲取模塊84
7.10常見誤區85
7.11動手實驗85
7.12動手實驗答案86
第8章對象:數據的另一個名稱87
8.1什麼是對象87
8.2理解為什麼PowerShell使用對象88
8.3探索對象:Get-Member90
8.4使用對象標簽,也就是所謂的“屬性”91
8.5對象行為,也就是所謂的“方法”92
8.6排序對象93
8.7選擇所需的屬性93
8.8在命令結束之前總是對象的形式94
8.9常見誤區96
8.10動手實驗97
8.11動手實驗答案97
第9章深入理解管道99
9.1管道:更少的輸入,更強大的功能99
9.2PowerShell如何傳輸數據給管道99
9.3方案A:使用ByValue進行管道輸入100
9.4方案B:使用ByPropertyName進行管道傳輸103
9.5數據不對齊時:自定義屬性108
9.6括號命令111
9.7提取屬性的值112
9.8動手實驗117
9.9進一步學習118
9.10動手實驗答案119
第10章格式化及如何正確使用120
10.1格式化:讓輸齣更加美觀120
10.2默認格式120
10.3格式化錶格123
10.4格式化列錶125
10.5格式化寬列錶126
10.6創建自定義列與列錶條目126
10.7輸齣到文件、打印機或者主機上128
10.8輸齣到GridView中129
10.9常見誤區130
10.10動手實驗132
10.11進一步學習133
10.12動手實驗答案133
第11章過濾和比較134
11.1隻獲取必要的內容134
11.2左過濾135
11.3使用比較操作符135
11.4過濾對象的管道137
11.5使用迭代命令行模式138
11.6常見誤區140
11.7動手實驗141
11.8進一步學習142
11.9動手實驗答案142
第12章學以緻用143
12.1定義任務143
12.2發現命令143
12.3學習如何使用命令145
12.4自學的一些技巧146
12.5動手實驗147
12.6動手實驗答案147
第13章遠程處理:一對一及一對多148
13.1PowerShell遠程處理的原理148
13.2WinRM概述150
13.3一對一場景的Enter-PSSession和Exit-PSSession153
13.4一對多場景的Invoke-Command155
13.5遠程命令和本地命令之間的差異158
13.6深入探討162
13.7遠程處理的配置選項163
13.8常見誤區163
13.9動手實驗164
13.10進一步學習165
13.11動手實驗答案165
第14章Windows管理規範167
14.1WMI概要167
14.2關於WMI的壞消息169
14.3探索WMI170
14.4選擇你的武器:WMI或CIM173
14.5使用Get-WmiObject173
14.6使用Get-CimInstance177
14.7WMI文檔178
14.8常見誤區178
14.9動手實驗179
14.10進一步學習179
14.11動手實驗答案180
第15章多任務後颱作業181
15.1利用PowerShell實現多任務同時處理181
15.2同步VS異步181
15.3創建本地作業182
15.4WMI作業183
15.5遠程處理作業184
15.6獲取作業執行結果185
15.7使用子作業188
15.8管理作業的命令190
15.9調度作業193
15.10常見睏惑點194
15.11動手實驗195
15.12動手實驗答案196
第16章同時處理多個對象197
16.1對於大量管理的自動化197
16.2首選方法:“批處理”Cmdlet198
16.3CIM/WMI方式:調用方法199
16.4後備計劃:枚舉對象203
16.5常見誤區207
16.6動手實驗210
16.7動手實驗答案211
第17章安全警報212
17.1保證Shell安全212
17.2WindowsPowerShell的安全目標213
17.3執行策略和代碼簽名214
17.4其他安全措施219
17.5其他安全漏洞220
17.6安全建議221
17.7動手實驗222
第18章變量:一個存放資料的地方223
18.1變量簡介223
18.2存儲值到變量中223
18.3使用變量:關於引號有趣的技巧226
18.4在一個變量中存儲多個對象228
18.5雙引號的其他技巧232
18.6聲明變量類型234
18.7與變量相關的命令236
18.8針對變量的最佳實踐237
18.9常見誤區237
18.10動手實驗238
18.11進一步學習238
18.12動手實驗答案238
第19章輸入和輸齣239
19.1提示並顯示信息239
19.2Read-Host命令240
19.3Write-Host命令242
19.4Write-Output命令244
19.5其他輸齣方式246
19.6動手實驗247
19.7進一步學習247
19.8動手實驗答案247
第20章輕鬆實現遠程控製249
20.1使得PowerShell遠程控製更加容易249
20.2創建並使用可重用會話249
20.3利用Enter-PSSession命令使用會話251
20.4利用Invoke-Command命令使用會話253
20.5隱式遠程控製:導入一個會話254
20.6使用斷開會話255
20.7動手實驗257
20.8進一步學習258
20.9動手實驗答案258
第21章你把這叫作腳本260
21.1非編程,而更像是批處理文件260
21.2使得命令可重復執行261
21.3參數化命令262
21.4創建一個帶參數的腳本263
21.5為腳本添加文檔265
21.6一個腳本,一個管道267
21.7作用域初探269
21.8動手實驗271
21.9動手實驗答案271
第22章優化可傳參腳本273
22.1起點273
22.2讓PowerShell去做最難的工作274
22.3將參數定義為強製化參數275
22.4添加參數彆名277
22.5驗證輸入的參數279
22.6通過添加詳細輸齣獲得易用性體驗280
22.7動手實驗281
22.8動手實驗答案282
第23章高級遠程控製配置283
23.1使用其他端點283
23.2創建自定義端點284
23.3啓用多跳遠程控製(multi-hopremoting)288
23.4深入遠程控製身份驗證289
23.5動手實驗291
23.6動手實驗答案291
第24章使用正則錶達式解析文本文件292
24.1正則錶達式的目標292
24.2正則錶達式入門293
24.3通過-Match使用正則錶達式295
24.4通過Select-String使用正則錶達式295
24.5動手實驗297
24.6進一步學習297
24.7動手實驗答案298
第25章額外的提示,技巧以及技術299
25.1Profile、提示以及顔色:自定義Shell界麵299
25.2運算符:-AS、-IS、-Replace、-Join、-Split、-IN、-Contains303
25.3字符串處理306
25.4日期處理308
25.5處理WMI日期309
25.6設置參數默認值310
25.7學習腳本塊312
25.8更多的提示、技巧及技術312
第26章使用他人的腳本314
26.1腳本314
26.2逐行檢查319
26.3動手實驗320
26.4動手實驗答案322
第27章學無止境324
27.1進一步學習的思想324
27.2既然已經閱讀瞭本書,那麼我要從哪裏開始呢325
27.3你會喜歡的其他資源326
第28章PowerShell備忘清單327
28.1標點符號327
28.2幫助文檔330
28.3運算符331
28.4自定義屬性與自定義列的語法331
28.5管道參數輸入332
28.6何時使用$_333
附錄復習實驗335
深入解析操作係統自動化管理:一套麵嚮未來的命令行工具 本書並非《Windows PowerShell實戰指南 第3版》的介紹,而是旨在揭示一整套強大而靈活的命令行自動化管理工具——PowerShell的深層潛力與實際應用。我們將跳脫齣特定版本的束縛,聚焦於PowerShell的核心理念、設計哲學以及其在現代IT環境中的普遍價值。這是一次對理解操作係統如何被高效、可重復地管理的一次探索,一次對擺脫繁瑣手動操作、擁抱自動化未來的係統性解讀。 PowerShell:不僅僅是命令行的替代品 很多人可能將PowerShell簡單地視為cmd.exe的升級版,一個可以執行更多命令的shell。然而,這種認知遠遠未能觸及PowerShell的本質。PowerShell的核心是其強大的對象模型。不同於傳統shell將一切視為文本流,PowerShell處理的是 .NET 對象。這意味著,當您執行一個命令時,您獲得的不隻是字符串,而是一個包含瞭豐富屬性和方法的結構化對象。這種根本性的差異賦予瞭PowerShell無與倫比的強大能力。 舉例來說,在傳統的cmd.exe中,要獲取正在運行的進程列錶,您可能會使用 `tasklist` 命令,然後需要通過 `findstr` 等工具來過濾您想要的信息。整個過程充斥著字符串解析和正則錶達式匹配,既費時又容易齣錯。而在PowerShell中,您可以使用 `Get-Process` cmdlet。它返迴的不是一堆文本,而是一個個進程對象,每個對象都包含瞭進程ID、名稱、CPU使用率、內存占用等詳盡信息。您可以直接通過屬性名來訪問這些數據,例如 `$process.Id` 或 `$process.CPU`。更重要的是,您還可以對這些對象進行管道操作,將一個 cmdlet 的輸齣對象直接傳遞給下一個 cmdlet進行進一步的處理。這種對象管道的模式是PowerShell強大之處的基石,它使得復雜的操作能夠被分解成一係列簡單、清晰、可組閤的步驟,大大提高瞭效率和可讀性。 Cmdlet:PowerShell的構建模塊 PowerShell的強大功能主要通過其一係列稱為Cmdlet(Command-let)的命令來實現。Cmdlet的設計遵循著一套嚴格的命名規範,通常采用“動詞-名詞”的格式,例如 `Get-Process` (獲取進程), `Set-Service` (設置服務), `New-Item` (創建項), `Remove-Item` (移除項)。這種一緻的命名風格讓學習和記憶Cmdlet變得更加容易,您隻需理解常見動詞(如 Get, Set, New, Remove, Move, Copy, Rename)和常見名詞(如 Process, Service, Item, File, Folder, Registry, Event)的組閤,就能推測齣許多命令的功能。 Cmdlet的設計也充分考慮瞭可擴展性。微軟提供瞭大量的內置Cmdlet,覆蓋瞭Windows操作係統的方方麵麵,從文件係統、注冊錶、進程、服務,到網絡配置、事件日誌、用戶賬戶等等。同時,第三方開發者和社區也為PowerShell貢獻瞭海量的模塊,這些模塊可以輕鬆導入並使用,極大地擴展瞭PowerShell的能力範圍,使其能夠管理各種應用程序、數據庫、雲服務乃至第三方硬件設備。 腳本化與自動化:釋放PowerShell的真正力量 PowerShell的真正價值體現在其腳本化能力上。當您需要重復執行一係列操作,或者希望自動化一些日常維護任務時,PowerShell腳本就顯得尤為重要。您可以在PowerShell ISE(集成腳本環境)或者VS Code等編輯器中編寫`.ps1`腳本文件。這些腳本可以包含變量、條件語句(if-else)、循環(for, foreach, while)、函數、錯誤處理等完整的編程結構。 想象一下,您需要定期重啓一組服務器上的某個服務,並且記錄下操作結果。在傳統方式下,您可能需要手動登錄每颱服務器,打開服務管理器,找到服務,右鍵點擊重啓,然後再打開事件查看器檢查日誌。這個過程耗時且容易遺漏。使用PowerShell,您可以編寫一個腳本,該腳本首先定義一個服務器列錶,然後循環遍曆列錶中的每颱服務器,使用 `Invoke-Command` cmdlet 在遠程服務器上執行 `Restart-Service` 命令,並將操作結果(成功或失敗)記錄到日誌文件中。整個過程可以完全自動化,並且能夠精確地執行,大大節省瞭人力和時間。 更進一步,PowerShell還支持遠程管理。您無需登錄到每颱機器,就可以通過網絡執行命令和腳本。這得益於PowerShell Remoting(WinRM)。通過配置PowerShell Remoting,您可以輕鬆地管理大量遠程計算機,將其視為一個統一的資源池。這對於大規模部署、配置變更、故障排除等場景來說,是不可或缺的能力。 PowerShell的生態係統與未來展望 PowerShell已經遠遠超越瞭Windows平颱。在微軟的推動下,PowerShell Core(現在的 PowerShell 7+)已經實現瞭跨平颱支持,可以在Windows、macOS和Linux上運行。這意味著您可以使用同一套工具和腳本來管理不同操作係統的服務器和設備,這對於混閤IT環境的管理人員來說,是一個巨大的福音。 PowerShell的生態係統也在不斷發展壯大。Azure PowerShell、AWS Tools for PowerShell等模塊讓您可以直接在命令行中管理雲資源。SQL Server PowerShell、Exchange PowerShell等模塊則提供瞭對特定應用程序的深度管理能力。PowerShell Gallery更是匯聚瞭無數社區貢獻的模塊,幾乎可以滿足您管理任何IT資産的需求。 未來,隨著自動化和DevOps理念的普及,PowerShell的重要性將隻會與日俱增。它不僅僅是一個命令行工具,更是一種現代IT管理思維的體現。掌握PowerShell,意味著掌握瞭高效、可靠、可重復的操作係統管理之道,為應對日益復雜的IT挑戰奠定瞭堅實的基礎。 學習PowerShell的價值 學習PowerShell,您將獲得: 效率的極大提升: 將重復性的手動任務自動化,節省寶貴的時間和精力。 管理的標準化與一緻性: 通過腳本確保操作的一緻性,減少人為錯誤。 深度的係統洞察: 通過對象模型,更深入地理解和控製操作係統。 跨平颱管理能力: 使用同一套工具管理Windows, macOS, Linux等不同平颱。 雲資源管理的便捷: 直接通過命令行管理Azure, AWS等雲服務。 更強的故障排除能力: 快速定位和解決係統問題。 麵嚮未來的技能: 掌握IT自動化和DevOps領域的關鍵技能。 本書(此處指代的是關於PowerShell整體的介紹,而非某本特定書籍)將引領您踏上PowerShell的學習之旅,從基礎概念到高級技巧,從單個命令到復雜腳本,幫助您解鎖操作係統自動化的強大力量,讓您在快速變化的IT環境中遊刃有餘,成為一名更高效、更有價值的IT專業人士。