'「PowerShell」人人都值得學一點PowerShell實現自動化(2)'

"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用CMD或PowerShell控制檯執行

可以在控制檯上引用文件路徑,也可以執行PowerShell腳本。

此處需要在腳本文件前加個點號。


"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用CMD或PowerShell控制檯執行

可以在控制檯上引用文件路徑,也可以執行PowerShell腳本。

此處需要在腳本文件前加個點號。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用批處理的方式執行

可以用CMD執行,當然也可以將其封裝成bat批處理任務,雙擊即可完成執行。


"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用CMD或PowerShell控制檯執行

可以在控制檯上引用文件路徑,也可以執行PowerShell腳本。

此處需要在腳本文件前加個點號。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用批處理的方式執行

可以用CMD執行,當然也可以將其封裝成bat批處理任務,雙擊即可完成執行。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用任務計劃的方式定時執行

我們更想要的真正自動化執行是定時給我們去執行代碼,用Windows的任務計劃就可以非常簡單地完成定時任務。

因為PowerShell.exe的所在文件夾已經有環境變量了,所以直接給出程序名就可以。當然全路徑也是可以的。

添加參數的位置加上PowerShell腳本的路徑即可,這裡前面加了個運行策略參數,Bypass是什麼警告都不通知,比較順暢運行,也可以不加。

完整的參數是:-ExecutionPolicy Bypass E:\\test.ps1


"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用CMD或PowerShell控制檯執行

可以在控制檯上引用文件路徑,也可以執行PowerShell腳本。

此處需要在腳本文件前加個點號。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用批處理的方式執行

可以用CMD執行,當然也可以將其封裝成bat批處理任務,雙擊即可完成執行。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用任務計劃的方式定時執行

我們更想要的真正自動化執行是定時給我們去執行代碼,用Windows的任務計劃就可以非常簡單地完成定時任務。

因為PowerShell.exe的所在文件夾已經有環境變量了,所以直接給出程序名就可以。當然全路徑也是可以的。

添加參數的位置加上PowerShell腳本的路徑即可,這裡前面加了個運行策略參數,Bypass是什麼警告都不通知,比較順暢運行,也可以不加。

完整的參數是:-ExecutionPolicy Bypass E:\\test.ps1


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用Sqlserver代理作業去運行

這種方式也是筆者在項目實際中所使用的,代理的方式,更好用一些,可以同時執行多個步驟,例如執行完PowerShell腳本後,下一步再執行其他任務。

當然這裡可以直接寫腳本內容,引用腳本文件也可以,記得加個英文句號在前面。


"

部分讀者反應太多知識要學了,學完一輪又一輪,筆者也不想單單為了製造學習而學習,所有Excel催化劑所發佈的內容,都是筆者所親自使用到的,當然很多領域也沒有深挖到很底的程度。

眾多工具、語言都是為了我們去服務的,Excel催化劑不提倡為了學習而學習,所以很有必要先評估一下每一樣知識對自身工作及職業生涯上有何價值再認真地去投入一些時間去學習。

在PowerShell這樣的小眾語言中,本篇嘗試給大家梳理一下,僅能站在筆者有限的知識視野範疇,如有補充歡迎留言。

PowerShell使用場景

雖然說PowerShell也是在dotNET體系內,凡是dotNET語言可以完成的,它也幾乎可以同樣完成,但完成的代價可能不一,有些部分可能沒有使用其他語言如C#等語言來得方便好用。

同樣地PowerShell作為一門定位於幫助運維人員實現日常工作自動化的腳本語言,很多方面有其獨特的優勢所在,雖然用其他語言、工具一樣可以完成,但PowerShell完成得更漂亮,更方便快捷。

詳細的PowerShell優勢可以參考下文所述。

PowerShell為什麼強大 – PowerShell 中文博客 https://www.pstips.net/why-is-powershell-powerful.html

在Windows系統運維人員中使用面廣

《PowerShell實戰指南》一書,是面向運維人員的角度而寫,如果想更深入地去了解,不妨看看。

例如一個系統管理員,需要管理幾百臺電腦,對他們安裝補丁、軟件等操作,可以用PowerShell直接自動化腳本完成,它擅長遠程訪問控制其他電腦。

同樣地,因為PowerShell是跨平臺的語言工具,在MAC和Linux上也可以使用,具體能否在這些系統上做運維就不得而知了。

在熟悉DOS命令的群體中,使用PowerShell可以完美替代CMD命令行工具,並且功能更強大,而很多命令也可以複用,無需重新學習,如dir/cd/config等經典的命令。

對其他微軟系產品的自動化管理

同樣地筆者非運維人員,在這一塊也沒有太深入瞭解,據筆者所知,使用PowerShell可以管理微軟系絕大部分的產品如Exchange、SharePoint、Sqlserver、OFFICE365,而筆者主要的使用場景,目前為止,只有Azure的資源的運維管理。

因為Azure是微軟的未來,所以作為認真追隨微軟的人來說,沒有理由會不跟上去先學習一下PowerShell,為了日後更好地運維Azure的資源。

Azure上使用PowerShell真實場景

分享一點點筆者真實的項目應用,使用PowerShell對Azure的Azure SQL和Azure AS的資源開關升降自動化。

因筆者使用了Azure SQL和Azure AS兩項服務,用於PowerBI的項目中,通過資源的開關升降操作,可以為企業節省出不少的Azure消耗費用,非常有實際推廣價格。

我們Azure SQL僅用於數據倉庫存儲數據的作用,更準確地說只是為了給Azure AS分析服務提供更新多維數據模型時的數據源作用,所以整個使用時段是非常短的。

我們只需在數據ETL的時候,將Azure SQL的定價層性能調高,讓舊數據刪除與新數據插入性能更高,再就是數據ETL結束後Azure AS分析服務需要讀取Azure SQL數據源時,讀取的性能更高。這兩個環節需要使用,其他時候可以關閉(Azure SQL不能關閉,只能降低到最低一層,最低層非常廉價,98元一個月全開,相當於關閉差不多。)

同樣地在Azure AS分析服務供用戶查詢報表時使用,提供底層的計算能力,也因為用戶只會在上班時間才有必要開通此服務,在節假日和下班時間,可以關閉。在上班時間,可能一個星期也只有某一段時間段才會有大量的用戶同時訪問報表,其他時段使用的人很少,這樣也給我們很大的優化空間,忙時將定價層性能調主,閒時調低。

最後我們開發一個手動接口,讓手動臨時需要更改資源的狀態可以實現,綜合上述所述的場景,最終用PowerShell來控制Azure的資源,也是非常容易的事情,只需簡單瞭解下PowerShell的語法和照著官方示例小改一下即可完成。

PowerShell的使用方式

當寫好了PowerShell腳本後,我們想執行它或使用任務調試的方式來完成固定週期的自動執行步驟,筆者暫時發現的方法用如下幾種。

直接PowerShell ISE上執行

使用PowerShell ISE,打開保存的腳本文件,直接在上面執行即可。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用CMD或PowerShell控制檯執行

可以在控制檯上引用文件路徑,也可以執行PowerShell腳本。

此處需要在腳本文件前加個點號。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用批處理的方式執行

可以用CMD執行,當然也可以將其封裝成bat批處理任務,雙擊即可完成執行。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用任務計劃的方式定時執行

我們更想要的真正自動化執行是定時給我們去執行代碼,用Windows的任務計劃就可以非常簡單地完成定時任務。

因為PowerShell.exe的所在文件夾已經有環境變量了,所以直接給出程序名就可以。當然全路徑也是可以的。

添加參數的位置加上PowerShell腳本的路徑即可,這裡前面加了個運行策略參數,Bypass是什麼警告都不通知,比較順暢運行,也可以不加。

完整的參數是:-ExecutionPolicy Bypass E:\\test.ps1


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


使用Sqlserver代理作業去運行

這種方式也是筆者在項目實際中所使用的,代理的方式,更好用一些,可以同時執行多個步驟,例如執行完PowerShell腳本後,下一步再執行其他任務。

當然這裡可以直接寫腳本內容,引用腳本文件也可以,記得加個英文句號在前面。


「PowerShell」人人都值得學一點PowerShell實現自動化(2)


其他語言調用

據筆者所知,在dotNET語言可以輕鬆調用PowerShell腳本,至於如何實現,筆者沒有深入研究過,有興趣的可以自行google一下。

在其他語言中調用PowerShell功能,也是非常有優勢的,可以實現強強聯合,也是像筆者這樣的業餘人員所鍾愛的。

結語

此篇簡單給大家分享了一些PowerShell的應用場景和其對應的實現方式,對於特定的場景來說,PowerShell還是非常有優勢的,並且學習成本真心不高,非常值得推薦使用。

下一篇給大家介紹一點PowerShell的輪子世界,可以怎樣複用現有輪子加快我們的功能實現,歡迎繼續關注。

筆者未來聚焦在數據領域的分享,不限於Excel,會分享更多Sqlserver、dotNET、Azure、PowerBI等話題,升級數據分析的能力,歡迎繼續關注。*

"

相關推薦

推薦中...