Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Введение
Командлеты модуля управления IIS PowerShell можно сгруппировать в три категории.
- Командлеты, необходимые для иерархии провайдера
- низкоуровневые командлеты конфигурации
- Задачно-ориентированные командлеты
В этом пошаговом руководстве представлен ориентированный на задачи командлет IIS и приведены примеры их использования.
Командлеты, необходимые для иерархии провайдера
IIS решила сделать конфигурацию IIS доступной в виде иерархии сайтов, приложений, виртуальных каталогов и пулов приложений. Преимущество заключается в том, что клиенты могут перейти к месту, например к сайту или приложению, в структуре и настроить параметры в этом контексте. Для поддержки иерархии навигации необходимо реализовать определенные предварительно определенные командлеты PowerShell, такие как New-Item, Set-ItemProperty и т. д. Эти встроенные командлеты и иерархия были выпущены в Tech Preview 1 (технический предварительный просмотр 1) в апреле 2008 года.
Командлеты конфигурации низкого уровня
Система конфигурации IIS была полностью изменена в версии 7. Новая система конфигурации полностью основана на XML, на основе схемы и полностью расширяема. Новый FTP-сервер IIS (FTP7) и многие другие модули IIS, такие как перезаписатель URL-адресов, WebDAV и т. д., используют эту расширяемость для подключения к системе конфигурации IIS.
Это расширяемость затрудняет отправку командлетов со статическими аргументами. Представьте себе, что кто-то расширяет существующий раздел конфигурации, например кто-то добавляет свойство myFancyNewBehavior в раздел конфигурации virtualDirectory. Без изменения параметра командлетов IIS fancyNewBehavior не будет задан с помощью командлетов PowerShell Snap-in.
Техническая предварительная версия 1 оснастки IIS PowerShell включала только низкоуровневые командлеты, которые учитывали полную расширяемость конфигурации. Каждый параметр конфигурации IIS (более 100 разделов конфигурации с коллекциями, перечислениями и т. д.) можно настроить с помощью этих командлетов. Эти низкоуровневые командлеты также работают с пользовательской конфигурацией, например если вы расширили конфигурацию IIS с помощью собственного раздела конфигурации.
Ниже приведен список низкоуровневых командлетов, которые мы отправляем с Tech Preview 1 еще в апреле 2008 года:
Add-WebConfiguration
Add-WebConfigurationProperty
Begin-WebCommitDelay
Clear-WebConfiguration
End-WebCommitDelay
Get-WebURL
Get-WebConfiguration
Get-WebConfigurationProperty
Get-WebItemState
Remove-WebConfigurationProperty
Restart-WebItem
Set-WebConfiguration
Set-WebConfigurationProperty
Select-WebConfiguration
Start-WebItem
Stop-WebItem
Командлеты на основе задач
Вот идёт захватывающая новость. Для повседневных задач IIS, таких как создание веб-сайтов, включение трассировки запросов, добавление обработчика или модуля, рекомендуется использовать основанные на задачах командлеты, которые входят в комплект поставки оснастки IIS PowerShell. Ниже приведен список командлетов на основе задач:
Add-WebConfigurationLock
Backup-WebConfiguration
Clear-WebRequestTracingSettings
ConvertTo-WebApplication
Disable-WebGlobalModule
Disable-WebRequestTracing
Enable-WebGlobalModule
Enable-WebRequestTracing
Get-WebAppDomain
Get-WebApplication
Get-WebAppPoolState
Get-WebBinding
Get-WebConfigFile
Get-WebConfigurationBackup
Get-WebConfigurationLocation
Get-WebConfigurationLock
Get-WebFilePath
Get-WebGlobalModule
Get-WebHandler
Get-WebItemState
Get-WebManagedModule
Get-WebRequest
Get-Website
Get-WebsiteState
Get-WebURL
Get-WebVirtualDirectory
New-WebApplication
New-WebAppPool
New-WebBinding
New-WebFtpSite
New-WebGlobalModule
New-WebHandler
New-WebManagedModule
New-Website
New-WebVirtualDirectory
Remove-WebApplication
Remove-WebAppPool
Remove-WebBinding
Remove-WebConfigurationBackup
Remove-WebConfigurationLocation
Remove-WebConfigurationLock
Remove-WebGlobalModule
Remove-WebHandler
Remove-WebManagedModule
Remove-Website
Remove-WebVirtualDirectory
Rename-WebConfigurationLocation
Restart-WebAppPool
Set-WebBinding
Set-WebGlobalModule
Set-WebHandler
Set-WebManagedModule
Start-WebAppPool
Start-Website
Stop-WebAppPool
Stop-Website
Справка по командлетам, ориентированным на задачи
"Использование встроенной системы справки — самый простой способ узнать, какие командлеты доступны и как их использовать. Следующая команда отображает список всех командлетов IIS.
get-command -pssnapin WebAdministration
Другим способом является поиск префикса -Web, используемого для всех командлетов IIS. Попробуйте выполнить следующую команду:
get-command *-Web*
Встроенная система справки предоставляет краткое описание отдельного командлета, параметров и аргументов, которые он принимает, с примерами использования командлета. Попробуйте сделать следующее.
get-help New-WebSite
Чтобы получить полную справку по конкретному командлету, можно ввести следующее:
get-help New-Website -full
Если вы хотите просмотреть только пример использования, попробуйте выполнить следующую команду:
get-help New-Website -example
Полный пример
Возможности командлетов на основе задач показывают, когда они используются для комплексного сценария. В следующем примере мы создадим новый веб-сайт, добавим содержимое на веб-сайт, внесите некоторые изменения в конфигурацию, включите трассировку запросов и запросить новую страницу содержимого.
Шаг 1. Создание нового веб-сайта
Введите следующие команды:
PS IIS:\>mkdir "$env:systemdrive\inetpub\MyNewWebSite"
При этом создается новый физический каталог для нового сайта.
PS IIS:\>New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81
В приведенной выше строке создается новый веб-сайт, указывающий на только что созданный каталог и прослушивающий порт 81.
Шаг 2. Добавление содержимого на сайт
Следующие команды будут перемещаться по пространству имен IIS и создавать новый файл содержимого.
PS IIS:\>cd IIS:\sites\MyNewWebsite
Приведенная выше команда переходит к узлу MyNewWebSite в пространстве имен IIS.
PS IIS:\Sites\MyNewWebSite> dir
Приведенная выше команда содержит все содержимое нового веб-сайта. Он не будет отображать ничего, потому что нет содержимого.
PS IIS:\Sites\MyNewWebSite> notepad "$(Get-WebFilePath .)\test.htm"
Приведенная выше команда открывает блокнот и позволяет изменять test.htm. Вместо того чтобы вам необходимо было помнить, где находится физический путь вашего веб-сайта. Введите текст, например "Hello World" и сохраните файл в блокноте.
PS IIS:\Sites\MyNewWebSite> dir
Если снова ввести команду dir, отобразится только что созданный файл test.htm.
PS IIS:\Sites\MyNewWebSite> Get-WebURL -content ".\test.htm"
Приведенная выше команда выполнит HTTP-запрос на только что созданный веб-сайт и возвращает содержимое, введенное в блокнот.
Шаг 3. Включение трассировки запросов
ВАЖНО: Для того чтобы этот пример работал, необходимо включить функцию трассировки IIS. В Windows Vista откройте панель управления, нажмите кнопку "Программы", выберите "Включить или отключить функции Windows". Найдите и выберите "Трассировка" в разделе "Internet Information Services", "World Wide Web Services", "Состояние системы и диагностика" и нажмите кнопку "ОК".
В качестве последнего шага мы включим трассировку запросов. Трассировка веб-запросов — это функция IIS, которая позволяет получить подробный журнал о том, что произошло во время выполнения запроса. Эта функция очень ценна для многих сценариев устранения неполадок. Чтобы включить трассировку веб-запросов, необходимо просто запустить другой cmldet с поддержкой расположения с именем Enable-WebRequestTracing.
PS IIS:\Sites\MyNewWebSite> Enable-WebRequestTracing
Теперь давайте рассмотрим файл web.config, какая конфигурация была написана командлетом Enable-WebRequestTracing. Для этого используется командлет Get-WebConfigFile, который также учитывает расположение:
PS IIS:\Sites\MyNewWebSite> notepad (Get-WebConfigFile)
Конфигурация выглядит следующим образом:
Содержимое файла web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:30" statusCodes="200-500" verbosity="Warning" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
</configuration>
Важной частью конфигурации является правило определения отказов. По умолчанию файл трассировки создается, если код ошибки составляет от 200 до 500 или когда запрос занимает более 30 секунд. Давайте создадим запрос, который создает ответ в диапазоне ошибок 200–500, выполнив следующую команду:
PS IIS:\Sites\MyNewWebSite>Get-WebURL -url http://localhost:81/URL_DOES_NOT_EXIST
Запрос к не существующему ресурсу создает ошибку 404. Чтобы просмотреть файл трассировки, перейдите по следующему пути:
PS IIS:\Sites\MyNewWebSite>cd "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\"
Теперь вы можете просмотреть файл трассировки, открыв XML-файл в Internet Explorer:
PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"
Сводка
Новые командлеты, ориентированные на задачи, предоставят администраторам простой способ решения повседневных задач в IIS с помощью PowerShell. Командлеты предлагают определение местоположения, а также интуитивно понятный синтаксис и справочную информацию.
Низкоуровневые командлеты IIS, доступные с Tech Preview 1, по-прежнему позволяют выполнять более продвинутые задачи администрирования IIS.