2011-03-24 3 views
12

このコードを試しましたが、うまくいくようです。しかし、存在しないアカウントにユーザー名とパスワードを割り当てても、コードは問題なく続きます。さらに、無効なアカウントを割り当ててstop()を呼び出してからstart()を実行すると、IISプールが停止して起動します。さらに、私がInetMgrに行き、プールを開始、停止、またはrecylceすると、停止し、不平を言うことなく開始します!Powershellを使用してIIS AppPoolにユーザーを割り当てます。

無効なアカウントを追加するとエラーが発生し、アカウントの有効性を効果的にテストできます。なぜこのように振る舞うのですか?

$loginfile = "d:\temp\Logins.csv" 
$csv = Import-Csv -path $loginfile 
ForEach($line in $csv){ 

    $poolid = "MyDomain\" + $line.Login; 
    Write-Host "Assigning User to Pool:" $poolid; 

    $testpool = get-item iis:\apppools\test; 
    $testpool.processModel.userName = $poolid; 
    $testpool.processModel.password = $line.Pwd; 
    $testpool.processModel.identityType = 3; 
    $testpool | Set-Item 
    $testpool.Stop(); 
    $testpool.Start(); 
    Write-Host "IIS Recycled"; 

    $testpool = get-item iis:\apppools\test; 
    write-host "New Pool User: " $testpool.processModel.userName; 
    write-host "New Pool PWd: " $testpool.processModel.password; 
} 
+5

質問自体は、「powershellを使ってアプライプションプールにユーザー名とパスワードを割り当てるにはどうすればよいか」という素晴らしい答えです。 – sfuqua

答えて

7

プールIDを設定する前に、資格情報を常に検証する必要があります。これは、PrincipalContext .NETクラスを介して実行できます。具体的には、PrincipalContext.ValidateCredentials(user、password)を参照してください。

サンプル:

#-- Make sure the proper Assembly is loaded 
[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement") | out-null 

#-- Code to check user credentials -- put in function but here are the guts 
#-- Recommend you use SecureStrings and convert where needed 
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain 
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct,"domainname" 
$isValid = $pc.ValidateCredentials("myuser","mypassword") 

ローカルアカウントは、「マシンのContextTypeに$ CTを変更した場合。

4

スタート停止誤った名称の何かです。彼らは実際にと名前をつけてください。を無効にしてください。を無効にしてください。

プールのワーカープロセスは、要求を処理する必要があるまで、実際には「開始」しません。

この時点で認証が行われます。ユーザー名とパスワードが無効であれば、システム・イベント・ログにWASによって記録された503 Service Unavailable応答と3つのイベント(5021,5057および5059)が表示されます。

APIを使用しているときにプールのIDの正当性をチェックすることはありません。 IIS管理コンソールのみがこれらのチェックを実行します。

関連する問題