Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
AppCmd.exe — это одно средство командной строки для управления IIS 7 и более поздних версий. Она предоставляет все функциональные возможности управления ключевыми серверами с помощью набора интуитивно понятных объектов управления, которые можно управлять из командной строки или из скриптов.
AppCmd позволяет легко управлять сервером без использования средства графического администрирования и быстро автоматизировать задачи управления серверами без написания кода.
Некоторые из действий, которые можно сделать с помощью AppCmd:
- Создание и настройка сайтов, приложений, пулов приложений и виртуальных каталогов
- Запуск и остановка сайтов и перезапуск пулов приложений
- Перечисление выполняемых рабочих процессов и проверка текущих выполняемых запросов
- Поиск, управление, экспорт и импорт IIS и настройка ASP.NET
AppCmd также позволяет администраторам серверов создавать расширенные задачи управления путем объединения нескольких простых AppCmd.exe команд или повторного использования выходных данных средства в другой программе.
Вы также можете найти дополнительные разделы AppCmd и узнать эффективные способы управления сервером из командной строки в моем блоге.https://mvolo.com/category/appcmd/
Как использовать AppCmd.exe
Командная строка AppCmd.exe построена на основе набора объектов управления сервера верхнего уровня, таких как сайт и приложение. Эти объекты предоставляют методы, которые можно использовать для выполнения различных действий над этими объектами, а экземпляры объектов предоставляют свойства, которые можно проверять и манипулировать.
Например, объект Site предоставляет методы для перечисления, создания и удаления экземпляров сайта (это стандартные методы, которые присутствуют почти на всех объектах), а также остановки и запуска сайтов. Каждый экземпляр сайта, в свою очередь, будет содержать свойства, такие как имя сайта и идентификатор сайта, которые можно проверить, найти или задать. Выходные данные каждой команды всегда являются списком экземпляров объектов.
Замечание
AppCmd.exe находится в каталоге %systemroot%\system32\inetsrv\ . Так как он не является частью PATH автоматически, необходимо использовать полный путь к исполняемому файлу при выполнении таких %systemroot%\system32\inetsrv\AppCmd.exe list sitesкоманд. Кроме того, можно вручную добавить каталог inetsrv в путь на компьютере, чтобы получить доступ к AppCmd.exe непосредственно из любого расположения.
Средство работает путем выполнения команды на одном из поддерживаемых объектов управления с необязательными параметрами, используемыми для дальнейшей настройки поведения команды:
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*
Где <COMMAND> является одной из команд, поддерживаемых <OBJECT>. Большинство объектов поддерживают этот базовый набор команд:
- СПИСОК Отображение объектов на компьютере. Необязательный <идентификатор> может указать уникальный объект для списка, или один или несколько параметров можно указать для сопоставления с свойствами объекта.
- ДОБАВИТЬ Создайте объект с указанными свойствами объекта, заданными во время создания.
- УДАЛИТЬ Удалите объект, указанный идентификатором<>.
- УСТАНОВИТЬ Задайте параметры для объекта, указанного идентификатором<>.
Объект часто поддерживает дополнительные команды, такие как START и STOP для объекта Site.
Например, текущий набор объектов, доступных через AppCmd (где <OBJECT> является одним из объектов управления, поддерживаемых средством):
| Объект | Описание |
|---|---|
| Site | Администрирование виртуальных сайтов |
| Приложение | Администрирование приложений |
| VDir | Администрирование виртуальных каталогов |
| Apppool | Администрирование пулов приложений |
| Config | Администрирование общих разделов конфигурации |
| Резервное копирование | Управление резервными копиями конфигурации сервера |
| WP | Администрирование рабочих процессов |
| запрос | Отображение активных HTTP-запросов |
| Модуль | Администрирование модулей сервера |
| Трассировка | Управление журналами трассировки сервера |
Где <ID> находится идентификатор конкретного объекта для экземпляра объекта, который требуется указать для команды. Формат идентификатора зависит от каждого типа объекта. Например, объект Site использует имя сайта, объект App использует путь приложения, а объект AppPool использовал имя пула приложений.
Где [ /parameter:value ]* равно нулю или больше параметров для команды. Каждая команда поддерживает другой набор параметров в зависимости от объекта. Как правило, команды, которые ищут объекты или управляют свойствами объектов, позволяют указывать в качестве параметра любой из свойств объекта.
Само средство также поддерживает ряд параметров, которые влияют на выполнение общих команд и не являются специфичными для какого-либо из объектов. Они перечислены на странице справки верхнего уровня, доступной на странице справки "AppCmd.exe /?", и включают такие параметры, как /text, /config и /xml для управления выходными данными средства и /commit для управления расположением изменений конфигурации.
Получение помощи
AppCmd предоставляет самоописательную справку, которую можно использовать в качестве ссылки на все поддерживаемые объекты и команды. Существует три типа помощи, которые доступны, когда вы углубляетесь в выполнение задачи, которую хотите сделать.
Общая справка
На экране общей справки отображаются объекты, поддерживаемые средством, а также общие применимые параметры средства. Чтобы показать общую справку:
APPCMD /?
Первые несколько строк выходных данных:
General purpose IIS command line administration tool.
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >
Supported object types:
SITE Administration of virtual sites
APP Administration of applications
...
Справка по объекту
На экране справки по объекту показаны команды, поддерживаемые определенным объектом. Чтобы отобразить справку по объекту:
APPCMD <OBJECT> /?
где <OBJECT> является одним из поддерживаемых типов объектов. Например, эта командная строка отобразит справку для объекта сайта:
APPCMD site /?
Помощь по командам
На экране справки команды описан синтаксис для определенной команды и объекта, включая параметры, поддерживаемые и примеры распространенных задач. Чтобы отобразить справку по команде, выполните следующие действия.
APPCMD <COMMAND> <OBJECT> /?
Например, эта командная строка покажет справку по команде LIST объекта App.
APPCMD list app /?
Поиск объектов с помощью команды LIST
Команда LIST является самой универсальной командой и поддерживается всеми объектами. Цель этой команды — найти экземпляры объекта на основе заданных условий. Выходные данные этой команды — это список экземпляров объектов, которые можно проверить, просматривая их свойства, экспортируйте для дальнейшего повторного создания на другом компьютере или используйте другую команду для выполнения действий с ними.
Перечисление всех объектов
Самый простой способ использовать команду LIST не имеет параметров, которые просто перечисляют все известные экземпляры объекта:
APPCMD list <OBJECT>
Например, чтобы вывести список всех сайтов на компьютере, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD list sites
Выходные данные будут похожи на следующие:
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)
По умолчанию каждый объект отображается в одной строке, указывая идентификатор конкретного объекта (например, "Веб-сайт по умолчанию") и одно или несколько важных свойств (например, идентификатор, привязки и состояние).
Перечисление определенного объекта
Команда LIST может использоваться для поиска экземпляра определенного именованного объекта с помощью командной строки в этой форме:
APPCMD list <OBJECT> <ID>
Например, используйте эту командную строку для поиска сайта с уникальным идентификатором "Веб-сайт по умолчанию":
%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site"
Перечисление объектов, удовлетворяющих запросу
Чтобы найти все экземпляры объектов, которые соответствуют определенным критериям, укажите один или несколько параметров, указывающих значения свойств объектов для сопоставления. Например, используйте эту командную строку для поиска всех остановленных сайтов:
%systemroot%\system32\inetsrv\APPCMD list sites /state:Stopped
Можно указать любое количество пар "свойство-значение", и средство гарантирует, что возвращаемые объекты удовлетворяют всем указанным критериям. Например, используйте эту команду для поиска сайтов, которые остановлены и настроены так, чтобы не запускаться автоматически.
%systemroot%\system32\inetsrv\APPCMD list sites /serverAutoStart:false /state:Stopped
Управление объектами с помощью ADD, SET и DELETE
Помимо LIST, большинство объектов также поддерживают команды ADD, SET и DELETE.
Добавление новых объектов
Команда ADD создает новый экземпляр объекта. Например, эта командная строка создаст новый сайт:
%systemroot%\system32\inetsrv\APPCMD add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"C:\MyNewSite"
В зависимости от объекта, для задания необходимых свойств в новом экземпляре требуются некоторые параметры, а другие свойства могут быть необязательными. Ошибка будет возвращена, если обязательный параметр не указан.
На экране справки команды указывается, какие параметры необходимы. Например, используйте эту командную строку для просмотра параметров, необходимых для добавления сайта:
%systemroot%\system32\inetsrv\APPCMD add site /?
Дополнительные сведения о создании сайтов, приложений, виртуальных каталогов и пулов приложений см. в разделе "AppCmd".
Изменение существующих объектов
Команда SET задает одно или несколько свойств в указанном экземпляре объекта. Для этой команды требуется указать идентификатор конкретного объекта. Например, чтобы изменить свойство идентификатора веб-сайта по умолчанию, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /id:200
Используйте синтаксис команды help, чтобы узнать, какие свойства можно задать для конкретного объекта. Например, чтобы просмотреть свойства, поддерживаемые использованием веб-сайта по умолчанию:
%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /?
Удаление объектов
Команда DELETE удаляет экземпляр объекта. Как и SET, эта команда также требует указания идентификатора для конкретного объекта. Например, используйте эту командную строку для удаления сайта с именем MyNewSite:
%systemroot%\system32\inetsrv\APPCMD delete site "MyNewSite"
Управление резервными копиями
AppCmd позволяет создавать и восстанавливать резервные копии глобальной конфигурации сервера. Это можно использовать для восстановления после нежелательных изменений конфигурации сервера и возврата к состоянию известного сервера. Рекомендуется создать резервную копию перед изменением конфигурации сервера или установить компонент, который изменяет его. Каждая резервная копия содержит копию текущего корневого файла конфигурации ApplicationHost.config, а также другое связанное состояние сервера, включая конфигурацию FTP и конфигурацию средства администрирования IIS.
Чтобы создать резервную копию, используйте команду ADD объекта Backup:
%systemroot%\system32\inetsrv\APPCMD add backup
BACKUP object "20060519T172530" added
Это создало резервную копию с автоматически созданным именем, которое представляет дату и время резервного копирования.
Определенное имя резервной копии можно указать следующим образом:
%systemroot%\system32\inetsrv\APPCMD add backup MyBackup
BACKUP object "MyBackup" added
Список доступных резервных копий можно отобразить с помощью команды LIST объекта Backup:
%systemroot%\system32\inetsrv\APPCMD list backups
BACKUP "20060519T172530"
BACKUP "MyBackup"
Наконец, чтобы восстановить резервную копию, используйте команду RESTORE с именем резервной копии:
%systemroot%\system32\inetsrv\APPCMD restore backup "MyBackup"
Restored configuration from backup "MyBackup"
Восстановление резервной копии останавливает сервер и восстанавливает глобальную конфигурацию до состояния во время создания резервной копии.
В Windows Server® 2008 и Windows Vista с пакетом обновления 1 (SP1) AppCmd также сможет работать с периодическими резервными копиями конфигурации, сделанными службой журнала конфигурации. Эти резервные копии будут отображаться в списке резервных копий AppCmd и будут доступны для восстановления так же, как и резервные копии, сделанные вручную с помощью средства.
Дополнительные сведения об управлении резервными копиями конфигурации с помощью AppCmd см. в статье http://mvolo.com/most-important-appcmd-commands-backing-up-and-restoring-iis7-configuration/.
Работа с сайтами, приложениями, виртуальными каталогами и пулами приложений
Создание сайтов, приложений и виртуальных каталогов и управление ими — это наиболее распространенные задачи, с которыми сталкиваются администраторы. IIS 7 и выше использует более строгую иерархию хранения, чем предыдущие версии, которые работают следующим образом:
Веб-сайт Веб-сайт получает запросы на определенные конечные точки привязки, определенные IP-адресами и заголовками узлов. Например, этот URL-адрес представляет веб-сайт, привязанный к порту 81:
http://www.mysite.com:81.Веб-сайт содержит одно или несколько приложений.
Приложение Приложение представлено своим виртуальным путем в пространстве имен URL веб-сайта. Например, приложение с виртуальным путем "/app1" может быть представлено следующим URL-адресом:
http://www.mysite.com:81/app1Приложение принадлежит одному пулу приложений.
Приложение содержит один или несколько виртуальных каталогов.
Виртуальный каталог Виртуальный каталог представлен своим виртуальным путем в пространстве имен url-адресов приложения. Например, виртуальный каталог с виртуальным путем "/vdir1" может быть представлен следующим URL-адресом:
http://www.mysite.com:81/app1/vdir1Виртуальный каталог сопоставляется с физическим расположением на диске.
Эта иерархия отличается от IIS 6.0, где веб-сайт может содержать сочетание виртуальных каталогов и приложений, а приложения — это просто специально помеченные виртуальные каталоги.
Пул приложений Пул приложений задает группу параметров рабочих процессов, выполняющих обработку запросов для приложений в этом пуле приложений. Пулы приложений не являются частью иерархии site-app-vdir. Каждое приложение указывает, в каком пуле приложений он будет работать, или он выполняется в пуле приложений по умолчанию. Пул приложений определяет ряд параметров рабочего процесса, таких как версия среды CLR, загруженная им, режим интеграции .NET, учетная запись, в которой выполняется рабочий процесс, и параметры перезапуска процесса.
По умолчанию IIS 7 и выше устанавливаются с веб-сайтом с именем "Веб-сайт по умолчанию", который прослушивает порт 80 без ограничений по IP-адресу и заголовкам узла. На этом веб-сайте есть корневое приложение, а у этого приложения есть корневой виртуальный каталог. Также существует пул приложений с именем DefaultAppPool, который используется всеми новыми приложениями по умолчанию.
Эта командная строка выводит список всех сайтов, включая веб-сайт по умолчанию:
%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
Давайте рассмотрим приложения, принадлежащие веб-сайту по умолчанию, указав свойство site.name при перечислении приложений:
%systemroot%\system32\inetsrv\APPCMD list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)
Аналогичная команда выводит список виртуальных каталогов в приложении "Веб-сайт по умолчанию/", указав свойство app.name при перечислении Vdirs:
%systemroot%\system32\inetsrv\APPCMD list vdirs /app.name:"Default Web Site/"
VDIR "Default Web Site/" (physicalPath:C:\inetpub\wwwroot)
Наконец, давайте рассмотрим пулы приложений:
%systemroot%\system32\inetsrv\APPCMD list apppools
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)
Создание сайтов, приложений, виртуальных каталогов и пулов приложений
Теперь мы создадим новый веб-сайт с именем MySite с идентификатором сайта 2, который прослушивает порт 81 для всех IP-адресов и заголовков узлов:
%systemroot%\system32\inetsrv\APPCMD add site /name:MySite /id:2 /bindings:http/*:81: /physicalPath:C:\inetpub\mysite
SITE object "MySite" added
APP object "MySite/" added
VDIR object "MySite/" added
Для создания веб-сайта необходимо указать параметры имени . Параметр идентификатора является необязательным. Если он не указан, AppCmd создаст следующий доступный идентификатор сайта для нового сайта. Мы также указываем привязки и параметры physicalPath , описанные ниже. Можно также указать дополнительные свойства, чтобы задать их значения.
Свойство привязки использует формат protocol/bindingInformation, где bindingInformation зависит от протокола. Для HTTP он находится в формате IP:PORT:HOSTHEADER. Можно указать несколько привязок с помощью запятой для разделения каждого определения.
Мы также указали свойство physicalPath для сайта. Хотя сам веб-сайт не имеет физического пути, эта короткая форма используется для удобного создания веб-сайта с корневым приложением и корневым виртуальным каталогом, сопоставленным с указанным физическим путем.
Если вы не укажете физический путь, веб-сайт будет создан без приложений; приложение и виртуальный каталог потребуется создать явно.
Давайте добавим еще одно приложение на веб-сайт:
%systemroot%\system32\inetsrv\APPCMD add app /site.name:MySite /path:/app1 /physicalPath:C:\inetpub\mysite\app1
APP object "MySite/app1" added
VDIR object "MySite/app1/" added
Это создало новое приложение с виртуальным путем "/app1", принадлежащим сайту, созданному выше, с корневым виртуальным каталогом, указывающим на C:\inetpub\mysite\app1. Обязательный параметр пути указывает виртуальный путь нового приложения, а требуемый параметр site.name указывает сайт, к которому будет принадлежать приложение. Необязательный параметр physicalPath — это ярлык, как и в случае сайта, который создает корневой виртуальный каталог вместе с приложением.
Если параметр physicalPath не указан или вы хотите добавить другой виртуальный каталог в приложение, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD add vdir /app.name:"MySite/app1" /path:/vdir1 /physicalPath:C:\inetpub\mysite\app1\vdir1
VDIR object "MySite/app1/vdir1" added
Это создало новый виртуальный каталог с виртуальным путем "/vdir1", принадлежащим приложению, созданному выше и указывающим на C:\inetpub\mysite\app1\vdir1. Обязательный параметр пути указывает виртуальный путь нового виртуального каталога, а требуемый параметр app.name указывает приложение, к которому будет принадлежать виртуальный каталог. Параметр PhysicalPath указывает физическое расположение виртуального каталога.
Наконец, создадим новый пул приложений:
%systemroot%\system32\inetsrv\APPCMD add apppool /name:MyAppPool
APPPOOL object "MyAppPool" added
Это создало новый пул приложений с именем MyAppPool.
Дополнительные сведения о сайтах, приложениях и виртуальных каталогах в IIS 7 и более поздних версиях, а также о вариантах их создания с помощью AppCmd см. в статье "Создание сайтов IIS7 и выше", "Приложения" и "Виртуальные каталоги".
Настройка сайтов, приложений, виртуальных каталогов и пулов приложений
Ранее мы добавили новый веб-сайт с несколькими приложениями и виртуальными каталогами. Теперь мы будем использовать AppCmd для изменения некоторых их свойств. Все объекты AppCmd поддерживают один и тот же стандартный синтаксис для задания свойств:
APPCMD SET <OBJECT> <ID> [ /property:value ]*
Сначала давайте отобразим приложения, доступные на компьютере:
%systemroot%\system32\inetsrv\APPCMD list apps
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "MySite/" (applicationPool:DefaultAppPool)
APP "MySite/app1" (applicationPool:DefaultAppPool)
Обратите внимание, что два приложения, которые мы создали ранее, находятся под веб-сайтом "MySite". Оба этих приложения предназначены для использования пула приложений DefaultAppPool. Давайте изменим свойство applicationPool корневого приложения MySite/, чтобы использовать новый пул приложений, созданный ранее с именем MyAppPool:
%systemroot%\system32\inetsrv\APPCMD set app "MySite/" /applicationPool:MyAppPool
APP object "MySite/" changed
Это изменило значение свойства applicationPool приложения "MySite/" на новое значение, эффективно переместив приложение в новый пул приложений.
Причина перемещения приложения в новый пул приложений заключается в том, что мы можем изменить некоторые параметры среды выполнения рабочего процесса, в рамках которого будет выполняться это приложение. Для этого мы изменим некоторые свойства пула приложений MyAppPool. Перед изменением значений свойств часто полезно сначала отобразить доступные свойства и их текущие значения. Мы можем сделать это, перечислив наше приложение в режиме подробного просмотра:
%systemroot%\system32\inetsrv\APPCMD list apppool "MyAppPool" /text:*
APPPOOL
APPPOOL.NAME: MyAppPool
managedPipelineMode: Integrated
managedRuntimeVersion: v2.0
state: Started
[add]
name:"MyAppPool"
queueLength:"1000"
autoStart:"true"
enable32BitAppOnWin64:"false"
managedRuntimeVersion:"v2.0"
managedPipelineMode:"Integrated"
passAnonymousToken:"true"
[processModel]
identityType:"NetworkService"
userName:""
password:""
...
pingingEnabled:"true"
...
Обратите внимание на количество свойств объекта пула приложений; Полные выходные данные здесь не отображаются.
Мы заинтересованы в изменении свойства managedRuntimeVersion на "v1.1" для запуска приложений в этом пуле приложений с ASP.NET версии 1.1. Ниже приведена командная строка для этого:
%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /managedRuntimeVersion:v1.1
APPPOOL object "MyAppPool" changed
Вы можете увидеть из выходных данных List выше, что в объекте пула приложений есть множество свойств, а некоторые свойства вложены в элемент конфигурации. Например, параметры процесса вложены под элементом ProcessModel.
Если вы хотите задать вложенное свойство, обратитесь к нему с нотацией пути элемента следующим образом:
%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /processModel.pingingEnabled:false
Другие элементы конфигурации
Помимо управления свойствами конфигурации с объектами AppCmd верхнего уровня, можно задать свойства конфигурации в любом разделе конфигурации, включая те, которые связаны с объектами AppCmd верхнего уровня. Это рассматривается далее в разделе "Работа с конфигурацией".
Проверка состояния сервера
AppCmd предоставляет функциональные возможности для проверки различных аспектов состояния среды выполнения сервера, в том числе:
- состояние сайта
- Состояние пула приложений
- активные рабочие процессы сервера
- В настоящее время выполняются запросы
Кроме того, некоторые объекты предоставляют команды, позволяющие управлять состоянием среды выполнения, например командой STOP объекта Site и командой RECYCLE объекта AppPool.
Проверка состояния сайта и пула приложений
Состояние сайтов и пулов приложений сообщается из свойства состояния каждого объекта. При перечислении сайтов или пулов приложений состояние отображается в выходных данных по умолчанию. Рассмотрим пример.
%systemroot%\system32\inetsrv\APPCMD list apppools DefaultAppPool
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
Свойство состояния также можно использовать для поиска сайтов или пулов приложений, которые находятся в определенном состоянии. Например, чтобы найти все запущенные пулы приложений:
%systemroot%\system32\inetsrv\APPCMD list apppools /state:started
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)
Проверка выполняющихся рабочих процессов
Объект WP (рабочий процесс) можно использовать для перечисления выполняемых рабочих процессов:
%systemroot%\system32\inetsrv\APPCMD list wps
WP "3577" (apppool:DefaultAppPool)
Каждый объект WP имеет свойство apppool.name , которое позволяет перечислить все выполняемые рабочие процессы для определенного пула приложений:
%systemroot%\system32\inetsrv\APPCMD list wps /apppool.name:DefaultAppPool
WP "3577" (apppool:DefaultAppPool)
Проверка текущих выполняемых запросов
Объект Request позволяет проверить текущие выполняемые запросы на сервере:
%systemroot%\system32\inetsrv\APPCMD list requests
REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost)
Список может быть ограничен запросами определенного сайта, пула приложений, рабочего процесса или URL-адреса с помощью соответствующего свойства для фильтрации результатов. Ниже приведены некоторые примеры.
%systemroot%\system32\inetsrv\APPCMD list request /apppool.name:DefaultAppPool
%systemroot%\system32\inetsrv\
APPCMD list requests /wp.name:3567
%systemroot%\system32\inetsrv\APPCMD list requests /site.id:1
Работа с конфигурацией
IIS 7 и более поздних версий — иерархическая система конфигурации на основе XML, аналогичная системе конфигурации ASP.NET, которая хранит конфигурацию сервера в схематизированных разделах XML. Конфигурация может находиться на уровне сервера ApplicationHost.config файле или размещаться в распределенных файлах конфигурации Web.config в иерархии приложений.
AppCmd обеспечивает полную проверку и редактирование иерархии конфигурации из командной строки с помощью объекта Config. Кроме того, AppCmd предоставляет другие полезные функции, такие как очистка конфигурации, блокировка и разблокировка и поиск.
Просмотр конфигурации
AppCmd работает с конфигурацией на уровне разделов конфигурации. Каждый раздел конфигурации обычно описывает компонент сервера и может содержать один или несколько вложенных элементов и коллекций.
Конфигурацию можно задать для произвольного пространства имен URL-адресов, например для сайта, приложения или URL-адреса. Параметры конфигурации, заданные на более высоком уровне, наследуются всеми более низкими уровнями, если они не переопределяются на более низких уровнях.
Чтобы отобразить эффективную конфигурацию для определенного уровня URL-адресов, используйте команду LIST объекта Config следующим образом:
%systemroot%\system32\inetsrv\APPCMD list config <URL> /section:SectionName
Где <URL> находится путь конфигурации, в котором должна быть прочитана эффективная конфигурация, например "Веб-сайт по умолчанию/" или "Веб-сайт по умолчанию/app1/hello.html". Если он не указан, он по умолчанию соответствует уровню сервера.
Дополнительные сведения о иерархии конфигурации IIS и способах создания путей конфигурации IIS для использования с AppCmd и других средств см. в разделе "Анатомия пути конфигурации IIS7 и выше".
Параметр раздела указывает раздел конфигурации, который требуется прочитать. Если этот параметр не указан, будут отображаться все разделы конфигурации, действующие на уровне URL-адреса. Например, эта командная строка отображает всю эффективную конфигурацию для корневого приложения веб-сайта по умолчанию:
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/"
Чтобы получить список определенных разделов, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp
<system.webServer>
<asp>
<session />
<comPlus />
<cache />
<limits />
</asp>
</system.webServer>
По умолчанию AppCmd отображает только конфигурацию, которая явно задана. Если вы хотите отобразить эффективную конфигурацию, включая унаследованные или значения по умолчанию, укажите параметр /config:* :
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp /config:*
Чтобы отобразить список доступных разделов конфигурации, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD list config /section:?
Изменение свойств конфигурации
В AppCmd каждый раздел конфигурации предоставляется как экземпляр объекта конфигурации, предоставляющего свойства, представляющие базовый раздел конфигурации. Используйте команду SET объекта Config для изменения этих свойств. Синтаксис:
APPCMD set config <URL> /section:SectionName [ /property:value ]+
<URL> является необязательным; он указывает, к какому пути конфигурации должно быть применено изменение. Если это опущено, изменения будут применяться на уровне сервера и будут унаследованы всеми URL-адресами.
Обязательный параметр раздела ; Он указывает раздел, который редактируется.
Например, чтобы задать свойство appAllowClientDebug раздела ASP для http://localhost/app1 URL-адреса:
%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /appAllowClientDebug:false
CONFIG object "asp" changed
Чтобы задать свойства конфигурации, вложенные в элементы раздела конфигурации, используйте нотацию пути к элементу.
%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /limits.requestQueueMax:4000
CONFIG object "asp" changed
Укажите несколько свойств в одной командной строке, чтобы внести несколько изменений в одном разделе конфигурации.
Чтобы отобразить все свойства, которые можно задать в определенном разделе конфигурации, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD set config /section:asp /?
Замечание
Обратите внимание, что раздел asp заблокирован по умолчанию, поэтому выполнение этих команд вернет ошибку нарушения блокировки. Сначала можно либо разблокировать этот раздел, задать конфигурацию на уровне сервера, опустив <URL>, либо закрепить её в теге расположения уровня сервера с помощью /commit:apphost. Дополнительные сведения о управлении расположением конфигурации см. дальше в статье.
Редактирование коллекций конфигураций
AppCmd также поддерживает редактирование коллекций конфигураций. Коллекция конфигураций может содержать несколько элементов. Например, раздел конфигурации system.webServer/modules содержит список элементов конфигурации модуля, указывающих модули, выполняемые сервером.
Чтобы задать свойство в элементе коллекции, укажите определенный элемент коллекции для редактирования с помощью выражения индексатора коллекции в нотации пути элемента. Выражение индексатора коллекции использует ключевые значения для идентификации определенного элемента коллекции. Индексатор имеет следующий формат:
[key1='value1',key2='value2',...]
Количество ключей, необходимых для уникальной идентификации элемента, зависит от коллекции. Для большинства коллекций требуется только один ключ.
Например, чтобы задать свойство type в элементе коллекции со свойством имени ключа, равным "FormsAuthentication", используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /[name='FormsAuthentication'].type:System.Web.Security.FormsAuthenticationModule
Чтобы добавить новый элемент коллекции, предварите путь к элементу символом плюса, +. В выражении индексатора коллекции укажите значения для каждого свойства ключа. Дополнительные свойства, не являющиеся ключами, также могут быть включены в выражение индексатора коллекции. Например, это добавит новый элемент коллекции модулей:
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /+[name='MyModule',type='MyType']
Чтобы удалить элемент коллекции, поставьте перед обозначением пути элемента знак минус, -.
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /-[name='MyModule']
Управление расположением конфигурации
Система конфигурации является иерархической, что позволяет записывать параметры конфигурации на нескольких уровнях, начиная от файла уровня сервера ApplicationHost.config до распределенных Web.config файлов, которые могут присутствовать на уровне сайта, приложения или виртуального каталога.
Когда конфигурация записывается на определенном уровне, она наследуется всеми URL-адресами на этом уровне и ниже. Например, набор конфигурации в файле конфигурации Web.config в корне сайта наследуется всеми URL-адресами сайта.
По умолчанию AppCmd будет записывать конфигурацию на уровне, на котором она настроена. Например, если вы задаете конфигурацию для веб-сайта по умолчанию/, она будет записана в файл Web.config в корне этого сайта.
Однако можно написать конфигурацию на более высоком уровне и применить ее только к определенному подмножество URL-адресов ниже с помощью конструкции расположения . Например, приложение Web.config может содержать конфигурацию, которая применяется только к одному каталогу в этом приложении. AppCmd предоставляет эту возможность с помощью параметра коммита.
Для параметра commit можно задать одно из следующих значений:
- (опущено) — по умолчанию; запись конфигурации на уровне, где она задана
- URL — аналогично значению по умолчанию; запись конфигурации на уровне, для которого она задана
- site — запись конфигурации в файл Web.config в корневом каталоге сайта для указанного URL.
- приложение — записать конфигурацию в файл Web.config в корневом каталоге веб-адреса приложения, для которого оно установлено.
- apphost — запись конфигурации на уровне сервера в файле applicationHost.config
-
<PATH>— запись конфигурации по указанному пути конфигурации
Например, эта командная строка отключает просмотр каталога для приложения и записывает эту конфигурацию в файл Web.config корневого сайта:
%systemroot%\system32\inetsrv\APPCMD set config http://localhost/app1/ /section:directoryBrowse /enabled:false /commit:site
Дополнительные сведения о путях конфигурации IIS и управлении расположением конфигурации см. в разделе "Анатомия пути конфигурации для IIS7 и более поздних версий".
Настройка блокировки и разблокировки
Система конфигурации позволяет блокировать разделы конфигурации на определенном уровне, предотвращая переопределение их свойств на более низких уровнях. Это можно использовать для предотвращения изменения параметров приложений, которые администратор сервера хочет применить.
По умолчанию большинство разделов конфигурации IIS заблокированы на уровне сервера. Чтобы настроить эти разделы на более низких уровнях, их необходимо разблокировать. AppCmd предоставляет команду UNLOCK для этой цели:
%systemroot%\system32\inetsrv\APPCMD unlock config /section:asp
Используйте команду LOCK для блокировки раздела:
%systemroot%\system32\inetsrv\APPCMD lock config /section:asp
Обратите внимание, что при блокировке раздела конфигурации приложения, которые уже настроили этот раздел на более низком уровне конфигурации, столкнутся с ошибкой нарушения блокировки при попытке доступа к разделу конфигурации.
Конфигурация поиска
AppCmd может выполнять поиск в распределенной иерархии конфигурации для всех узлов, которые задают определенные свойства или их значения. Функцию поиска конфигурации можно использовать для определения расположений, в которых включена определенная функция, или для обеспечения соответствия требованиям конкретной конфигурации.
Чтобы найти сервер для всех расположений, определяющих конфигурацию, можно использовать команду SEARCH без аргументов:
%systemroot%\system32\inetsrv\APPCMD search config
Чтобы найти все расположения в определенном пути конфигурации, например все расположения конфигурации для определенного сайта, укажите путь в командной строке.
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/"
Чтобы найти местоположения, настраивающие определённый раздел конфигурации, следуйте приведённым ниже инструкциям.
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse
Чтобы найти расположения, которые задают определенное свойство, укажите имя свойства:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled
Наконец, для поиска расположений, которые задают свойство определенным значением:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled:true
Работа с результатами инструмента
Ранее мы упомянули, что выходные данные команды LIST — это список экземпляров объектов. AppCmd предлагает различные режимы вывода, которые позволяют контролировать уровень детализации, отображаемый о каждом объекте.
Выходные данные по умолчанию
Давайте рассмотрим сайты LIST в качестве примера. По умолчанию AppCmd использует компактный выходной формат:
%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)
В этом формате выходных данных каждый экземпляр объекта находится в одной строке, указывая тип объекта (SITE) и идентификатор объекта ("Веб-сайт по умолчанию"). Некоторые распространенные или важные свойства, такие как идентификатор, привязки и состояние, обычно выводятся для объекта Site.
Подробные выходные данные
Большинство объектов поддерживают значительно больше свойств, чем представлены в выходных данных по умолчанию. Чтобы отобразить все свойства объекта, укажите параметр text:* . Свойства каждого экземпляра будут отображаться в иерархическом формате дерева:
APPCMD list site "Default Web Site" /text:*
SITE
SITE.NAME: Default Web Site
SITE.ID: 2
bindings: http/*:80:
state: Started
...
В приведенном выше примере выходные данные сокращены— фактические выходные данные включают в себя множество дополнительных свойств.
Выходные данные для работы с другими инструментами командной строки
AppCmd предоставляет выходной режим, который отображает только определенное свойство каждого экземпляра объекта. Укажите имя свойства, отображаемого с параметром text:<PROPERTY> . Например, эта команда вернет все доступные экземпляры виртуального каталога, отображая только свойство physicalPath каждого:
%systemroot%\system32\inetsrv\APPCMD list vdirs /text:physicalPath
C:\inetpub\wwwroot
C:\inetpub\vdir1
D:\vdir2
Конечно, можно отобразить любое из допустимых свойств указанного типа объекта.
Иногда желательно использовать выходные данные AppCmd с существующими инструментами командной строки и командами оболочки, такими как команда FOR и FINDSTR.EXE. Эти средства часто работают лучше, если каждый интересующий элемент данных находится в отдельной строке.
Например, представьте командную строку, которая создает список каталогов каждого виртуального каталога IIS. Командная строка должна получить список физических путей из каждого из интересующих виртуальных каталогов, а затем выполнить команду DIR на каждом из этих путей, используя команду FOR для перебора этих путей.
FOR /F %f IN ('%systemroot%\system32\inetsrv\APPCMD list vdir /text:physicalPath') DO CALL DIR %f
Выходные данные конфигурации
Многие объекты содержат данные конфигурации, поступающие непосредственно из связанных разделов конфигурации. Объект Config является основным примером этого и служит прямой оболочкой в системе конфигурации IIS— каждый экземпляр объекта, возвращаемый объектом Config, является разделом конфигурации. Другие объекты, такие как Site, также содержат сведения о конфигурации в составе свойств объекта.
Если вы хотите отобразить сведения о конфигурации возвращаемых объектов в необработанном формате XML системы конфигурации, можно использовать параметр конфигурации . Например, чтобы отобразить сведения о конфигурации XML для объекта сайта, используйте следующую командную строку:
%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site" /config
<site name="Default Web Site" id="1">
<bindings>
<binding protocol="HTTP" bindingInformation="*:80:" />
...
Выходные данные XML
Средство также поддерживает собственный формат выходных данных XML, который создает хорошо сформированные xml-результирующие наборы для объектов, возвращаемых из выполнения команды. Это позволяет использовать некоторые интересные возможности, которые отличают AppCmd от любых предыдущих средств командной строки, предоставляемых командой IIS.
- Создание сложных задач управления. Основной целью этой возможности является позволить использовать результирующие наборы, созданные AppCmd, в другой команде AppCmd. Это позволяет быстро выполнять сложные задачи управления без написания кода приложения.
- Эффективное выполнение пакетных операций. Выполнение инструмента многократно при проведении большого количества операций (например, создание 10 000 сайтов) может занимать много времени из-за накладных расходов на создание и инициализацию процесса для каждой операции. Вместо этого одна команда средства может выполняться над входными данными, содержащимися в наборе данных XML, значительно сокращая время выполнения обработки входных данных.
- Экспорт данных в другие средства. Формат XML позволяет использовать наборы данных, созданные AppCmd, с другими средствами для обработки, хранения или предоставления отчетов. Например, данные AppCmd можно использовать с преобразованиями XSLT для создания общих HTML-отчетов об управлении, импортировать в SQL Server 2005 для дальнейшего анализа или загружать с помощью ADO.NET для программной обработки.
Например, чтобы вывести список сайтов в режиме XML:
%systemroot%\system32\inetsrv\APPCMD list sites /xml
Дополнительные сведения о функции трубопровода и ее использовании для эффективного управления командной строкой см. в статье http://mvolo.com/do-complex-iis-management-tasks-easily-with-appcmd-command-piping/.
Сводка
В этом обзоре мы ознакомились со всеми разными мощными командами, доступными с помощью служебной программы IIS 7 и выше Command-Line, AppCmd.exe.
Вы также можете найти дополнительные разделы AppCmd и узнать эффективные способы управления сервером из командной строки в моем блоге.http://mvolo.com/category/appcmd/