Поработав с Windows Server 2008 R2, можно заметить, что многие изменения никак нельзя классифицировать как небольшие или нарастающие. Так, после установки первой системы Server 2008 R2 я хотел автоматизировать добавление нескольких ролей и функций. Я обратился к Servermanagercmd и обновленной OCSetup, чтобы посмотреть, как они работают под R2, и получил сообщение: Servermanagercmd is deprecated, and is not guaranteed to be supported in future releases of. Версия Server 2008 R2 предлагает не один, а два новых инструмента командной строки для добавления, удаления и изменения ролей и функций: несколько команд PowerShell, для запуска которых необходим Microsoft.NET 3.5, и автономную команду DISM (Deployment Image Servicing and Management), для которой совсем не нужен .NET.

Роли и функции

Прежде всего, DISM показывает все возможные роли и функции, а также состояние, установлены они или нет, — почти так же, как это делала команда Servermanagercmd -Query. Для получения этого списка введите:

dism/online/get-features

DISM выдаст несколько экранов вывода, например:

Name: FaxServiceRole

State: Disabled

Feature Name: Printing-Server-Role

State: Enabled

Видно, что включена роль, которую DISM называет Printing-Server-Role; роль, которую Server 2008 R2 называет Print and Document Services в Server Manager; роль Fax Server выключена. Иногда трудно догадаться, какие имена в DISM соответствуют тем или иным функциям; до сих пор я не знаю, как преобразовывать имена Server-Manager в имена DISM. Чтобы установить роль Fax Server, вводим:

dism/online/enable-feature: FaxServiceRole

В отличие от команды Servermanagercmd, которая могла бы установить только одну роль или функцию на команду (пока вы не осилили довольно сложный язык XML, чтобы устанавливать несколько функций сразу), команда DISM позволяет устанавливать несколько ролей и функций с немного различающимся синтаксисом:

dism/online/enable-feature

/featurename: [featurename]/featurename: [featurename]

Например, чтобы установить службу факса и роль сервера DNS в одной команде, можно ввести

dism/online/enable-feature

/featurename: DNS-Server-Full-Role

/featurename: FaxServiceRole

Для того чтобы удалить одну или несколько функций с помощью DISM, надо просто заменить /enable-feature на /disable-feature.

Команда DISM контролирует функции в Windows 7. Например, если необходимо установить Windows без игр, можно просто ввести команду:

dism/online/disable-feature: InboxGames

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

Погрешности

Команда Servermanagercmd была неплохим инструментом, только непонятно, почему разработчики Microsoft встроили ее поверх .NET. Это не позволяло команде работать на Server Core и требовало наличия OCSetup, другого инструмента для настройки ролей и функций с помощью командной строки. Создатели DISM освободили ее от такой зависимости, поэтому DISM работает не только на Server 2008 R2 с графическим интерфейсом, но и на Server Core R2 и даже в среде Windows Preinstallation Environment (PE) 3.0.

Как видно, DISM предлагает много ценных возможностей, однако есть у нее и недостатки. Больше всего досаждает упорство в определенных случаях по поводу имен функций. Например, я ввел:

dism/online/disable-feature: inboxgames

DISM мне сообщает: Feature name inboxgames is unknown. Далее обработка данных по ситуации восходит к администрации Эйзенхауэра. Я не знаю C++, но все же знаю, что для строки с именем mystring я могу преобразовать строку к нижнему регистру следующим образом:

for (j=1; j =tolower (mystring [j]);

Я уже упомянул о недостаточной ясности наименований функций и соответствии их функциональности. Что такое BusScan-ScanServer? Ни Google, ни Bing не предлагает помощи, можно только догадываться, что речь идет о новой функции сервера, которая поддерживает централизованное сканирование. Даже в случае известных ролей, например DNS или DHCP, имена остаются загадкой: почему DNS имеет имя DNS-Server-Full-Role, а DHCP — это DHCPServer?

Как есть, без прикрас…

Несмотря на некоторые недостатки, возможность команды DISM добавлять и удалять функции Windows очень полезна для автоматизации развертывания сервера или настольного компьютера. Стоит потратить немного времени, чтобы побольше узнать об этом.

Марк Минаси (mark@minasi.com) — редактор Windows IT Pro, MCSE и автор книги Mastering Windows Server 2003 (издательство Sybex)