以往在能夠碰到機器的情況底下(實體機器、虛擬機器…),我們通常都會選擇使用 IIS 的管理介面來幫助我們設定 IIS 的組態
由於最近在接觸 CI/CD,很多原本可以使用 UI 設定的組態都改用指令的方式來操作,讓我們在不透過任何人工的情況下,操作 IIS。
今天就用簡單的例子來介紹,我們怎樣使用 PowerShell
來幫助我們做到以下的工作。
- 取得目前所有的站台
- 取得所有應用程式集區 (Application Pool)
- 建立應用程式集區
- 建立站台 (Website)
- 修改站台的實體路徑
- 指定站台的應用程式集區
- 停止/啟動站台
選擇編輯器
要撰寫 PowerShell
有很多工具可以選擇,我這邊推薦兩個可以撰寫 PowerShell
的編輯器給大家參考
Visual Studio Code
PowerShell ISE
取得所有的站台
1 | # 要記得 Import WebAdministration Module |
取得所有的應用程式集區
1 | /> Import-Module WebAdministration |
建立應用程式集區
建立一個名為 DemoAppPool
的應用程式集區
1 | /> New-WebAppPool DemoAppPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value "v4.0" |
如果 Set-ItemProperty -Name "managedRuntimeVersion" -Value ""
這樣寫的話會是 Non-Managed
模式
建立站台
建立一個名為 DemoSite
的站台,並且指定其實體路徑、應用程式集區
1 | /> New-Website -Name "DemoSite" -Port 8080 -PhysicalPath "E:\Documents" -ApplicationPool "DemoAppPool" |
啟動/停止站台
1 | /> Stop-Website "DemoSite" |
實際操作
將一包完整的站台佈署到連站台都還沒建立的 IIS
這邊有一點要注意一下,執行 powershell 控制 IIS 會需要管理者的權限才行,如果你發現直接執行 script 產生錯誤的話,使用 administrator 權限再執行一次即可。
- 準備一個還沒有建立好站台和應用程式集區的 IIS
- 準備好一段 powrshell script
1 | Import-Module WebAdministration; |
-
執行它
-
檢視結果
執行完 script 之後會發現應用程式集區以及站台都已經自動建立完成
打開瀏覽器看一下結果
小結
最近因為在公司撰寫的應用程式需要進行自動化的佈署,有幸讓同事抓去一起研究一下 CI/CD,之前都是使用現成的工具來做,但接觸了 powershell 之後,發現有很多系統的設定都可以使用它來幫我們達成,換言之,就算拿到一台空白完全沒有被碰過的伺服器你也可以撰寫一段 script 來建立所有的設定,相對於手動來說,會節省相當多的時間。
我想有機會的話仍然會多去點一些 DevOps 的技能,相對於開發來說,也可以說是一個相當有趣的領域呢!