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


Оснастка PowerShell: использование командлетов на основе задач оснастки Iis PowerShell

Томас Демл

Введение

Командлеты оснастки IIS PowerShell можно сгруппировать в три категории:

  • Командлеты, необходимые иерархии поставщиков
  • низкоуровневые командлеты configuratioin
  • Командлеты на основе задач

В этом пошаговом руководстве представлен командлет IIS на основе задач и приведены некоторые примеры их использования.

Командлеты, необходимые для иерархии поставщиков

Службы IIS решили сделать конфигурацию IIS доступной в виде иерархии сайтов, приложений, виртуальных каталогов и пулов приложений. Преимущество заключается в том, что клиенты могут перейти к расположению, например к сайту или приложению, в иерархии и задать параметры в этом контексте. Для поддержки иерархии навигации некоторые предварительно определенные командлеты PowerShell, такие как New-Item, Set-ItemProperty и т. д. должны быть реализованы. Иерархия и эти встроенные командлеты были отправлены в Tech Preview 1 в апреле 2008 г.

Низкоуровневые командлеты конфигурации

Система конфигурации IIS была полностью изменена в версии 7. Новая система конфигурации полностью основана на XML, управляется схемой и полностью расширяема. Новый FTP-сервер IIS (FTP7) и многие другие модули IIS, такие как средство переопределения URL-адресов, WebDAV и т. д. используйте эту расширяемую возможность для подключения к системе конфигурации IIS.

Это расширение затрудняет доставку командлетов со статическими аргументами. Представьте себе ситуацию, когда кто-то расширяет существующий раздел конфигурации, например кто-то добавляет свойство myFancyNewBehavior в раздел конфигурации virtualDirectory. Без изменения командлетов IIS параметр fancyNewBehavior не будет установлен с помощью командлетов Оснастки PowerShell.

Technical Preview 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". Найдите и выберите "Трассировка" в разделе "Службы IIS", "Веб-службы", "Работоспособность и диагностика" и нажмите кнопку "ОК".

В качестве последнего шага мы включаем трассировку запросов. Трассировка веб-запросов — это функция 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>

Важной конфигурацией является правило failureDefinitions. По умолчанию файл трассировки создается, если код ошибки находится в диапазоне от 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-файл в Интернете Обозреватель:

PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"

Итоги

Новые командлеты на основе задач предоставляют администраторам простой способ выполнения повседневных задач IIS с помощью PowerShell. Командлеты предлагают сведения о расположении и интуитивно понятный синтаксис и справку.

Низкоуровневые командлеты IIS, поставляемые после Технической предварительной версии 1, по-прежнему позволяют выполнять более сложные задачи администрирования IIS.