IIS application pool identity - 運用PowerShell自動化修改IIS AppPool identity 及 password

在IIS Server 的應用程式集區(application pool) 中,我們常常會使用網域使用者作為應用程式集區的服務帳號。

當網域policy有規定密碼有效日期後,應用程式集區的服務帳號密碼就需要定期進行修改,若忘記修改導致密碼過期,應用程式集區可能會無法啟動(因為預設1740分鐘,應用程式集區會進行回收),導致佈署在該集區的應用程式會無法執行。

當有數百個服務帳號密碼需要修改時,我們可以使用PowerShell將此作業自動化。

圖一, IIS 應用程式集區

 

PowerShell Sample

下列範例分為兩段功能,首先先修改AD的網域使用者密碼,接下來再修改 IIS  應用程式集區的識別密碼(identity password)。

而修改 IIS  應用程式集區的識別密碼,又再細分為三個步驟: 停止集區 -> 修改密碼 -> 啟動集區。

 

 Import-Module ActiveDirectory
Import-Module WebAdministration
 
# Set the New password
$newPWD = ConvertTo-SecureString -AsPlainText $newPassword -Force
 
# Reset user password in AD
Set-ADAccountPassword -Identity $samAccountName -NewPassword $newPWD -Reset
 $userName = "yourDomainName\$samAccountName"
  
# Change AppPool identity password in IIS
$targetpool = Get-item "IIS:\AppPools\$appPoolName" 
 $targetpool.Stop()
 
$targetpool | Set-ItemProperty -Name "processModel.identitytype" -Value 3
$targetpool | Set-ItemProperty -Name "processModel.username" -Value $userName
$targetpool | Set-ItemProperty -Name "processModel.password" -Value $newPassword
 
$targetpool.Start()

 

Enjoy!