Поделиться через


Оснастка PowerShell: изменение конфигурации веб-сайтов и пулов приложений

Томас Демл

В этом пошаговом руководстве вы узнаете, как изменить простые свойства контейнеров пространства имен IIS, таких как веб-сайты, веб-приложения, виртуальные каталоги и пулы приложений, с помощью встроенных командлетов PowerShell. В следующем пошаговом руководстве рассматривается изменение свойств конфигурации в разделах system.webServer и пользовательских разделах.

Введение

Задача оснастки PowerShell — предлагать пространства имен, которыми можно управлять с помощью стандартных встроенных командлетов PowerShell, таких как New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty и т. д. Встроенные командлеты работают со всеми пространствами имен, предоставляемыми PowerShell. New-Item c:\testdir Например, позволяет создать новый каталог файловой системы, но можно также создать новый объект IIS, например Web-Site или пул приложений, например New-Item IIS:\AppPools\NewAppPool.

В предыдущем пошаговом руководстве мы начали использовать командлеты New-item и Get-Item. В этом пошаговом руководстве рассматриваются дополнительные встроенные командлеты.

Часто вам может потребоваться изменить параметры этих элементов после их создания. Для этого мы используем встроенные командлеты New-ItemProperty и Set-ItemProperty. Мы также рассмотрим, как использовать Get-Item и Set-Item.

В этом пошаговом руководстве используется Web-Site Demosite, а также его веб-приложения и виртуальные каталоги, созданные в последнем пошаговом руководстве.

Просмотр параметров конфигурации

Прежде чем приступить к изменению параметров, необходимо сначала рассмотреть их. Ниже приведена команда для просмотра параметров конфигурации DemoSite.

PS IIS:\> get-item IIS:\Sites\DemoSite
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
DemoSite         2    Started    c:\demosite                    http :8080:

Это дает представление о наиболее важных свойствах сайта. Есть и другие параметры, которые могут вас заинтересовать.

Ниже приведена команда, которая предоставляет дополнительные сведения:

(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

В приведенном выше примере мы используем круглые скобки, так как вызов Get-ItemProperty необходимо сначала оценить, прежде чем мы сможем распечатать записи коллекции. В этом случае тип того же, что и в математике: (5 + 4) * 3 сначала вычисляет 5 + 4, а затем умножает на 3. В этом случае будут оценены результаты команды Get-ItemProperty, а результирующий объект конфигурации IIS содержит коллекцию, которую мы выведем на экран.

Ту же стратегию можно использовать с другими свойствами или коллекциями, например с разделом AppPools processModel. Следующая команда, например, возвращает хороший объект DateTime для startupTimeLimit нашего DemoAppPool:

PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit

Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 30
Milliseconds      : 0
Ticks             : 900000000
TotalDays         : 0.00104166666666667
TotalHours        : 0.025
TotalMinutes      : 1.5
TotalSeconds      : 90
TotalMilliseconds : 90000

Изменение параметров сайта и пула приложений

Существует два основных способа внесения изменений.

  1. При изменении простого свойства используйте Set-ItemProperty.
  2. Если вы работаете с коллекцией и хотите добавить новую запись коллекции, используйте New-ItemProperty. В установке IIS по умолчанию коллекция привязок является единственной коллекцией, используемой в пространстве имен IIS.

Set-ItemProperty и New-ItemProperty

Начнем с добавления дополнительной привязки в DemoSite:

PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
ation=":8081:"}

PS IIS:\> dir IIS:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
DemoSite         2    Started    c:\demosite                    http :8080:
                                                                http :8081:

Как видите, DemoSite теперь также прослушивает порт 8081.

Если вы хотите изменить существующее свойство, используйте Set-ItemProperty. Измените имя сайта, например:

PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
PS IIS:\> dir iis:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
NewDemoSite      2    Started    c:\demosite                    http :8080:
                                                                http :8081:

Давайте вернемся к старому имени:

PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite

Мы также хотим изменить удостоверение, от имени которого выполняется пул приложений. Сначала необходимо создать пользователя. Давайте используем ADSI для этого

$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()

Теперь мы готовы настроить DemoAppPool для запуска от имени этого пользователя:

Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

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

Set-Item и Get-Item

Давайте сделаем то же самое, то есть назначим пользователя пулу приложений с помощью со списком set-item/get-item. Этот вариант может быть немного лучше, так как он позволяет воспользоваться преимуществами завершения командной строки. Чтобы узнать, как это работает, не копируйте и не вставка следующих команд. Введите несколько символов и используйте клавишу TAB, чтобы воспользоваться преимуществами завершения командной строки:

PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
PS IIS:\AppPools> $demoPool.processModel.identityType = 3
PS IIS:\AppPools> $demoPool | Set-Item

Итоги

В этом пошаговом руководстве вы узнали, как использовать предоставленные PowerShell командлеты для управления контейнерами пространства имен IIS, такими как сайты и пулы приложений. Вы узнали, как использовать хэш-таблицы и использовать преимущества завершения командной строки. В следующем пошаговом руководстве вы узнаете, как использовать командлеты оснастки IIS для внесения изменений конфигурации в параметры конфигурации IIS, которые не предоставляются через пространство имен оснастки IIS.