Ftp Site-level Settings <ftpServer>

Общие сведения

Элемент <ftpServer><site> элемента задает параметры уровня сайта для функций FTP для сайтов FTP.

В IIS 6.0 параметры для службы FTP хранились в отдельном разделе метабазы, чем веб-сайты. В IIS 7 и более поздних версиях параметры FTP хранятся в файле ApplicationHost.config в том же <site> элементе и <siteDefaults> , в которых хранятся параметры для веб-сайтов. По этой причине параметры, указанные в элементе <ftpServer> , не могут быть делегированы, а также не могут быть заданы в элементах <location> .

Примечание

Дополнительные параметры FTP хранятся в <system.ftpServer> разделе файла ApplicationHost.config, и эти параметры указываются в <location> элементах .

Совместимость

Версия Примечания
IIS 10.0 Элемент <ftpServer> не был изменен в IIS 10.0.
IIS 8,5 Элемент <ftpServer> не был изменен в IIS 8.5.
IIS 8,0 Элемент <ftpServer> не был изменен в IIS 8.0.
IIS 7,5 Элемент <ftpServer> поставляется как компонент IIS 7.5.
IIS 7.0 Элемент <ftpServer> был представлен в FTP 7.0, который был отдельной загрузкой для IIS 7.0.
IIS 6,0 Элемент <ftpServer> и его дочерние элементы заменяют параметры FTP IIS 6.0, расположенные в пути метабазы LM/MSFTPSVC .

Примечание

Службы FTP 7.0 и FTP 7.5 поставляются внеполосно для IIS 7.0, что требует скачивания и установки модулей по следующему URL-адресу:

https://www.iis.net/expand/FTP

В Windows 7 и Windows Server 2008 R2 служба FTP 7.5 поставляется в качестве функции для IIS 7.5, поэтому скачивание службы FTP больше не требуется.

Настройка

Чтобы обеспечить поддержку публикации FTP для веб-сервера, необходимо установить службу FTP. Для этого выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.

  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.

  3. В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.

  4. На странице Роли сервера разверните узел Веб-сервер (IIS) и выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Помимо службы FTP необходимо выбрать расширяемость FTP.
    Снимок экрана: страница .

  5. Нажмите кнопку Далее, а затем на странице Выбор компонентов нажмите кнопку Далее еще раз.

  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.

  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем выберите FTP-сервер.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: диалоговое окно

  4. Нажмите кнопку ОК.

  5. Щелкните Закрыть.

Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.

  2. В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).

  3. На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.

  4. На странице Выбор служб ролеймастера добавления служб ролей разверните узел FTP-сервер.

  5. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: мастер добавления служб ролей. Отобразится страница Службы ролей и выделена служба F T P.

  6. Щелкните Далее.

  7. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.

  8. На странице Результаты нажмите кнопку Закрыть.

Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем панель управления.

  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.

  3. Разверните узел Службы IIS, а затем FTP-сервер.

  4. Выберите Служба FTP.

    Примечание

    Для поддержки ASP. Проверка подлинности членства или проверка подлинности диспетчера IIS для службы FTP. Также необходимо выбрать расширяемость FTP.
    Снимок экрана: мастер компонентов Windows. Отобразится страница включения и выключения компонентов Windows.

  5. Нажмите кнопку ОК.

Windows Server 2008 или Windows Vista

  1. Скачайте пакет установки по следующему URL-адресу:

  2. Следуйте инструкциям в следующем пошаговом руководстве, чтобы установить службу FTP:

Инструкции

Включение или отключение анонимной проверки подлинности для FTP-сайта

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения разверните имя сервера, узел Сайты и щелкните имя сайта.

  3. На домашней панели сайта дважды щелкните функцию проверки подлинности FTP .

  4. На странице Проверка подлинности FTP выберите Анонимная проверка подлинности.

  5. В области Действия щелкните Включить , чтобы включить анонимную проверку подлинности, или Отключить , чтобы отключить анонимную проверку подлинности.
    Снимок экрана: окно диспетчера I IS со страницей проверки подлинности F T P.


Использование мастера ftp-сайтов для создания сайта FTP с анонимным доступом на чтение

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения щелкните узел Сайты в дереве.

  3. Щелкните правой кнопкой мыши узел Сайты в дереве и выберите Добавить FTP-сайт или добавить FTP-сайт в области Действия .

  4. При появлении мастера добавления FTP-сайта :

    • Введите "My New FTP Site" (Мой новый FTP-сайт) в поле Имя ftp-сайта .

    • В поле Физический путь можно указать каталог содержимого одним из следующих вариантов:

      • Нажмите кнопку с многоточием (...) и перейдите к папке, содержащей содержимое ftp-сайта.
      • Введите путь к папке содержимого в поле . Обратите внимание, что если вы решили ввести путь, можно использовать переменные среды в путях. Например, для каталога содержимого можно использовать "%SystemDrive%\inetpub\ftproot".
    • Завершив эти действия, нажмите кнопку Далее.
      Снимок экрана: мастер добавления сайта F T P. Отобразится страница Сведения о сайте.

  5. На второй странице мастера добавления FTP-сайта :

    • Выберите IP-адрес ftp-сайта в раскрывающемся списке IP-адрес или примите значение по умолчанию "Все неназначенные".

    • В поле Порт введите порт TCP/IP для ftp-сайта. По умолчанию ftp-сайты и клиенты используют порт 21. (Примечание. Чтобы указать неявный FTPS, необходимо использовать порт 990.)

    • Чтобы использовать имя виртуального узла FTP, установите флажок Включить имена виртуальных узлов, а затем введите имя виртуального узла в поле Виртуальный узел .

    • Для параметра SSL выберите один из следующих вариантов:

      • Выберите Нет SSL , чтобы отключить параметры SSL.
      • Выберите Разрешить SSL , чтобы разрешить FTP-клиентам при необходимости использовать FTP через SSL при подключении к FTP-серверу.
      • Выберите Требовать SSL , чтобы разрешить FTP-клиентам всегда использовать FTP через SSL при подключении к FTP-серверу.
      • Если выбран параметр Разрешить SSL или Требовать SSL, выберите сертификат в раскрывающемся меню SSL-сертификат .
    • Завершив эти действия, нажмите кнопку Далее.
      Снимок экрана: мастер добавления сайта F T P. Отобразится страница Параметры привязки и SS L.

  6. На следующей странице мастера:

    • Выберите Анонимный для параметров проверки подлинности .
    • В разделе Параметры авторизации выберите "Анонимные пользователи" в раскрывающемся списке Разрешить доступ к .
    • Выберите Чтение для параметра Разрешения .
    • Завершив выполнение этих задач, нажмите кнопку Готово.
      Снимок экрана: мастер добавления сайта F T P. Отобразится страница Сведения о проверке подлинности и авторизации.

Включение или отключение обычной проверки подлинности для FTP-сайта

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения разверните имя сервера, узел Сайты , а затем щелкните имя сайта.

  3. На домашней панели сайта дважды щелкните функцию проверки подлинности FTP .

  4. На странице Проверка подлинности FTP выберите Обычная проверка подлинности.
    Снимок экрана: окно диспетчера I IS. Отобразится страница Проверка подлинности F T P.

  5. На панели Действия щелкните Включить , чтобы включить обычную проверку подлинности, или отключить обычную проверку подлинности.


Использование мастера ftp-сайтов для создания FTP-сайта с обычной проверкой подлинности и доступом на чтение и запись

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения щелкните узел Сайты в дереве.

  3. Щелкните правой кнопкой мыши узел Сайты в дереве и выберите Добавить FTP-сайт или добавить FTP-сайт в области Действия .

  4. При появлении мастера добавления FTP-сайта :

    • Введите "My New FTP Site" (Мой новый FTP-сайт) в поле Имя ftp-сайта .

    • В поле Физический путь можно указать каталог содержимого одним из следующих вариантов:

      • Нажмите кнопку с многоточием (...) и перейдите к папке, содержащей содержимое ftp-сайта.
      • Введите путь к папке содержимого в поле . Обратите внимание, что если вы решили ввести путь, можно использовать переменные среды в путях. Например, для каталога содержимого можно использовать "%SystemDrive%\inetpub\ftproot".
    • Завершив эти действия, нажмите кнопку Далее.
      Снимок экрана: мастер добавления сайта F T P, отображающий страницу

  5. На второй странице мастера добавления FTP-сайта :

    • Выберите IP-адрес ftp-сайта в раскрывающемся списке IP-адрес или примите значение по умолчанию "Все неназначенные".

    • В поле Порт введите порт TCP/IP для ftp-сайта. По умолчанию ftp-сайты и клиенты используют порт 21. (Примечание. Чтобы указать неявный FTPS, необходимо использовать порт 990.)

    • Чтобы использовать имя виртуального узла FTP, установите флажок Включить имена виртуальных узлов, а затем введите имя виртуального узла в поле Виртуальный узел .

    • Для параметра SSL выберите один из следующих вариантов:

      • Выберите Нет SSL , чтобы отключить параметры SSL.
      • Выберите Разрешить SSL , чтобы разрешить FTP-клиентам при необходимости использовать FTP через SSL при подключении к FTP-серверу.
      • Выберите Требовать SSL , чтобы разрешить FTP-клиентам всегда использовать FTP через SSL при подключении к FTP-серверу.
      • Если выбран параметр Разрешить SSL или Требовать SSL, выберите сертификат в раскрывающемся меню SSL-сертификат .
    • Завершив эти действия, нажмите кнопку Далее.
      Снимок экрана: окно

  6. На следующей странице мастера:

    • Выберите Базовый для параметров проверки подлинности .
    • Для параметров авторизации выберите "Указанные пользователи" в раскрывающемся списке Разрешить доступ к и введите имя учетной записи в поле под раскрывающимся меню.
    • Выберите Чтение и запись для параметра Разрешения .
    • Завершив выполнение этих задач, нажмите кнопку Готово.
      Снимок экрана: окно добавления сайта F T P со страницей сведений о проверке подлинности и авторизации.

Конфигурация

Элемент конкретного <ftpServer> сайта настраивается на <site> уровне .

Атрибуты

Атрибут Описание
allowUTF8 Необязательный атрибут boolean .

значение true , если включен UTF8; в противном случае — false.

Значение по умолчанию — true.
serverAutoStart Необязательный атрибут boolean .

Значение true , если службы IIS должны автоматически запускать FTP-сайт при запуске службы FTP; в противном случае — false.

Значение по умолчанию — true.
state Динамически создаваемый атрибут перечисления только для чтения.

Указывает текущее состояние времени выполнения для FTP-сайта. Возможны следующие значения:
Имя Описание
Starting Указывает, что ftp-сайт запускается.

Числовое значение равно 0.
Started

Указывает, что ftp-сайт запущен в данный момент.

Числовое значение равно 1.

Stopping Указывает, что ftp-сайт останавливается.

Числовое значение равно 2.
Stopped

Указывает, что ftp-сайт остановлен.

Числовое значение равно 3.

Unknown Указывает, что FTP-сайт находится в неизвестном состоянии.

Числовое значение равно 4.
Значение по умолчанию отсутствует, и атрибут не настраивается. None.
lastStartupStatus Динамически создаваемый атрибут uint только для чтения.

Указывает состояние с момента последнего запуска FTP-сайта.

Значение по умолчанию отсутствует, и атрибут не настраивается.

Дочерние элементы

Элемент Описание
connections Необязательный элемент.

Задает параметры подключения для ftp-сайта.
security Необязательный элемент.

Задает параметры, связанные с безопасностью для ftp-сайта.
customFeatures Необязательный элемент.

Указывает коллекцию настраиваемых поставщиков FTP, разработанных с использованием расширяемости FTP.
messages Необязательный элемент.

Указывает сообщения, связанные с подключением, которые ftp-сайт будет отображать для FTP-клиентов.
fileHandling Необязательный элемент.

Задает параметры обработки файлов для ftp-сайта.
firewallSupport Необязательный элемент.

Указывает параметры ftp-сайта, необходимые для FTP-подключений, которые выполняются через брандмауэр.
userIsolation Необязательный элемент.

Указывает поведение поиска в домашнем каталоге для FTP-подключений. Например, пользователи могут быть ограничены домашним каталогом, основанным на имени входа.
directoryBrowse Необязательный элемент.

Указывает параметры списка каталогов для FTP-сайта. Эти параметры влияют на то, как служба FTP будет отображать списки каталогов для FTP-клиентов.
logfile Необязательный элемент.

Задает параметры ведения журнала для FTP-сайта.
sessions Динамически создаваемый элемент только для чтения.

Содержит коллекцию сеансов FTP, подключенных в данный момент. Каждый сеанс содержит различные метаданные, такие как IP-адрес клиента, выполняемая в данный момент команда и т. д.

Методы

Метод Описание
Start Запускает ftp-сайт.
Stop Останавливает FTP-сайт.
FlushLog Очищает файл журнала для FTP-сайта.

Образец конфигурации

В следующем примере показаны несколько параметров конфигурации в элементе <ftpServer> для FTP-сайта. В частности, <site> параметры в этом примере демонстрируют следующее:

  • Создайте FTP-сайт и добавьте привязку для протокола FTP через порт 21.
  • Настройте параметры SSL FTP, чтобы разрешить безопасный доступ как к элементу управления, так и к каналу данных с помощью сертификата.
  • Отключите анонимную проверку подлинности и включите обычную проверку подлинности для FTP.
  • Запретить доступ для команды FTP SYST .
  • Укажите формат списка каталогов UNIX.
  • Настройте параметры ведения журнала.
  • Укажите настраиваемое приветственное сообщение и включите локальные подробные сообщения об ошибках.
  • Укажите, что пользователи будут запускаться в домашнем каталоге, основанном на имени входа, но только в том случае, если этот каталог существует.
<site name="ftp.example.com" id="5">
  <application path="/">
    <virtualDirectory path="/" physicalPath="c:\inetpub\www.example.com" />
  </application>
  <bindings>
    <binding protocol="ftp" bindingInformation="*:21:" />
  </bindings>
  <ftpServer>
    <security>
      <ssl controlChannelPolicy="SslAllow"
         dataChannelPolicy="SslAllow"
         serverCertHash="57686f6120447564652c2049495320526f636b73" />
      <authentication>
        <basicAuthentication enabled="true" />
        <anonymousAuthentication enabled="false" />
      </authentication>
      <commandFiltering maxCommandLine="4096" allowUnlisted="true">
        <add command="SYST" allowed="false" />
      </commandFiltering>
    </security>
    <directoryBrowse showFlags="StyleUnix" />
    <logFile logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, FtpStatus, Win32Status, ServerPort, FtpSubStatus, Session, FullPath, Info" />
    <messages expandVariables="true"
       greetingMessage="Welcome %UserName%!"
       allowLocalDetailedErrors="true" />
    <userIsolation mode="StartInUsersDirectory" />
  </ftpServer>
</site>

В следующем примере показаны несколько параметров конфигурации, связанных с безопасностью, в элементе <system.ftpServer> для ftp-сайта. В частности, <location> параметры в этом примере демонстрируют следующее:

  • Укажите правило авторизации FTP для доступа на чтение и запись для группы администраторов.
  • Укажите параметры фильтрации запросов FTP, которые запрещают файлы *.exe, *.bat и *.cmd.
  • Укажите ограничения ftp-запросов для максимальной длины содержимого в 1000000 байт и максимальной длины URL-адреса 1024 байта.
  • Блокировка доступа по протоколу FTP к виртуальному каталогу _vti_bin, который используется с серверными расширениями FrontPage.
  • Укажите параметры фильтрации IP-адресов FTP, которые разрешают доступ с 127.0.0.1 и запрещают доступ из диапазона IP-адресов 169.254.0.0/255.255.0.0.
<location path="ftp.example.com">
  <system.ftpServer>
    <security>
      <authorization>
        <add accessType="Allow" roles="administrators" permissions="Read, Write" />
      </authorization>
      <requestFiltering>
        <fileExtensions allowUnlisted="true">
          <add fileExtension=".exe" allowed="false" />
          <add fileExtension=".bat" allowed="false" />
          <add fileExtension=".cmd" allowed="false" />
        </fileExtensions>
        <requestLimits maxAllowedContentLength="1000000" maxUrl="1024" />
        <hiddenSegments>
          <add segment="_vti_bin" />
        </hiddenSegments>
      </requestFiltering>
      <ipSecurity enableReverseDns="false" allowUnlisted="true">
        <add ipAddress="127.0.0.1" allowed="true" />
        <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
      </ipSecurity>
    </security>
  </system.ftpServer>
</location>

Пример кода

В следующих примерах ftp-сайт настраивается для использования стиля UNIX для списков каталогов и отображения доступного хранилища каталогов в байтах.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /[name='ftp.example.com'].ftpServer.directoryBrowse.showFlags:"StyleUnix, DisplayAvailableBytes" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();

         ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"ftp.example.com");
         if (siteElement == null) throw new InvalidOperationException("Element not found!");

         ConfigurationElement ftpServerElement = siteElement.GetChildElement("ftpServer");
         ConfigurationElement directoryBrowseElement = ftpServerElement.GetChildElement("directoryBrowse");
         directoryBrowseElement["showFlags"] = @"StyleUnix, DisplayAvailableBytes";

         serverManager.CommitChanges();
      }
   }

   private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
   {
      foreach (ConfigurationElement element in collection)
      {
         if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
         {
            bool matches = true;
            for (int i = 0; i < keyValues.Length; i += 2)
            {
               object o = element.GetAttributeValue(keyValues[i]);
               string value = null;
               if (o != null)
               {
                  value = o.ToString();
               }
               if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
               {
                  matches = false;
                  break;
               }
            }
            if (matches)
            {
               return element;
            }
         }
      }
      return null;
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection

      Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "ftp.example.com")
      If (siteElement Is Nothing) Then
         Throw New InvalidOperationException("Element not found!")
      End If

      Dim ftpServerElement As ConfigurationElement = siteElement.GetChildElement("ftpServer")
      Dim directoryBrowseElement As ConfigurationElement = ftpServerElement.GetChildElement("directoryBrowse")
      directoryBrowseElement("showFlags") = "StyleUnix, DisplayAvailableBytes"

      serverManager.CommitChanges()
   End Sub

   Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
      For Each element As ConfigurationElement In collection
         If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
            Dim matches As Boolean = True
            Dim i As Integer
            For i = 0 To keyValues.Length - 1 Step 2
               Dim o As Object = element.GetAttributeValue(keyValues(i))
               Dim value As String = Nothing
               If (Not (o) Is Nothing) Then
                  value = o.ToString
               End If
               If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
                  matches = False
                  Exit For
               End If
            Next
            If matches Then
               Return element
            End If
         End If
      Next
      Return Nothing
   End Function


End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;

var siteElementPos = FindElement(sitesCollection, "site", ["name", "ftp.example.com"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);

var ftpServerElement = siteElement.ChildElements.Item("ftpServer");
var directoryBrowseElement = ftpServerElement.ChildElements.Item("directoryBrowse");
directoryBrowseElement.Properties.Item("showFlags").Value = "StyleUnix, DisplayAvailableBytes";

adminManager.CommitChanges();

function FindElement(collection, elementTagName, valuesToMatch) {
   for (var i = 0; i < collection.Count; i++) {
      var element = collection.Item(i);
      if (element.Name == elementTagName) {
         var matches = true;
         for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
            var property = element.GetPropertyByName(valuesToMatch[iVal]);
            var value = property.Value;
            if (value != null) {
               value = value.toString();
            }
            if (value != valuesToMatch[iVal + 1]) {
               matches = false;
               break;
            }
         }
         if (matches) {
            return i;
         }
      }
   }
   return -1;
}

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection

siteElementPos = FindElement(sitesCollection, "site", Array("name", "ftp.example.com"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If

Set siteElement = sitesCollection.Item(siteElementPos)
Set ftpServerElement = siteElement.ChildElements.Item("ftpServer")
Set directoryBrowseElement = ftpServerElement.ChildElements.Item("directoryBrowse")
directoryBrowseElement.Properties.Item("showFlags").Value = "StyleUnix, DisplayAvailableBytes"

adminManager.CommitChanges()

Function FindElement(collection, elementTagName, valuesToMatch)
   For i = 0 To CInt(collection.Count) - 1
      Set element = collection.Item(i)
      If element.Name = elementTagName Then
         matches = True
         For iVal = 0 To UBound(valuesToMatch) Step 2
            Set property = element.GetPropertyByName(valuesToMatch(iVal))
            value = property.Value
            If Not IsNull(value) Then
               value = CStr(value)
            End If
            If Not value = CStr(valuesToMatch(iVal + 1)) Then
               matches = False
               Exit For
            End If
         Next
         If matches Then
            Exit For
         End If
      End If
   Next
   If matches Then
      FindElement = i
   Else
      FindElement = -1
   End If
End Function