17

PowerShell を使用して IIS にアプリケーション プールを作成しようとしています。Web を検索した後、次のテスト スクリプトを作成しました。

Import-Module WebAdministration

$siteName = "TestAppPool"
$userAccountName = "Domain\UserName"
$userAccountPassword = "MyPassword"

if(!(Test-Path ("IIS:\AppPools\" + $siteName)))
{
     $appPool = New-Item ("IIS:\AppPools\" + $siteName)

     #Display Default AppPool Settings
     "AppPool = " + $appPool
     "UserName = " + $appPool.processModel.userName
     "Password = " + $appPool.processModel.password
     "Runtime = " + $appPool.managedRuntimeVersion
     
     $appPool.processModel.userName = $userAccountName
     $appPool.processModel.password = $userAccountPassword
     $appPool.managedRuntimeVersion = "v4.0"
     $appPool | Set-Item

     #Display Updated AppPool Settings
     "AppPool = " +$appPool
     "UserName = " + $appPool.processModel.userName
     "Password = " + $appPool.processModel.password
     "Runtime = " + $appPool.managedRuntimeVersion
}

スクリプトを実行すると、ユーザー名とパスワードが設定した値に更新されません。

2 つの印刷ブロックの結果を次に示します。

#Display Default AppPool Settings
AppPool = Microsoft.IIs.PowerShell.Framework.ConfigurationElement
UserName = 
Password = 
Runtime = v2.0

#Display Updated AppPool Settings
AppPool = Microsoft.IIs.PowerShell.Framework.ConfigurationElement
UserName = 
Password = 
Runtime = v2.0

IIS を見ると、アプリケーション プールは .Net Framework が更新されたことを示していますが、ID はまだ ApplicationPoolIdentity に設定されています。ドメイン\ユーザー名である必要があります。

ここに画像の説明を入力

私はマシンの管理者であり、PowerShell を管理者モードで実行しています。これを機能させるために何が欠けているかについてのアイデアはありますか?

4

5 に答える 5

25

デフォルトの ApplicationPoolIdentity の代わりにユーザー アカウントを受け入れるようにプロセス モデル ID タイプを変更する必要があります。これは次のように行うことができます。

Set-ItemProperty -Path IIS:\AppPools\TestAppPool -Name processmodel.identityType -Value 3
Set-ItemProperty -Path IIS:\AppPools\TestAppPool -Name processmodel.username -Value Domain\UserName
Set-ItemProperty -Path IIS:\AppPools\TestAppPool -Name processmodel.password -Value MyPassword

これが役立つことを願っています。

于 2013-02-14T22:32:24.783 に答える
6

appPoolをに設定する必要があり、これを行う必要がある他の人のために、これに遭遇しましたNetworkService.IIS 7.5でappPoolをに設定するための構文は次のとおりですNetworkService

$pool = get-item("IIS:\AppPools\YOURAPPPOOLNAME");
$pool | Set-ItemProperty -Name "ProcessModel.IdentityType" -Value 2

注: IIS 7.5 では、NetworkService値 3 から値 2 に切り替えられました。

詳細については、 httpProcess Model : //www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel を参照してください。

于 2014-06-26T20:15:32.077 に答える
0

私の環境では、これらの回答はうまくいきませんでした。アプリ プールの ID として MSA を使用しようとしています。コンソールでエラーなしですべてのコマンド (@musaab-al-okaidi の回答) を実行できましたが、さらに調べたところ、アプリケーション プールにユーザー名が関連付けられていませんでした。

私はapplicationHost.configファイルを直接変更して (最初にバックアップを作成してください!)、アプリ プールの適切な ID を追加しました。

知らない人のために説明すると、applicationHost.config は次の場所にあります。c:\Windows32\inetsrv\config

ファイル内でapplicationHost.configアプリ プール エントリを探し、次のように「ユーザー名」属性を追加します。

<system.applicationHost>
    <applicationPools>
        <add name="someAppPool" autoStart="true" managedRuntimeVersion="4.0" startMode="AlwaysRunning">
            <processModel identityType="SpecificUser" userName="domain\username$" idleTimeout="00:00:00" />
        </add>
    </applicationPools>
</system.applicationHost>

同様の方法でパスワードを設定することもできます (MSA を使用しているため、ここでパスワードを設定する必要はありません。MSA は AD で「管理」され、IIS ボックスにインストールされているためです)。

また、新しい構成が読み込まれたことを確認するために、IIS サーバーを停止/起動しました。

うまくいけば、それは役に立ちます。

于 2016-06-13T23:05:49.417 に答える