Назначение пользователя IIS AppPool через Powershell
Я пробовал этот код, и он работает нормально. Однако я заметил, что если вы назначаете имя пользователя и пароль учетной записи, которая не существует, код продолжается без проблем. Кроме того, если вы назначаете недопустимую учетную запись и вызываете stop (), а затем start (), пул IIS действительно останавливается и запускается!! Кроме того,когда я иду в InetMgr и начинаю, останавливаю или recylce бассейн, он также останавливается и начинается без жалоб!
Я надеялся, что добавление недействительной учетной записи приведет к ошибка эффективно позволяет мне проверить правильность учетной записи. Почему он так себя ведет?
$loginfile = "d:tempLogins.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:apppoolstest;
$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:apppoolstest;
write-host "New Pool User: " $testpool.processModel.userName;
write-host "New Pool PWd: " $testpool.processModel.password;
}
2 ответов
вы всегда должны проверять свои учетные данные перед установкой идентификатора пула. Это может быть выполнено с помощью класса PrincipalContext .NET-в частности, посмотрите на PrincipalContext.ValidateCredentials(пользователь, пароль).
пример:
#-- 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")
если локальная учетная запись изменит $ ct на "машинный" ContextType.
старт и остановка что-то неправильное. Они действительно должны быть названы включить и отключить.
рабочий процесс для пула фактически не будет" запускаться", пока ему не нужно будет обслуживать запрос.
именно в этот момент происходит аутентификация. Если имя пользователя и пароль недействительны, вы получите ответ 503 службы недоступен и три события (5021, 5057 и 5059), зарегистрированные WAS в Журнал событий системы.
при использовании API нет предварительной проверки подлинности идентификатора пула. Только консоль управления IIS выполняет эти проверки.