tech.guitarrapc.cóm

Technical updates

IIS の Application Pool を 起動しようとすると Event ID 5021 のエラーが出てすぐに停止してしまう

IIS の Application Pool は、 指定されたユーザーで実行しています。 今回は、そのユーザー設定を意図した設定にしていないと Application Pool が開始できずあせっちゃうよというお話です。

原因

Event ID 5021 は、Application Pool の実行ユーザーの認証が出来なかったことを示します。
TechNet - Event ID 5021 — IIS Application Pool Availability
この Application Pool で利用しているユーザー認証情報は、"C:\Windows\System32\inetsrv\config\applicationHost.config" などにあります。 これは、自身の環境に依存するので確認してください。 この中に記述されている ユーザー情報、このユーザー設定に原因があります。 以下は、自分が気付くきっかけになったサイトの抜粋です。
IIS APP pool issue - resolved
<site name="WhatsUpGold" id="2" serverAutoStart="true">

    <application path="/" applicationPool="NmConsole">

                               <virtualDirectory path="/" physicalPath="D:\Program Files (x86)\Ipswitch\WhatsUp\HTML" userName="WhatsUpGold_User" password="[enc:AesProvider:HASH ON FIRST LINE:enc]" />

    </application>

    <application path="/NmConsole" applicationPool="NmConsole">

        <virtualDirectory path="/" physicalPath="D:\Program Files (x86)\Ipswitch\WhatsUp\HTML\NM.UI" userName="WhatsUpGold_User" password="[enc:AesProvider:HASH ON SECOND LINE:enc]" logonMethod="ClearText" />

    </application>

    <bindings>

        <binding protocol="http" bindingInformation="*:8080:" />

    </bindings>

</site>
それまで使えていて、再起動後に急に起こった.....などという場合は、10中8,9 恐らく 該当ユーザーの パスワード期限切れです。 何て残念! この場合は、
Server Manager > Computer Management > User and Group > User の Property > 次回ログインで パスワード変更を..... が有効
になってしまっているはずです。

対処

パスワードを設定するか、無期限にするなど方法はあります。 この辺は、セキュリティポリシーに従うべきでしょう。 仮に パスワードを無期限にして、パスワード変更も不可 にする場合は、以下のPowerShell コードで変更可能です。
$users = @(
    "UserName",
    "UserName2",
)

foreach ($user in $users)
{
    $HostPC = [System.Environment]::MachineName
    $targetuser=[adsi]("WinNT://" + $HostPC + "/$user, user")
    $userFlags = $targetuser.Get("UserFlags")
    $userFlags = $userFlags -bor 0X10040
    $targetuser.Put("UserFlags", $userFlags)
    $targetuser.SetInfo()
}
パスワードの更新や、フラグ変更が完了後、正常にApplication Pool が開始できれば問題ありません。 気付かないと行き成りなるので気を付けてください。いや、本当に笑えませんから。