Как проверить, существует ли пользователь 'IIS AppPool \ MyAppPoolName' в powershell - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь автоматизировать некоторые настройки БД для моих разработчиков. Для разработки и тестирования мы просто используем учетные записи службы ApplicationPoolIdentity (один из наших тестовых серверов ненавидит NETWORK SERVICE, так что это не вариант), поэтому мне нужно настроить базы данных, чтобы автоматически предоставлять разрешения для правильной учетной записи для IIS. Но разработчики часто запускают только сценарий базы данных, а не базу данных и веб-сценарии.

Из-за этого IIS AppPool может не существовать во время выполнения сценария БД, что означает, что расширениеПользователь IIS AppPool \ myAppPoolName также не будет существовать. Поэтому, когда я пытаюсь предоставить им доступ к локальной базе данных SQL, они получают ошибку.

Итак, вопрос в том, как мне проверить, что эти учетные записи службы IIS AppPool существуют в Powershell? Я знаю, как подтвердить существование пользователей AD или локальных пользователей, но эти учетные записи службы IIS apppool не указаны ни в одном списке. Где они живут? Разве этот листинг недоступен из Powershell?

Я могу сделать что-то глупое, например просто перехватить и обработать ошибку на этапе разрешений, но я бы предпочел попросить разрешения, чем прощения.

Ответы [ 3 ]

1 голос
/ 07 октября 2019

Насколько я знаю, учетной записью разрешений удостоверения пула приложений IIS является IIS AppPool \ myAppPoolName. Если мы хотим проверить, существует ли эта учетная запись или нет. Нам просто нужно проверить, существует ли myAppPoolName или нет.

Чтобы достичь этого, я предлагаю вам обратиться к приведенной ниже команде powershell, чтобы проверить, существует или нет пул приложений.

Команда:

import-module webadministration

$AppPoolName="Test"

if(Test-Path IIS:\AppPools\$AppPoolName)
{
"AppPool is already there"
return $true;
}
else
{
return $false;
}

Результат:

enter image description here

0 голосов
/ 04 октября 2019

В конце концов я взял прощение, а не разрешение. Я пытаюсь создать имя входа SQL и соответствующих пользователей и обработать исключение, если они не могут.

Редактировать:

Кажется, это лучший способ получить фактический список из них:

$appPoolIdentities = Get-IISAppPool |
   Where-Object {$_.ProcessModel.IdentityType -eq 'ApplicationPoolIdentity'} |
   ForEach-Object {"IIS AppPool\$($_.Name)"}
0 голосов
/ 04 октября 2019

Идентификатор AppPool - это виртуальная учетная запись, которая не будет отображаться как пользователь в консоли управления пользователями Windows. Эти документы могут быть полезны: (https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities). Также это (https://blogs.msdn.microsoft.com/ericparvin/2015/04/14/how-to-add-the-applicationpoolidentity-to-a-sql-server-login/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...