Управление пулами приложений IIS: Практическое руководство по PowerShell

Нужно следить за пулами приложений вашего веб-сервера IIS? Вот руководство по созданию пула приложений в IIS с помощью PowerShell.

Куда обратиться, когда у вас под управлением ферма веб-серверов IIS с потенциально десятками или сотнями пулов приложений? Конечно же, к скриптам PowerShell! Используя модуль управления веб-сервером PowerShell, который устанавливается как часть IIS, и немного PowerShell remoting, вы можете легко создавать, изменять и удалять пулы приложений по вашему желанию.

Давайте рассмотрим несколько примеров того, как это можно сделать.

Если вы никогда не использовали PowerShell для управления вашими серверами IIS раньше, вашим первым желанием может быть поиск ComputerName в большинстве командлетов. К сожалению, это не так.

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

Связано: Invoke-Command: лучший способ запуска удаленного кода

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

ПРИМЕЧАНИЕ: В дальнейшем мы будем создавать код для ввода в скриптблок. Затем мы будем использовать Invoke-Command для выполнения этого скриптблока на удаленном сервере IIS.

Вывод пулов приложений IIS с помощью PowerShell

Для управления пулами веб-приложений нам сначала нужно импортировать модуль WebAdministration.

PS> Import-Module WebAdministration

Это привносит все cmdlet’ы IIS, а также создает IIS-диск. Здесь будет выполняться большая часть конфигурации пула приложений. Давайте сначала проверим, существуют ли уже какие-либо пулы приложений.

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

Создание новых пулов приложений IIS с помощью PowerShell

Похоже, у меня уже есть один, названный GHI. Возможно, мне захочется создать еще один. Использование IIS-диска делает это очень простым. Просто используйте New-Item и укажите путь.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

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

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

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

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Используя Set-ItemProperty, вы можете изменять практически все свойства пула приложений.

Удаление пулов приложений с помощью PowerShell

Наконец, мы закончили с нашим пулом приложений и теперь нужно его удалить. В этот раз у нас есть встроенный cmdlet PowerShell с именем Remove-WebAppPool. Просто укажите имя, и его не станет!

Remove-WebAppPool -Name MyAppPool

Весь этот код, который мы использовали, выполнялся локально, но что, если вам нужно запустить его на удаленном сервере IIS? Вот где вступает в игру удаленное управление PowerShell. Для этого нам просто нужно упаковать весь этот код в скриптблок, а затем использовать Invoke-Command для его выполнения на удаленном сервере.

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

Хотя этот код не очень функционален, он создаст новый пул приложений с именем MyAppPool, установит свойство и затем удалит его. Обратите внимание, что я использую переменную $using. Поскольку код в скриптблоке будет выполняться на удаленном компьютере, это необходимо для раскрытия этой переменной PowerShell и использования фактического значения $appPoolName, которое было объявлено локально на нашем клиентском компьютере.

Если вы хотите узнать больше об управлении IIS в общем, загляните на страницу Администрирование IIS в Technet. Там вы найдете все cmdlet’ы, включенные в модуль WebAdministration, и как их использовать.

Source:
https://adamtheautomator.com/powershell-iis-2/