2015-02-18 2 views
0

Я пишу сценарий powershell для установки своего приложения и настройки идентификатора веб-приложения для конкретного пользователя.Идентификатор пула приложений IIS введен неверно из сценария powershell

Код, я использую это:

$pool.processModel.identityType = 3 
    $AppPoolUsername = Read-Host "User name(domain\username)" 
    $AppPoolPassword = Read-Host "Password" -AsSecureString 
    $pool.processModel.userName = [string]$AppPoolUsername`enter code here` 
    $pool.processModel.password = [string]$AppPoolPassword 

После того как я побежал сценарий, я побежал приложения и App Pool останавливается. Если я буду вручную вводить идентификатор пула приложений, он не будет остановлен, и веб-приложение будет работать.

Я попытался преобразовать пароль из SecureString на регулярную строку без успеха с этим кодом:

$AppPoolPassword = Read-Host -Prompt "Password" -AsSecureString 
    $pool.processModel.userName = [string]$AppPoolUsername 
    $pool.processModel.password = ConvertFrom-SecureString -SecureString $AppPoolPassword 

Я получаю «01000000d08c9ddf0115d1118c7a00c04fc297eb010000006876492ae8edf3429d809bb3ca213d910000000002000000000003660000c000000010000000ebd2f4fc7a59a92ad8cb2c4 9b99498fc0000000004800000a0000000100000007ffdc206c4eeb7c67237d24e575f86ff08000000fe8c91a31879d93014000000fee1ff6c8aa4fe66e9debe245e7ea3fd26fc823a» при проверке пароля приложения пула.

Правильно ли это, или я должен получить правильную строку ввода?

Я в правильном направлении?

ответ

0

Не уверен, что я полностью понимаю, что вы говорите, но звоните $ pool | set-item

Вы говорите, что после запуска сценария AppPool работает, но просто остановлен? Если да, то вы можете легко начать AppPool используя Start-WebAppPool -Name AppPoolName

Или вы можете попробовать Set-ItemProperty Iis: \ AppPools \ AppPoolName -name processModel -value @ {UserName = "домен \ имя_пользователя"; пароль = «Пароль»; identitytype = 3}

+0

Скрипт работает, но кажется, что он вводит неправильное имя пользователя и \ или пароль. Я говорю это, потому что, когда я пытаюсь запустить мое веб-приложение, у меня возникла ошибка сервера, и в AppPool я вижу, что мой пул приложений добавлен, и если я запустил его и попытаюсь запустить мое веб-приложение снова, он снова остановится и так далее ... Поэтому я считаю, что это решение не подойдет. – chen

0

Вот один из способов сделать это, используя NetworkCredential, чтобы развернуть скрытую SecureString, которая не поддерживается API конфигурации пула приложений.

$AppPoolUsername = Read-Host "User name(domain\username)" 
$AppPoolPassword = Read-Host "Password" -AsSecureString 

# We cannot pass the password as a SecureString directly to 
# the app pool configuration. NetworkCredential is at least 
# one possible way to access the hidden clear text password. 
$netcred = New-Object System.Net.NetworkCredential "unused",$AppPoolPassword 

$pool.processModel.identityType = 3 
$pool.processModel.userName = $AppPoolUsername 
$pool.processModel.password = $netcred.Password 
$pool | Set-Item 
0

К сожалению, пароль processmodel ДОЛЖЕН быть простым текстом.

Для защищенной строки он не может быть напрямую привязан к свойству пароля.

@ Oskar Berggren имеет хороший способ обойти его, но если вы получите строку непосредственно из «Read-Host», лучшим было бы сохранить ее как обычный текст (Remove -AsSureureString) и назначить ее непосредственно пароль. В противном случае, если вы планируете продолжать работу с безопасностью, используйте метод @Oskar Berggren, чтобы вернуть свой простой пароль.