前篇文章由 WMI 資料解析出現有網站設定,經過篩選及調整,下一步計劃轉換成設定 IIS 網站的自動化腳本,以省去在 WebFarm 伺服器一台一台點選操作的煩人手工,也避免人為操作發生疏漏。

PowerShell 已是管理 Windows 的奧林匹克官方指定語言, 可支援 IIS 的大小管理操作,擺著不用是跟自己過不去,雖然對 PowerShell 一知半解,還是得硬著頭皮學會,以下整理我還原 IIS 網站設定用到的指令:(各方達人如知更便捷的做法,請不吝指教)

1. 建立 Application Pool

開始前請記得 Import-Module WebAdministration 載入 IIS 管理模組。New-Item 指定 Path 就可建立 Application Pool,建立後用 Get-ItemProperty 可以看到該集區的設定。

Get-ItemProperty 取回的屬性資料可一一對應到 IIS 管理介面的集區進階設定,例如:queueLength 是 Queue Length、enable32BitAppOnWin64 是 Enable 32-Bit Applications:

如果要修改設定,可使用 Set-ItemProperty Cmdlet,例如以下指令啟用 Enable 32-Bit Applications:
Set-ItemProperty -Path IIS:\AppPools\Blah -Name enable32BitAppOnWin64 -Value  true

有些設定在第二層,例如:processModel.identityType,寫成 Set-ItemProperty -Path IIS:\AppPools\Blah -Name "processModel.identityType" -value 2 (2 = Network Service)

AppPool 各設定屬性及說明可參考 MSDN 文件:applicationPool processModel

註:如要查詢現有 processModel 設定,可用 Get-ItemProperty -Path IIS:\AppPools\Blah -Name prcessModel

2. 設定網站應用程式及虛擬目錄

建立網站應用程式
New-Item 'IIS:\Sites\Default Web Site\Blah' -physicalPath C:\WWW\Blah -type Application -applicaionPool Blah

建立虛擬目錄
New-Item 'IIS:\Sites\Default Web Site\BlahDir' -physicalPath C:\WWW\BlahDir -type VirtualDirectory

3. 設定 UNC 外部虛擬目錄並指定帳號密碼

New-Item 'IIS:\Sites\Default Web Site\UNCTest' -physicalPath \\RemoteServer\ShareName -type VirtualDirectory
Set-ItemProperty -Path ''IIS:\Sites\Default Web Site\UNCTest' -Name userName -Value logonName
Set-ItemProperty -Path ''IIS:\Sites\Default Web Site\UNCTest' -Name password -Value XXXX

4. 設定匿名存取或整合式驗證

以下範例關閉匿名存取並啟用 Windows 整合式驗證

Set-WebConfigurationProperty -Filter /system.webServer/security/authentication/anonymousAuthentication -Name enabled -Value false -PSPath IIS:\ -location 'Default Web Site/Blah'
Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -Name enabled -Value true -PSPath IIS:\ -Location 'Default Web Site/Blah'

屬性參考:authentication

5. 限定存取 IP

Set-WebConfigurationProperty -Filter /system.webserver/security/ipsecurity -Name allowUnlisted -Value false -PSPath IIS:\ -Location 'Default Web Site/Blah'
Add-WebConfiguration /system.webServer/security/ipSecurity -Value @{ipAddress="192.168.1.1";allowed="true"} -PSPath IIS:\ -Location 'Default Web Site/Blah'

屬性參考:ipSecurity

 

【參考資料】


Comments

Be the first to post a comment

Post a comment