Если вы управляете серверами Windows, вероятно, вы уже работали с службой Internet Information Services (IIS). Веб-сайты являются одной из основных функций IIS, и с использованием PowerShell вы легко можете управлять и автоматизировать IIS с помощью сценариев PowerShell IIS!
В этой статье вам будет представлен новый способ управления IIS с использованием PowerShell. Используя техники из этой статьи, вы легко сможете создавать и управлять веб-сайтами IIS с помощью сценариев PowerShell IIS.
Для управления IIS с помощью PowerShell требуется один из двух модулей PowerShell – WebAdministration или IISAdminstration. В данной статье рассматривается более современный модуль IISAdministration. В соответствующем видео к этой статье демонстрируется использование более старого модуля WebAdministration, если вы предпочитаете альтернативный подход.
Знание того, как управлять даже простым веб-сайтом для вашей компании или для всего мира, выделит вас из числа ваших коллег. В следующих разделах этой статьи вы узнаете, как создавать и управлять веб-сайтом в IIS. Вы также узнаете, как управлять пулами веб-приложений с использованием нескольких командлетов PowerShell.
Модуль IISAdministration против модуля WebAdministration
У вас есть два варианта управления IIS: использовать модуль WebAdministration или IISAdministration. Но какой из них следует выбрать?
Если вы используете IIS версии 10.0 или выше, более новый модуль IISAdministration предлагает множество улучшений по сравнению с более старым модулем WebAdministration.
Вот несколько основных моментов:
- Командлеты IISAdministration обеспечивают лучшую поддержку конвейера и масштабируются лучше.
- По сравнению со старыми, устаревшими командлетами IIS WebAdministration, IISAdministration содержит более эффективный код.
- Командлеты IISAdministration проще и обеспечивают прямой доступ к менеджеру сервера.
В этой статье будет акцентирован на новый модуль IISAdministration.
Предпосылки
Эта статья будет практической. Если вы собираетесь следовать за нами, убедитесь, что у вас есть следующие предпосылки.
- Минимум Windows PowerShell 5.1 или PowerShell 6+
- Модуль PowerShell IISAdministration из Галереи PowerShell
- Включенная функция Windows IIS 10.0

Рекомендуется быть знакомым с основами HTML. В следующих примерах HTML будет играть определенную роль. Но не волнуйтесь, вы сможете скопировать и вставить код!
Все примеры в этом посте были созданы с использованием IIS 10.0 на Windows 10 и PowerShell 7 Preview 6. Командлеты IISAdministration такие же для Windows Server 2016 и 2019 и работают с Windows PowerShell 5.1.
Это все, что касается используемых инструментов, теперь о ресурсах, необходимых для следования.
Установка модуля IISAdministration
Как только вы выполните предварительные требования, придется заняться настройкой. К счастью, с настройкой не так много работы, так как модуль PowerShell, который вам нужен (PowerShell module IISAdministration), бесплатно доступен в PowerShell Gallery.
Продолжайте и откройте повышенную консоль PowerShell на вашем веб-сервере и установите модуль с использованием следующей команды.
Если у вас нет доступа к интернету, вы можете загрузить модуль на другой хост и скопировать его в каталог модулей. Ознакомьтесь с документацией по команде
Save-Module
.
Обнаружение доступных Cmdlets
Как и с любым модулем PowerShell, с которым вы, возможно, не знакомы, одной из первых команд, которую вы должны использовать для изучения инвентаря cmdlet модуля, является Get-Command
. Использование команды Get-Command -Module 'IISAdministration'
, как показано ниже, позволит вам увидеть, что возможно с этим модулем.
Даже если вы будете изучать некоторые общие действия с веб-сайтами, эти команды дадут вам представление обо всем остальном, что вы можете сделать.

Теперь у вас есть список доступных команд. Пришло время начать создавать свой первый сайт.
Создание вашего первого веб-сайта
Чтобы иметь сайт, с которым можно работать, давайте сначала создадим веб-сайт. Для этого первым шагом будет создание каталога для сохранения веб-контента. Кроме того, вам потребуется файл HTML в этом каталоге для отображения в IIS. Этот каталог будет служить веб-каталогом, который будет использоваться в последующих примерах.
Создание веб-каталога и страницы
Сначала создайте каталог. Для этого вы можете использовать командлет New-Item
. Приведенный ниже код создаст каталог по пути C:\MyWebsite.
Вы можете выбрать любой путь с помощью вышеуказанного кода. Чтобы упростить, будут использоваться общие пути.
После создания каталога пришло время создать HTML-файл, который станет стартовой страницей для вашего нового веб-сайта.
Теперь создайте файл с именем index.html в каталоге C:\Mywebsite, как показано ниже.
После создания файла откройте его в выбранном вами редакторе и скопируйте в него следующий код. Этот HTML представляет собой простую страницу, которая будет использоваться для проверки правильной конфигурации IIS по завершении настройки.
Создание веб-сайта в IIS
Пришло время сделать только что созданную веб-страницу доступной миру. Для этого вам нужно создать виртуальный каталог. Виртуальный каталог содержит все ресурсы, используемые для отображения страницы.
По умолчанию IIS создает виртуальный каталог в C:\inetpub\wwwroot. Каталог содержит все ресурсы и файлы веб-страницы по умолчанию для IIS. Вы также можете использовать каталог по умолчанию C:\inetpub\wwwroot для хранения ваших файлов, но в этих примерах он не будет использоваться, чтобы сделать пути как можно более короткими. Именно поэтому вы используете C:\MyWebsite.
Для создания нового виртуального каталога (сайта) используйте New-IISSite
cmdlet. Этот cmdlet позволяет создавать веб-сайты IIS.
В этой статье создайте веб-сайт с именем Mywebsite, направленный в каталог C:\MyWebsite, который прослушивает порт 8088. В приведенном ниже фрагменте кода вы можете увидеть, как это сделать с использованием New-IISSite
cmdlet.
Единственный момент, который может вызвать путаницу, – это параметр BindingInformation
. Этот параметр принимает только синтаксис привязки. В этом фрагменте кода New-IISSite
создаст веб-сайт, связанный с IP-адресом (*
равносильно 127.0.0.1), портом TCP для прослушивания, за которым следуют любые заголовки HTTP.
Синтаксис привязки можно объяснить как протокол, за которым следуют источник:Порт:назначение. В этом примере вы настроили IIS для прослушивания HTTP-запросов с ЛЮБОГО () IP-адреса на порту 8088, а местом назначения является локальный хост.*
Как только сайт будет создан, вы сможете запустить Get-IISSite
, чтобы проверить, как он выглядит, как показано ниже.

По умолчанию конфигурация веб-сайта запускается, и ваш хост начинает обслуживать эти HTTP-запросы. Откройте выбранный вами браузер и перейдите на локальную машину, указав порт 8088. Теперь вы должны увидеть ранее созданную вами веб-страницу.

Поздравляем! Вы только что настроили свой первый веб-сайт на IIS с помощью PowerShell!
Теперь, когда у вас есть работающий сайт, пришло время узнать, как управлять вашим веб-сайтом и хост-сервером IIS.
Управление веб-сайтом IIS
Как только сайт начнет работать, вам, безусловно, придется выполнять обычные действия, такие как остановка и запуск сайта. Например, если на сайте нужно внести изменения, иногда придется перезапустить сайт.
Для управления сайтом в PowerShell у вас есть две командлеты для работы – Start-IISSite
и Stop-IISSite
. Эти две командлеты работают аналогично тому, как работают командлеты Stop-Service
и Start-Service
.
Остановка веб-сайта аналогична остановке службы Windows. Вы предотвращаете или разрешаете доступ к сайту, доступному по протоколу, обслуживаемому на уникальном порте IIS. Однако вы не останавливаете хост IIS. Сайты могут быть остановлены и запущены на индивидуальной основе.
Остановка одного сайта
Для остановки веб-сайта IIS используйте командлет Stop-IISSite
. По умолчанию сайт, который вы создали ранее, должен находиться в состоянии Started
. Если вы остановите сайт, предотвращая доступ к MyWebsite, выполните Stop-IISSite
, указав имя, как показано ниже. Этот код останавливает обслуживание сайта MyWebsite IIS. После остановки сайта вы не сможете получить к нему доступ.
Пример проверки состояния веб-сайта как Started
, его остановки и повторной проверки состояния показан ниже. В этом примере вы:
- Получаете статус сайта MyWebsite с использованием
Get-IISSite
. - Выполняете командлет
Stop-IISSite
для сайта MyWebsite. Этот командлет отключает доступ к веб-сайту. Поскольку эта операция вносит изменения в работу, вас попросят подтвердить действие. - Снова выполняете
Get-IISSite
, чтобы убедиться, что сайт MyWebsite остановлен, заметив состояниеStopped
.

Остановка всех сайтов
Как было показано выше, вы можете остановить один сайт, но также можно легко остановить все сайты. Используя конвейер и направляя вывод Get-IISSite
к Stop-IISSite
, PowerShell перечислит все сайты и остановит их. В приведенном ниже примере кода используется необязательный параметр ключа Verbose
, чтобы показать больше информации.

Вы также можете остановить все сайты в IIS, остановив службу W3SVC или World Wide Web Publishing Service. Остановка службы Windows приведет к выключению IIS и предотвратит обслуживание всех сайтов. Однако, если вы это сделаете, сайты могут по-прежнему отображаться в состоянии “Запущено”.
Запуск одного сайта
Допустим, вы внесли некоторые изменения на сайте MyWebsite и теперь нужно снова его запустить. Пришло время использовать команду Start-IISSite
. Для этого просто укажите имя так же, как вы делали с помощью команды Stop-IISSite
.
После выполнения, вы можете проверить состояние снова, используя Get-IISSite
. Когда вы это сделаете, вы должны увидеть подобный вывод, как на скриншоте ниже.

Get-IISSite
and starting the site with Start-IISSite
И теперь ваш сайт должен быть доступен снова по адресу http://localhost:8088, если вы обновите свой браузер.
Запуск всех сайтов
Подобно тому, как вы остановили публикацию всех сайтов, вы также можете использовать конвейер для запуска всех веб-сайтов на вашем хосте IIS.
Опять же, вы получаете все сайты IIS, обслуживаемые и используя конвейер для запуска каждого из них. Ваш вывод должен выглядеть подобно скриншоту ниже.

Управление веб-привязками
Теперь пришло время выполнить некоторые общие административные задачи на сайте MyWebsite. Одной из самых распространенных задач является изменение веб-привязок.
При создании сайта MyWebsite вы использовали синтаксис привязки *:8088:
. Этот синтаксис означает прослушивание IP-адреса 127.0.0.1, на порту 80 без HTTP-заголовков. Допустим, теперь вы решили, что хотите, чтобы сайт вместо этого слушал порт 9000. Для этого вам нужно изменить привязки сайта.
Инспекция существующих привязок
Прежде чем изменить привязки сайта, вам следует первоначально проверить текущую конфигурацию. Один из способов сделать это – проверить свойство Binding
, возвращаемое Get-IISSite
. Обратите внимание на следующий фрагмент кода, чтобы увидеть, как это делается. В этом фрагменте Get-IISSite
запрашивает сайт MyWebSite и возвращает только свойство Bindings
.
При проверке только свойства Bindings
PowerShell вернет объект с несколькими различными элементами информации, как показано ниже.

Если вы хотите увидеть только информацию о привязках, вы можете явно ссылаться на свойство bindingInformation
, как показано ниже.

Удаление привязок
Если вы хотите изменить порт, на котором сайт слушает, вы должны сначала удалить существующую привязку к этому порту. Чтобы удалить привязку, вы должны сначала остановить сайт.
После остановки сайта вы можете удалить существующую привязку, привязывающую сайт MyWebsite к порту 8088. Для этого вы можете использовать Remove-IISSiteBinding
cmdlet.
Чтобы удалить привязку для MyWebsite, как было определено ранее, вот пример использования Remove-IISSiteBinding
для выполнения этой задачи. Ниже вы указываете имя сайта и указываете синтаксис привязки, обнаруженный ранее.
При выполнении кода вам будет предложено подтвердить ваш выбор, так как вы выполняете действие, способное привести к уничтожению, как показано ниже.

Нет ограничений по количеству привязок. Вы также могли бы оставить оригинальную привязку и добавить новую привязку для TCP-порта 9000 с таким же успехом.
Теперь вы можете выполнить команду Get-IISSite -Name 'MyWebsite'
снова. Теперь вы увидите, что информация о привязке была удалена, как показано пустым значением под Bindings
.

Несмотря на то что сайт опубликован, IIS не знает, как направлять трафик на ваш сайт.
Важно иметь хотя бы одну привязку, назначенную вашему сайту. Чтобы продемонстрировать вам важность этого, попробуйте перейти по адресу http://localhost:8088/index.html снова. Если вы использовали веб-браузер Mozilla Firefox, вы можете увидеть это сообщение ниже.

Создание новых привязок
В предыдущем разделе вы удалили единственную привязку сайта MyWebsite. Хотя это нарушило работу сайта, это всего лишь временная проблема. Пора исправить эту проблему, создав новую привязку.
Чтобы создать новую привязку, используйте командлет New-IISSiteBinding
. Поскольку теперь вам нужно привязать порт 9000 к сайту MyWebsite, укажите правильный синтаксис привязки, как показано ниже.
После создания нового привязывания снова запустите сайт с помощью Start-IISSite
. Помните, что для создания этого нового привязывания требуется отключить сайт.
Когда сайт снова запустится, вы должны сможете получить к нему доступ на порту 9000. Чтобы проверить это, откройте выбранный вами веб-браузер и перейдите по адресу http://localhost:9000. Теперь вы должны увидеть, что веб-страница снова работает на порту 9000.

Удаление веб-сайта
Если вы только что прошли учебное пособие и не собираетесь оставлять сайт MyWebsite навсегда, пришло время его удалить. Для удаления сайта используйте командлет Remove-IISSite
.
Удаление сайта IIS может быть опасной операцией, особенно если вы удаляете сайт на IIS, который хостит другие производственные веб-сайты. Чтобы убедиться, что вы удаляете нужный сайт, рекомендуется использовать общий параметр PowerShell WhatIf
. Этот параметр позволяет вам просмотреть, что бы произошло, если бы команда действительно была выполнена.
Ниже приведен пример удаления сайта MyWebsite с использованием параметра WhatIf
.

-WhatIf
!Если всё выглядит хорошо, отпустите защитную планку и выполните код снова, на этот раз без параметра -WhatIf
.
При использовании командлета
Remove-IISSite
сайт не удаляется. Он удаляется из конфигурации IIS. Файлы веб-сайта остаются нетронутыми.
Summary
В этой статье вы узнали, как создавать веб-сайт с использованием модуля IISAdministration. Вы увидели, как выполнять административные операции, необходимые для поддержки веб-сайта. Теперь у вас достаточно базовых знаний для работы с любым современным хостом IIS с использованием PowerShell!