web-dev-qa-db-ja.com

PowerShellからアプリケーションプールIDユーザーとパスワードを指定する方法

Webアプリケーションのセットアップを自動化し、IISをアプリケーションプールIDで適切に構成するのに苦労しています。PowerShellで記述されたWebアプリケーション展開スクリプトでこれを行っています。私の要件は特定のサービスアカウントmydomain\svcuserとパスワードにアプリケーションプールIDユーザーを設定するためにPowerShellスクリプトが必要であることを示しています。サンプルコードは次のとおりです。

$pool = New-Item "IIS:\AppPools\MyAppPool" -Force
$svcuser = "mydomain\svcuser"
$pool.processModel.userName = $svcuser
$password = "somepassword"
$pool.processModel.password = $password
$pool.processModel.identityType = 3
$pool | Set-Item -ErrorAction Stop

これを実行すると、すべてのappearsが正しく動作します-エラーはスローされず、アプリケーションIDユーザー名がIISに表示されます-何らかの理由で、パスワードが正しく設定されていません。パスワードであるため、設定されているかどうかを確認することはできませんが、設定されている場合は正しく設定されていないと結論付けることができます。 IISに手動でアクセスしてパスワードを入力するまで、結果のアプリケーションプールユーザーは認証されません。その結果、アプリケーションはWebサーバーにデプロイされた後に失敗し、手動の介入が必要になります。

ここに何かが欠けていますか?

23
paulyphonic

これは次のように行います。

Import-Module WebAdministration
Set-ItemProperty IIS:\AppPools\app-pool-name -name processModel -value @{userName="user_name";password="password";identitytype=3}

このドキュメントの説明と、アプリプールを実行するユーザータイプの数値のインデントタイプのリファレンスを参照してください: http://www.iis.net/configreference/system.applicationhost/applicationpools/ add/processmodel

42
Vitorrio Brooks

いくつかの実験の後

ここに私の答えがあり、これが役立つことを願っています、私はIIS 8.5

$credentials = (Get-Credential -Message "Please enter the Login credentials including Domain Name").GetNetworkCredential()

$userName = $credentials.Domain + '\' + $credentials.UserName

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.identityType -Value SpecificUser 

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.userName -Value $username

Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.password -Value $credentials.Password
6
vishnu