Оснастка 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
Изменение параметров сайта и пула приложений
Существует два основных способа внесения изменений.
- При изменении простого свойства используйте Set-ItemProperty.
- Если вы работаете с коллекцией и хотите добавить новую запись коллекции, используйте 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.