1. 程式人生 > >《Windows PowerShell 2.0應用程式設計最佳實踐》已出版上市,同時將在臺灣出版

《Windows PowerShell 2.0應用程式設計最佳實踐》已出版上市,同時將在臺灣出版

        工作之餘和微軟MVP朋友高陽經過一年零2個月的合作編寫,這本書終於與大家見面了,這本書是我們寫作週期最長的一本書,在內容和質量上也花費了很多心血,全書650多頁可算是厚厚的一大本,也是目前為止國內僅有的一本國人自己編寫的關於微軟powershell2.0最新程式設計開發技術的新書,並且得到了微軟相關部門的大力支援。

      本書已被臺灣出版社稽核選中,同時會在今年2個月後在臺灣等地出版。

      非常感謝微軟mvp中國區最有價值專家主管——林思綺 為本書作序,還有 微軟MVP徐磊、李戰和於淵為本書做的出色書評。

      讀者與作者技術交流,意見反饋請發郵件至PowerShell#live.cn(發郵件請將#替換為@)

書名:《Windows PowerShell 2.0應用程式設計最佳實踐》
出版社:電子工業出版社
ISBN:9787121101656 / 7121101653
上架時間:2010-2-1
出版日期:2010 年2月

字數:84.9萬字
開本:16開
頁碼:655
版次:1-1

提供目錄、前言與第18章下載:

 

內容簡介

  windows powershell是微軟為windows系統開發的shell及指令碼語言技術,它是一種新的命令列外殼和指令碼語言,用於實現系統自動化管理。它的出現彌補了與linux/unix系統相比windows在shell方面的不足,同時也為程式開發人員提供了一種更高效的編寫指令碼的工具。windows powershell建立在.net framework 2.0/3.x的基礎上,it專業人員可通過命令或指令碼來管理計算機,從而管理與維護系統,並通過系統自動化來提高工作效率。在windows 7和windows server 2008 r2中已經整合了powershell 2.0,並且支援圖形介面操作。
本書的作者由微軟mvp專家組成,從程式開發人員和系統管理員的角度全面介紹了windows powershell的程式設計技術。書中不僅講解了其核心模組和基本概念,還提供了大量利用windows powershell的強大功能構建的大量開發例項,從而讓讀者深入此語言的精髓。本書特色為內容由淺入深,分為語法、基礎應用和高階應用3個部分,是學習windows powershell程式設計的最佳參考書。
本書適合.net開發愛好者,初、中級開發人員和系統管理員,非凡有助於系統管理員提高系統自動化管理的效率。本書也可作為相關培訓機構的參考教材,以及高等院校相關專業師生的參考書。

前言
windows powershell(下簡稱為“powershell”)是一種命令列介面和指令碼語言,專為windows系統管理設計。它是一種優雅的新型動態語言,構建在microsoft .net framework之上,可以用來編寫全方位的windows script。以往需要vb、vbscript或c#才能實現的功能現在只需要powershell即可輕鬆完成,它可幫助it專業人士控制和自動管理windows作業系統及其應用程式。
windows系統的缺憾之一在於未提供諸如linux/unix shell那樣的強大指令碼支援,而使得系統管理員的工作效率不高。powershell通過物件適配機制使得這些物件具有.net物件那樣的外觀和工作方式,它答應使用多種應用程式的自動適配物件,如活動目錄(ad)、wmi、com、ado.net物件和xml屬性等。如今微軟windows 7和windows server 2008 r2已經完美包含了powershell 2.0,這種技術也已經逐漸被系統管理員所接受,但是很多.net開發人員卻瞭解甚少。作為it職業經理人和軟體開發人員,筆者在大量研究和實踐的基礎上,費時一年寫成本書。
本書的主要目的是幫助windows系統管理人員和開發人員迅速深入理解powershell語言與應用,並可開發出各種所需的系統指令碼程式。本書分析了日常指令碼程式設計中碰到的重點和難點。對於一名windows系統管理員和.net開發人員通過閱讀本書,可以少走彎路,更快地把握powershell主要功能應用及程式設計技巧。
本書的主要內容
本書共包括26章,各章的主要內容如下:
第1章“powershell簡介”介紹了powershell的概念及微軟開發該語言原因,說明了其框架機理,以及主要功能的應用範圍。
第2章“安裝與配置開發環境”介紹瞭如何搭建本書相關例項所使用的主要開發環境,說明了.net框架是微軟.net平臺上開發的基礎和支援的核心技術。
第3章“物件和物件型別”介紹了語言的資料結構和常用的演算法,以及物件和物件型別。
第4章“執行控制流”介紹瞭如何控制程式中語句的執行順序,其中包括了條件分支,如if-else及迴圈等。
第5章“管道物件”介紹了管道物件的作用和使用方法。
第6章“執行指令碼塊”介紹了powershell中的指令碼塊(script block),說明其如何操作物件序列。
第7章“執行函式”介紹了為什麼函式是powershell中抽象提取和重用程式碼塊的主要機制。
第8章“命令別名”介紹了別名的用途,可以用其提供使用者熟知的作業系統環境,更便於程式的移植。
第9章“提供程式”介紹了shell擴充套件機制之一的項的概念,以及shell如何與一些內建的提供程式一起釋出給使用者。
第10章“指令碼檔案”介紹了powershell的指令碼檔案用來儲存已有並可多次重用的程式碼,使使用者更多地關注指令碼的實現原理,而不是記憶基本引數。
第11章“錯誤處理和除錯”通過例項說明了如何在錯誤地輸入資料及隱含錯誤的情況下捕捉並處理異常。
第12章“指令碼簽名”介紹了指令碼簽名如何用來保護使用者程式碼在釋出之後和使用者使用之前不會被篡改。
第13章“shell環境及其配置”描述瞭如何獲取shell環境的設定,並且配置shell的常用選項。
第14章“擴充套件型別系統”介紹了powershell的型別系統,內建的型別介面卡和型別擴充套件如何協同工作,以實現所有程式碼中存在的型別。
第15章“獲取幫助”闡述瞭如何在powershell中獲取任何命令的引數和使用方法,以及如何使用內建的幫助獲取引數更多具體的資訊,並且使用網路搜尋的資訊建立自己的幫助。
…………………………
全書總共26章,可在

http://www.china-pub.com/196373#ml檢視,也可下載目錄。
——————————————————————————————————————————
例項目錄列表:
例項目錄
例3-1 使用.net物件支援的type()方法來獲取物件的型別 22
例3-2 查詢一個字串中是否包含另外一個字串 23
例3-3 不傳遞引數呼叫方法時不能省略後面的圓括號 23
例3-4 使用psbase屬性獲取原始的未經介面卡處理的物件 24
例3-5 讀取xml檔案中的內容 25
例3-6 說明internet explorer com物件在powershell中如何工作 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 從ordereddictionary物件轉換到雜湊表 45
例3-29 使用psbase替代介面卡檢視獲取真實的物件型別 46
例3-30 獲取一個靜態屬性值 47
例4-1 比較一個變數值是否小於7 49
例4-2 比較字串 51
例4-3 用大小寫比較兩個字串 51
例4-4 比較字串和數字型別 52
例4-5 檢測一個檔案是否具有.txt字尾並且大小超過10 kb 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.fileattributes列舉物件可以很輕易地轉換為字串 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 為檔案列表增加lastaccessweekday屬性 73
例5-10 傳遞first和last引數 73
例5-11 按照佔用的記憶體大小排序程序列表 74
例5-12 使用get-process和stop-process來獲取和終止程序 75
例5-13 根據系統服務的狀態將集合分類 76
例5-14 收集與所有檔案大小相關的資訊 76
例5-15 檢測當前的資料夾和昨天備份之間的不同 77
例5-16 傳遞-confirm引數給copy命令 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 呼叫者沒有提供給$lastname引數值時使用“unknown”預設值 85
例6-10 為$greeter指令碼塊的$lastname賦予預設值 86
例6-11 在$greeter中將$firstname引數設定為強制引數 86
例6-12 演示傳遞指令碼塊給foreach-object並獲取為所有文字檔案最後的寫入時間 86
例6-13 使用process段過濾數字集合並返回比5大的數字 87
例6-14 演示如何建立用於對管道中傳入的所有數字求和指令碼塊 87
例6-15 累加管道中的所有元素 87
例6-16 計算特定日期和當前目錄下文字檔案最後修改時間之間的天數 88
例6-17 在$personaction指令碼塊中為$name變數賦值 89
例6-18 使用其獲取$name變數的資訊 90
例6-19 以$personaction指令碼塊為例把$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 使用引用方式重寫swapvalue函式 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 128
例8-22 通過foreach-object將對應的別名刪除 128
例8-23 在cmd.exe下設定變數並獲取其中的內容 130
例8-24 在powershell中執行相同操作的方法 130
例9-1 鍵入get-psprovider命令列出所有提供程式的清單 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 powershell中的目錄切換 141
例9-10 獲取驅動器 141
例10-1 使用set-content這個cmdlet來建立指令碼檔案 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 return語句返回現有物件 152
例10-10 在指令碼檔案中的函式中退出整個指令碼檔案的執行 152
例10-11 呼叫powershell.exe並把指令碼塊名作為引數 153
例10-12 指令碼庫library1.ps1的程式碼 154
例10-13 更換當前目錄的位置 154
例11-1 包含終止錯誤的raise-teminatingerror函式的指令碼檔案 158
例11-2 建立指令碼檔案操作錯誤變數測試錯誤條件 160
例11-3 使用陷阱寫一個指令碼檔案“date-traps.ps1” 161
例11-4 處理不同資料格式的轉換錯誤 163
例11-5 將continue語句替換為break語句 166
例11-6 建立名為“log-allerrors.ps1”的指令碼用於嘗試刪除某個檔案 167
例11-7 生成的錯誤日誌檔案error-dump.xml的格式 167
例11-8 建立指令碼dividebyzero.ps1 169
例11-9 建立一個名為“log-nonterminatingerrors.ps1”的指令碼 172
例11-10 演示如何丟擲終止錯誤 173
例11-11 建立名為“function-parameterswithexceobj.ps1”的指令碼檔案 174
例11-12 建立名為“function-parametersnonterminating.ps1”的指令碼檔案 176
例11-13 建立名為“prite-debug.ps1”的指令碼檔案計算 178
例11-14 180
例11-15 建立名為“print-debugwithinstrument.ps1”指令碼 181
例11-16 建立名為“print-debugoutput.ps1”指令碼 182
例11-17 186
例11-18 建立新的指令碼,並命名為“count-charactersdebug.ps1” 187
例11-19 建立名為“trace-command.ps1”的指令碼檔案 189
例12-1 列舉使用者管理證書 196
例13-1 獲取宿主物件及其提供的內容 212
例13-2 使用pshostuserinrerface方法 213
例13-3 pshostuserinterface物件提供shell屬性 213
例13-4 為特定使用者的shell新增配置 215
例13-5 新增pseventing管理單元 216
例13-6 將判定過程封裝為函式is-administrator 218
例14-1 建立名為“person-define.ps1”的範例指令碼 223
例14-2 在新的指令碼檔案person-all.ps1中測試新建立的方法和屬性 224
例14-3 列出所有後綴為“ps1”的檔案 227
例14-4 使用update-formatdata cmdlet建立自定義製表符檢視 231
例15-1 顯示所有以“about_”開頭的cmdlet的幫助 234
例15-2 集合用管道傳遞給select獲取唯一的分類值 235
例15-3 獲取特定語言的主題或者helpfile分類 236
例15-4 獲取get-childitem的-filter引數的資訊 236
例15-5 獲取get-help的parameter引數的資訊 237
例15-6 演示包含處理檔案和專案的microsoft.powershell.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 242
例15-13 使用notice.txt指令碼塊作為查詢條件來找到目標例項 243
例15-14 244
例15-15 獲取動詞部分的cmdlet返回所有涉及stop的cmdlet 244
例15-16 獲取所有與證書處理相關的命令 245
例15-17 在控制檯提示符下輸入get-command help命令 245
例15-18 使用get-member cmdlet獲取檔案屬性 246
例15-19 獲取datetime型別的靜態屬性 247
例15-20 驗證[datetime]::parse靜態方法接收字串引數並返回datetime物件 247
例15-21 使用windows指令碼宿主物件的open()方法開啟url 248
例15-22 建立一個帶有單個引數的search-msdn函式 249
例15-23 匯入system.web並呼叫類 249
例15-24 使用show-msdnhelp函式獲取物件並開啟msdn的幫助頁面 250
例15-25 建立使用基於google或者live.com搜尋的函式 251
例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 獲取powershell的存放位置 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 建立一個通用指令碼get-contentasstring.ps1 265
例17-2 建立一個名為“format-ashex.ps1”的指令碼 269
例17-3 編寫一個名為“detect-encoding.ps1”的指令碼 272
例17-4 建立一個名為“extract-numbers.ps1”的指令碼 273
例18-1 指令碼geteventlogs.ps1的程式碼 277
例18-2 getapplicationeventlog.ps1指令碼的程式碼 278
例18-3 建立名為“writeapplogtotext.ps1”的指令碼 278
例18-4 建立名為“writeapplogtoxml.ps1”的指令碼 280
例18-5 建立一個名為“writetoapplog.ps1”的指令碼 281
例18-6 建立名為“writeprocesstoapplog.ps1”的指令碼 282
例18-7 建立一個名為“searchbyeventid.ps1”的指令碼 283
例18-8 建立一個名為“findmsievent.ps1”指令碼 284
例18-9 建立一個getsystemlogerror.ps1指令碼 284
例18-10 getmessage.ps1指令碼的程式碼 285
例18-11 建立名為“getlogsources.ps1”的指令碼 286
例18-12 建立用於查詢系統日誌存檔策略的指令碼檔案geteventlogretentionpolicy.ps1 287
例18-13 建立指令碼seteventlogretentionpolicy.ps1修改日誌的存檔策略 287
例18-14 createeventlog.ps1指令碼建立事件日誌 290
例18-15 292
例18-16 針對意外終止的應用程式建立一個監視指令碼monitor-crashes.ps1 293
例18-17 建立名為“reportdiskdriveconfiguration.ps1”的指令碼 294
例18-18 建立名為“reportdiskpartition.ps1”的指令碼獲取系統中存在的分割槽屬性 296
例18-19 建立名為“reportspecificdiskpartition.ps1”的指令碼來獲取硬碟特定分割槽的配置資訊 297
例18-20 建立名為“reportlogicaldiskconfiguration.ps1”的指令碼查詢系統中存在的邏輯磁碟 298
例18-21 建立名為“renamecomputer.ps1”的指令碼用於更改計算機名 299
例18-22 將enableprivileges的屬性設定為$true 301
例18-23 建立名為“queryoldfiles.ps1”的指令碼 303
例18-24 建立名為“createlocaluser.ps1”的指令碼 305
例18-25 建立名為“createlocalgroup.ps1”的指令碼 307
例18-26 建立名為“enabledisableuser.ps1”的指令碼禁用或啟用特定賬戶的許可權 308
例18-27 建立名為“auditscreensaver.ps1”的指令碼 311
例18-28 建立一個screensaver表 314
例18-29 建立名為“reportpowerconfig.ps1”的指令碼 316
例18-30 建立名為“setpowerconfig.ps1”的指令碼用於設定電源計劃 319
例18-31 建立名為“getnetadapterstatus.ps1”的指令碼用於檢測網路介面卡的狀態 322
例18-32 建立名為“getnetadapterconfig.ps1”的指令碼收集特定網路介面卡的用於排錯的具體資訊 325
例18-33 建立名為“networkadapterconfigfiltered.ps1”的指令碼過濾無用屬性 327
例18-34 建立一個名為“getnetid.ps1”的指令碼 329
例18-35 建立名為“writenetworkadapterinfotoexcel.ps1”的指令碼 330
例18-36 建立名為“findconfigurationofconnectedadapters.ps1”的指令碼 332
例18-37 建立名為“setstaticip.ps1”的指令碼 333
例18-38 建立名為“workwithdhcp.ps1”的指令碼 336
例18-39 建立名為“parsefwconfig.ps1”指令碼可以檢測到這些埠 339
例18-40 建立名為“enableremoteadmin.ps1”的指令碼 340
例18-41 建立名為“enablesharefolders.ps1”的指令碼 340
例18-42 建立名為“displaybootconfig.ps1”指令碼讀取引導配置 341
例18-43 建立名為“detectstartupprograms.ps1”的指令碼 342
例18-44 建立名為“servicedependencies.ps1”的指令碼 344
例18-45 建立用於檢查硬體驅動的指令碼checkdevicedrivers.ps1 346
例18-46 建立名為“autoservicenotrunning.ps1”的指令碼 349
例18-47 建立名為“checksigneddevicedrivers.ps1”的指令碼 350
例18-48 建立名為“getactivenicandconfig.ps1”的指令碼 352
例18-49 建立名為“findcertificates.ps1”指令碼 356
例18-50 建立名為“listcertificates.ps1”指令碼 357
例18-51 建立名為“findexpiredcertificates.ps1”指令碼 360
例18-52 為此建立名為“findcertificatesabouttoexpire.ps1”的指令碼 362
例18-53 建立名為“inspectcertificate.ps1”的指令碼 364
例18-54 建立名為“importcertificate.ps1”的指令碼 366
例18-55 建立名為“deletecertificate.ps1”的指令碼 368
例19-1 改寫指令碼get-url.ps1建立為指令碼getfile-url.ps1 376
例19-2 重建一個webproxy物件 378
例19-3 建立一個head請求 380
例19-4 建立一個用於檢測網頁連結的指令碼get-links.ps1 381
例19-5 建立新的指令碼getbase-links.ps1 382
例19-6 建立名為“get-atomfeed.ps1”的指令碼 383
例19-7 get-rssfeed.ps1指令碼 385
例19-8 獲取rdf格式的get-rdfeed.ps1指令碼 386
例19-9 get-rss.ps1指令碼的程式碼 386
例19-10 建立名為“call-webserviceget.ps1”的程式碼 388
例19-11 建立名為“call-webservicepost.ps1”的指令碼 389
例19-12 soap協議傳輸訊息的一般格式 391
例19-13 建立名為“call-webservicesoap.ps1”的指令碼 391
例19-14 建立名為“get-ftpfile.ps1”指令碼檔案 393
例19-15 建立名為“put-ftpfile.ps1”的指令碼 394
例20-1 建立一個名為“find-iis 7.0wmiclass.ps1”指令碼 400
例20-2 建立名為“get-sites.ps1”指令碼 400
例20-3 建立名為“get-iispath.ps1”的指令碼 401
例20-4 建立名為“get-apppool.ps1”的指令碼 403
例20-5 建立名為“get-iis 7.0apppooldefaultsettings.ps1”的指令碼 405
例20-6 建立名為“get-sitelimits.ps1”的指令碼 407
例20-7 建立名為“list-virtualdirectory.ps1”的指令碼 408
例20-8 建立名為“creat-site.ps1”的指令碼 410
例20-9 建立名為“create-applicationpool.ps1”的指令碼 412
例20-10 建立名為“start-allwebsites.ps1”的指令碼 414
例20-11 建立名為“stop-allwebsites.ps1”的指令碼 415
例20-12 建立名為“startstop-site.ps1”的指令碼 416
例20-13 建立名為“get-dnsserverconfig.ps1”的指令碼 419
例20-14 建立名“display-roothints.ps1”的指令碼 422
例20-15 建立名為“query-dnsarecords.ps1”的指令碼 423
例20-16 建立名為“set-dnsserverconfig.ps1”的指令碼 426
例20-17 建立名為“report-dnszoneconfig.ps1”的指令碼 429
例20-18 建立名為“create-dnszone.ps1”的指令碼 431
例20-19 建立名為“manage-winsdhcp.ps1”的指令碼 434
例20-20 建立名為“report-clientsettings.ps1”的指令碼的名稱 436
例20-21 建立名為“disable-logons.ps1”的指令碼 438
例20-22 建立名為“configure-clientproperties.ps1”的指令碼 440
例20-23 建立名為“report-clientsetting.ps1”的指令碼 443
例20-24 建立名為“grant-usertspermission.ps1”的指令碼 444
例20-25 建立名為“configure-clientcolor.ps1”的指令碼 445
例20-26 建立名為“configure-clientenvironment.ps1”的指令碼 448
例20-27 建立名為“disable-activedesktop.ps1”的指令碼 450
例20-28 建立名為“list-clusterwmiclasses.ps1”的指令碼 452
例20-29 建立名為“check-clusterconfig.ps1”的指令碼 455
例20-30 建立名為“addevict-node.ps1”的指令碼 457
例20-31 建立名為“remove-cluster.ps1”的指令碼 460
例20-32 建立名為“create-ou.ps1”的指令碼 463
例20-33 建立名為“create-user.ps1”的指令碼 464
例20-34 呼叫setinfo()方法將修改儲存到active directory中 466
例20-35 createandenable-user.ps1指令碼的程式碼 468
例20-36 建立名為create-group.ps1的指令碼 469
例20-37 建立名為“addusertogroup.ps1”的指令碼 470
例21-1 建立get-documenttext.ps1指令碼 490
例21-2 建立名為“get-documentparagraph.ps1”的指令碼 492
例21-3 建立名為“get-documentsentences.ps1”的指令碼 492
例21-4 建立一個名為“get-documentwords.ps1”的指令碼 493
例21-5 建立一個名為“new-document.ps1”的指令碼 494
例21-6 建立一個名為“insert-redtext.ps1”的指令碼 495
例21-7 建立一個名為“spellcheck-text.ps1”的指令碼 497
例21-8 從工作表中讀取單元格值 499
例21-9 建立名為“get-cellinrange.ps1”的指令碼 501
例21-10 建立一個名為“export-processtoexcel.ps1”指令碼 502
例21-11 建立一個名為“search-googlecom.ps1”的指令碼 504
例21-12 建立一個名為“get-websearchresults.ps1”的指令碼 505
例21-13 jscript指令碼的原始碼 506
例21-14 vbscript指令碼的程式碼 507
例21-15 建立一個名為“jscripteval.ps1”的指令碼 507
例21-16 建立一個名為“vbscripteval.ps1”的指令碼 508
例21-17 建立一個新的指令碼檔案“jscriptcodeobject.ps1” 509
例24-1 編寫名為“watchdeletedfiles.ps1”的指令碼 560
例24-2 watcheventlog.ps1指令碼的程式碼 562
例24-3 使用wmi事件來獲取windows時間服務(w32time)的停止時間 563
例24-4 指令碼watch_w32time.ps1的程式碼 564
例24-5 編寫資料夾監視指令碼“watchdeletedfilesctrlc.ps1” 565
例24-6 擴充套件檔案系統監視程式的指令碼並命名為“watchdeletedcreatedfiles.ps1” 567
例26-1 建立名為start-localusermanager的函式 595
例26-2 where-object cmdlet指令碼 597
例26-3 598
————————————————————————————————————————————————————————————
powershell如同待字閨中的大家閨秀,舒適、優雅、低調:但是一旦把握其脾性,會使windows系統管理人員和開發人員享受到無窮的便利、快樂和悠閒。本書羅列了關於powershell這一語言的各個方面,並分析了日常指令碼程式設計中碰到的重點和難點,非凡值得一提的是,書中所帶有的各種所需的系統指令碼程式更能讓大家信手拈來,運用到實際工作當中,使大家獲得更多時間未提升自我。藉著windows7釋出的熱潮,powershell作為微軟下一代命令、指令碼工具已整合到windows7中。相對而言還是比較輕易上手的,在功能上要比cmd強大很多。
——林思綺 技術社群支援服務中國區最有價值專家主管

————————————————————————————————————————————————————————————
當年使用微軟的作業系統是從dos開始的,第一次見到windows 3.1的時候,才發現圖形介面是多麼的棒,從此再也沒有想到過命令列會有一天改頭換面回到我們的視線中。這些年搞技術越末越覺得,使用者的需求永遠是我們程式設計師的核心,使用者需要什麼,我們就應該提供什麼。powershell就是在這種環境中誕生的,雖然微軟最終放棄了對dos應用的支援,但是全新的powershell卻紿我們提供了更加豐富而強大的操作環境,掌掘powershell你將可以通過鍵盤實現對電腦的完全控制,這是任何一個技術狂人的夢想。

——徐磊 微軟最有價值專家(2006-2009),vsts(team system)專案管理專家,tech-ed 2008/2009講師。2005年創立了ssw沁ww.ssw.conl.ali)北京研發中心,同時擔任中心的負責人和資深軟體架構師: “微軟(北京).net俱樂部”核心管理團隊成員和特約講師。

————————————————————————————————————————————————————————————
熟知並熱愛linux/unix下的指令碼工作方式而又需要工作在windows環境下的程式設計師們有福了:不喜歡滑鼠只熱愛在鍵盤上運指如飛的geek們有福了:希望通過學習這一強大工具而走向高手之路的讀者們有福了。

——於淵 暢銷書《自己動手寫作業系統分》《orange’s:一個作業系統的實現》作者

——————————————————————————————————————————————————————————

對於想學習windowspowershell程式設計的朋友來說,這是一本非常值得推薦的好書。本書由淺入深地講解了windows powershell的產生背景、執行環境、語法特點、使用技巧以及許多實用的程式設計經驗。書中不但列舉了大量的可操作例項,還給出了許多寶貴的最佳實踐。本書適合大多數windows環境下的程式設計師和系統管理員,既可以作為powershell的技術書來讀,也可以作為學習powershell的教學資料,甚至用作即用即查的powershell手冊。感謝本書作者的辛勤付出,為廣大技術人員奉獻了這樣一本實用的好書。

——李戰資深架構師,《悟透javascript》作者,目前在阿里巴巴從事雲端計算方面的研發工作。