2018年4月16日 星期一
07:43
早就想開展這個工作了,因為前不久SA有一個Windows計劃任務的監控需求,需要從各個版本的Windows中采集計劃任務。任務看似簡單,但實際投入將近40個小時(純工作時間)。
在解決問題的過程中,遇到了以下幾個問題:
- schtasks.exe無法加載列資源的問題,這個是OS層面的的;
- Powershell獲取計劃任務的
cmdlet
在Windows 2008上木有; - 命令、參數一樣的情況下,在Windows 2008/2012上運行結果不同。
最終,為了解決這個需求,最終通過如下方式解決:
- Batch腳本調用
schtasks.exe
命令采集信息。 - Powershell通過
Get-ScheduledTask
和Get-ScheduledTaskInfo
這兩個cmdlet
采集信息 - Powershell調用COM對象來采集信息。
歸根結底,做運維的,從腳本開發之初就應該從兼容性方面考慮。
個人是想在保證開發效率的情況下,用盡可能快捷的方式來解決問題,無奈坑是一個接一個。
不過在解決問題的過程中,發現Powershell比Batch強大多了,但也不標準多了。為了避免后續繼續踩坑、浪費時間,從現在開始就準備系統性的學習Powershell。
在知乎上看到一些問題,說Powershell不僅能夠編寫腳本,還能夠架構大型應用程序。突然感覺和Python一樣了,于是,好奇心就來了,花100個番茄學習一下。
學習的目標
學習的目標很簡單:
- 整體了解Powershell的編寫模式;
- 了解Powershell適合做什么,不適合做什么;
- Powershell在不同系統上支持的功能區別;
當然,個人還有一個其他的想法:
- 是否可以通過某種方式,當我下次要用的時候,直接通過搭積木的方式來進行程序編寫?