Автоматизация развертывания Office 2007

Источник: osp
Дэн Холм

Ранее в статье "Настройка и развертывание Office 2007" (опубликованной в Windows IT Pro/RE № 5 за 2007 г.) был описан способ развертывания Microsoft Office 2007 с сетевого пункта установки, причем для управления работой программы Office Setup использовались файлы настройки установки (.msp) и файлы настройки конфигурации (config.xml). Теперь, когда подготовка установки пакета завершена, самое время перейти к развертыванию Office 2007 на персональных компьютерах. Кратко перечислим некоторые привычные методы развертывания, которые, к сожалению, мало подходят для установки Office 2007, а затем рассмотрим обходные пути, которые все же позволят развернуть Office 2007 без особых затрат. Эти приемы можно использовать и для развертывания других программ и конфигураций - у нас получится что-то вроде самодельного Systems Center Configuration Manager.

Предпочтительные методы развертывания

Первое, что приходит на ум, когда речь заходит о способах развертывания программного обеспечения в домене Windows, это применение групповой политики установки программного обеспечения Group Policy Software Installation (GPSI) для развертывания файлов .msi. И хотя три прежние версии Office можно было развернуть с помощью GPSI, выполнить нормальное развертывание Office 2007 этим способом не удастся. Впрочем, Microsoft предлагает документацию, описывающую развертывание Office 2007 с помощью GPSI (см. статью "Use Group Policy Software Installation to deploy the 2007 Office system" на technet2.microsoft.com/Office/enus/library/efd0ee45-9605-42d3-9798-3b698fff3e081033.mspx).

Несмотря на это, опираясь на собственный опыт многократного тестирования развертывания Office 2007 с использованием GPSI, я могу утверждать, что это просто нерационально, хотя и выполнимо технически. GPSI использует файлы трансформации .mst для установщика .msi, в то время как Microsoft для установки Office использует программу установки Setup (setup.exe) с файлами .msp для настройки установки. Таким образом, получается, что GPSI не поддерживает напрямую необходимую функциональность для настройки установки пакета Office 2007 на клиентские компьютеры. При использовании GPSI требуется описать все настройки в файле config.xml, но даже в этом случае можно указать лишь часть настроек, таких как ключ программного продукта (product key), язык и устанавливаемые приложения. Причем попытка настройки набора устанавливаемых приложений с помощью элемента OptionState файла config.xml file будет процедурой по меньшей мере малоприятной. В упомянутой выше статье Microsoft рассказано, как использовать OptionState, но, на мой взгляд, это занятие для любителей трудностей. Конечно, можно попробовать развернуть Office 2007 с помощью GPSI, но для большинства компаний оказывается, что этот способ предлагает лишь урезанную функциональность, а потому бесполезен.

Второй метод развертывания - использовать GPSI для развертывания Office 2007 с помощью файла .zap. Файл .zap представляет собой простой сценарий, позволяющий вызвать любую команду - в данном случае команду setup.exe для Office со всеми необходимыми параметрами. С помощью GPSI можно развернуть программный пакет, используя файл .zap; для этого надо просто выбрать файл .zap вместо файла .msi, когда создается пакет. Однако файлы .zap можно только публиковать для пользователей, а не устанавливать, поэтому Office может появиться в списке Add/Remove Programs в разделе Programs and Features в Windows Vista и даже может ассоциироваться с расширениями документов для установки по запросу. Однако публикация Office 2007 означает, что пакет не будет развернут до тех пор, пока пользователь не потребует или не запросит его, причем пользователь должен обладать административными правами для запуска Office Setup, так что для большинства организаций использование файлов .zap для развертывания также неприемлемо.

Третий метод - самый предпочтительный с точки зрения Microsoft - с помощью Microsoft Systems Management Server (SMS) или Microsoft System Center Configuration Manager 2007, следующего поколения SMS. Хотя SMS и System Center Configuration Manager 2007 обеспечивают полную функциональность для развертывания Office 2007 и последующего управления жизненным циклом пакета, а также других приложений и настроек, развертывание этих систем управления - мероприятие весьма дорогостоящее.

Требования Office

Как известно, Office 2007 - это довольно объемный пакет, после установки в стандартной конфигурации он занимает более 1 Гбайт дискового пространства. Примерно столько места потребуют установленные приложения и точка локальной установки (MSOCache). При этом установка Office 2007 занимает довольно длительное время, поэтому при выборе метода развертывания важно учитывать интересы пользователей. Вы же не хотите, чтобы топ-менеджер компании, включив свой компьютер перед важной презентацией, был вынужден ждать, пока установка Office 2007 завершится.

Есть и еще одно ограничение: установка Office требует наличия административных полномочий, так что необходимо выбрать методы развертывания, позволяющие запустить setup.exe с достаточными правами. К сожалению, Microsoft не предлагает удобный и полноценный способ развертывания Office 2007 с помощью GPSI или сценариев регистрации для пользователей, обладающих минимальными правами в системе. Отправьте по электронной почте свое мнение по этому вопросу представителю Microsoft - компания уже сейчас разрабатывает следующую версию Office 14.

В большинстве организаций Office устанавливается на компьютер, а не закрепляется за отдельным пользователем. Никому не нужно, чтобы приложение Microsoft Visio "следовало" за пользователем от компьютера к компьютеру. Гораздо удобнее устанавливать приложения Office на выбранные компьютеры, тогда они будут доступны любому пользователю, который регистрируется в сети на данном компьютере. Этот подход также упрощает проверку лицензирования, поскольку Office лицензируется на каждый компьютер.

С учетом описанных требований рассмотрим имеющиеся возможности развертывания Office 2007. Предлагаемые ниже решения предназначены для использования с клиентскими компьютерами на базе Vista и Windows XP в домене Windows Server 2003.

Сценарий

Можно установить Office 2007, запустив setup.exe с дополнительными параметрами, как описано в уже упоминавшейся статье "Настройка и развертывание Office 2007". При запуске setup.exe для развертывания Office 2007 на удаленных компьютерах необходимо дополнительно проверять, что установка закончилась успешно. Поэтому разработаем сценарий, который не только запустит setup.exe для установки Office 2007, но и зарегистрирует факт успешного завершения установки или вернет код ошибки. Этот сценарий также гарантирует, что на целевой системе setup.exe действительно выполняется только один раз. В листинге показана часть этого сценария, Office2007_Deploy.vbs.

Вот основные элементы данного сценария.

  • Блок настройки сценария. Сценарий Office2007_ Deploy.vbs написан на VBScript, поэтому его удобно настраивать, даже если вы не очень разбираетесь в программировании. Все нужные параметры находятся в блоке настроек, который содержит подробные комментарии о назначении каждого элемента настройки среды. Я расскажу о назначении каждого набора параметров чуть позже.
  • Блок A. Этот сценарий вызывает подпрограмму ExecuteCommand, запускающую команду Office Setup, которая определена переменной sCommand в блоке настройки (например, "\\windomain.com\software\office\sdp\setup.exe"). Программа ExecuteCommand дожидается окончания выполнения команды, а затем присваивает возвращаемое значение (exit code) и содержимое потоков StdOut и StdErr переменным для регистрации информации в журнале. Далее возвращенное значение интерпретируется для определения успешности выполнения команды, после чего вызывается процедура Log_WriteCommandResults, чтобы сделать новую запись в регистрационный журнал.
  • Блок B. В данном блоке сценарий переносит компьютер в одну из двух групп, APP_Office 2007 Deploy или ALERT_Office 2007 Deploy, в зависимости от того, успешно или нет завершился вызов setup.exe, и удаляет компьютер из группы установки (т. е. CMM_Office 2007 Deploy). Назначение этих групп я объясню ниже.

Для применения этого сценария нужно сохранить его в папку сетевой установки Office 2007. Я советую создать папку на том же уровне, что и файл setup.exe и папка Updates, под именем CompanyName_Setup. Скопируйте сценарий в эту папку. Для обеспечения безопасности папка должна иметь доступ только на чтение (Read) для всех зарегистрированных пользователей, а правами на изменение (Modify) должны обладать только администраторы. Поскольку этот сценарий будет выполняться на компьютерах пользователей с административными полномочиями, имеет смысл позаботиться о том, чтобы изменения в сценарий не мог вносить кто попало.

Не забудьте поместить файл настройки Office Setup в папку Updates и используйте при запуске setup.exe параметр /adminfile, чтобы указать файл настройки Setup. Данный файл настройки должен обеспечить пакетную установку Office 2007 без взаимодействия с пользователем.

Журнал учета

Предлагаемый сценарий регистрирует успешное или ошибочное завершение команды setup.exe после ее выполнения на каждой системе, для чего ведется файл журнала учета. Предлагаемый сценарий создает журнал в формате таблицы Microsoft Excel (формат Excel 97-2003 .xls), при желании можно внести изменения для регистрации результатов работы в базе данных Microsoft Access (.mdb), на сервере Microsoft SQL Server или форматах Office 2007 (.xlsx или .accdb). Для таблицы Excel следует указать имена столбцов в первой строке в соответствии с метками, заданными в сценарии (т. е. ComputerName, Action, Status, Date, Notes). Если лист электронной книги Excel будет переименован из имени по умолчанию Sheet1, то следует изменить переменную sTable в сценарии. Сохраните сценарий в папке, в которой пользователи из группы Authenticated Users обладают правами чтения, выполнения и записи, кроме того, необходимо настроить переменную sFile, чтобы она указывала на файл журнала.

Группы

Можно использовать этот журнал для проверки успешного или ошибочного завершения программы setup.exe, но также желательно иметь возможность отслеживать компьютеры, на которых Office должен быть установлен, на которых setup.exe завершилась успешно и на которых произошли ошибки. Для этого можно воспользоваться средствами службы каталогов Active Directory (AD). Создайте три глобальные группы безопасности в AD для хранения статусов компьютеров.

  • CCM_Office 2007 Deploy. Эта группа будет содержать компьютеры, на которые следует установить Office 2007.
  • APP_Office 2007. Эта группа будет включать компьютеры, на которые Office 2007 был успешно установлен.
  • ALERT_Office 2007 Deploy. Эта группа будет использоваться для того, чтобы отметить компьютеры, на которых при размещении Office 2007 произошел отказ. Таким образом можно будет легко проверить, каким системам необходимо уделить внимание.

Использование AD в качестве базы данных позволяет легко отслеживать изменения состава групп. Компьютеры в группе CCM_Office 2007 Deploy (CCM - Change and Configuration Management) запустят сценарий с описанными ниже методами. В случае успешного выполнения сценария компьютер будет перенесен в группу APP_Office 2007. В противном случае сценарий отправляет его в группу ALERT_Office 2007 Deploy. В обоих случаях компьютер будет удален из группы CCM, поэтому на каждом отдельном компьютере сценарий выполнится только один раз.

Чтобы сценарий мог перемещать компьютер из одной группы в другую, необходимо правильно назначить разрешения для этих групп. Следует предоставить группам право Self Allow Write Members. Благодаря ему пользователь (или компьютер) может добавить или удалить себя из группы, но не может добавить или удалить других членов. Можно настроить этот элемент управления доступом (Access Control Entry, ACE) в диалоговом окне Security Properties каждой группы или поместить эти группы в организационную группу (Оrganizational Unit, OU) и делегировать ей разрешение Allow Self Modify Members ACE.

ACE можно делегировать организационной единице (OU). Для этого требуется открыть в консоли управления Microsoft Management Console (MMC) приложение Active Directory Users and Computers и выбрать Advanced Features из меню View. Затем нужно щелкнуть правой кнопкой OU, содержащий эти три группы, и выбрать Properties. Теперь щелкните по Advanced под вкладкой Security. Щелкните Add и введите SELF для User or Group. Нажимаем OK. В диалоговом окне Permission Settings следует щелкнуть вкладку Property и выбрать Group Objects из выпадающего меню. Теперь нужно выбрать кнопку-флажок Allow для свойства Members.

Сценарий при запуске

GPSI не поддерживает выполнение программы setup.exe для установки Office 2007, поэтому воспользуемся сценарием запуска групповой политики при старте (Startup Group Policy), который может исполнять произвольную команду при запуске компьютера. Сценарии Startup исполняются локально на компьютере и с правами локальной системы System identity, что обеспечивает достаточные привилегии для успешного выполнения команды setup.exe.

В статье Microsoft "Use Group Policy to assign computer startup scripts for 2007 Office deployment" (technet2.microsoft.com/Office/enus/library/a57c8446-b959-4025-a866-b690ddcaa66d1033.mspx) о применении групповой политики для определения сценариев начальной загрузки рассказано о том, как применять их для развертывания Office 2007. Хотя статья хорошо объясняет понятия и пошаговые инструкции для создания и установки сценариев начальной загрузки, реальный сценарий справляется с задачей плохо. Наш сценарий намного надежнее.

В случае применения сценариев начальной загрузки для развертывания программного обеспечения надо помнить два основных факта. Во-первых, по умолчанию обработка этого сценария не должна занимать более 10 минут, иначе она будет прекращена. Это означает, что необходимо согласовать значение в параметре групповой политики Group Policy Object (GPO) для тайм-аута сценария, который расположен в Computer Configuration Administrative Templates\System Scripts\Maximum для сценариев групповой политики, с максимальным временем (в секундах), необходимым для установки Office. Задайте более длительный интервал выполнения сценария. Как правило, бывает достаточно 15-20 минут (900-1200 секунд). Советую задавать больший тайм-аут сценария в одном и том же GPO, который используется для развертывания Office, потому что тайм-аут сценария снова примет значение по умолчанию или заданное значение от других объектов групповой политики в случае, если объект групповой политики больше не применяется к компьютеру.

Второе, о чем надо помнить при использовании сценариев начальной загрузки, - это о влиянии на конечных пользователей. Сценарии начальной загрузки запускаются при каждом запуске системы - вы же не хотите, чтобы команда setup.exe запускалась при каждой начальной загрузке клиентского компьютера. Команда Setup станет повторно устанавливать Office - логика программы благополучно обнаружит существующую установку, однако для этого потребуется время. Следовательно, необходимо настроить сценарий начальной загрузки так, чтобы наличие Office 2007 на обрабатываемой системе проверялось до запуска setup.exe. Если Office 2007 уже был установлен, то сценарий завершит работу без запуска setup.exe.

Настроить сценарий на проверку наличия Office на системе можно разными способами. Например, можно считывать параметр в реестре, который показывает, есть ли Office 2007 в списке установленных программ. Если да, значит, Office 2007 установлен. Можно также создать в реестре собственную запись для отслеживания нормальной установки Office 2007. Я предпочитаю устанавливать флаг в системе управления конфигурациями. Еще можно создать "файл признаков" на жестком диске, именно так поступают многие администраторы. Создается пустой текстовый файл со специальным именем, например C:\OfficeDeployed.txt. По наличию или отсутствию такого файла сценарий определяет, надо ли продолжать выполнение. Я предпочитаю изменение реестра, а не проверку файла-признака, поскольку, во-первых, поиск файла занимает больше времени, а во-вторых, файл может быть удален с диска пользователем.

Наконец, пришло время создать объект групповой политики для развертывания Office 2007. Создадим GPO с именем Office 2007 Deploy, который будет содержать сценарий начальной загрузки для запуска установки Office 2007. Отредактируйте настройки политики GPO Startup Script для запуски своего сценария: имя сценария (Script Name) должно быть cscript.exe, причем параметры сценария (Script Parameters) должны быть полным путем для сценария в месте установки сети для Office, как показано на экране. Не следует использовать пробелы в полном адресе или имени файла.

Создав Office 2007 Deploy GPO со сценарием начальной загрузки для установки Office 2007, нужно задать такой фильтр GPO, чтобы он применялся только к компьютерам из группы CCM_Office 2007 Deploy. Не забудьте удалить Authenticated Users из фильтра.

Любой компьютер, который находится в группе CCM_Office 2007 Deploy, запустит сценарий начальной загрузки и установит Office 2007. Теперь о конструктивной части. Поскольку сценарий начальной загрузки включает программу удаления компьютера из группы, он будет запускаться только один раз на каждом компьютере. И тогда, при успешном завершении установки Office, компьютер будет перемещен в группу APP_Office 2007. Можно использовать эту группу для управления и создания отчета о том, какие компьютеры имеют Office 2007. Если по какой-то причине установка Office дала сбой, компьютер попадет в группу ALERT_Office 2007 Deploy, где будут собраны все компьютеры, относительно которых необходимо выяснить, почему установка Office не удалась.

Подведем итоги

Мы создали сценарий, подобный SMS или Systems Center Configuration Manager, своими руками. Этот сценарий выполняет развертывание программы, регистрирует результаты и предотвращает повторные попытки установки программного обеспечения на тех компьютерах, где оно уже установлено. Также мы рассмотрели, как развертывать сценарий с помощью сценариев начальной загрузки Group Policy. Подробнее о других методах развертывания Office 2007 рассказано во врезке "Альтернативные методы развертывания Office 2007". Этот подход может использоваться для нескольких заданий управления систем дополнительно к развертыванию Office 2007. 

Альтернативные методы развертывания Office 2007

Я не рекомендую задействовать GPSI для развертывания Office 2007, есть другие методы, которыми можно пользоваться. Я рассказал о применении сценария Office2007_Deploy.vbs и сценариев начальной загрузки групповой политики для развертывания Office 2007 в основной статье. Теперь посмотрим, как можно развертывать Office 2007, создавая задание для запуска по расписанию или используя бесплатные инструменты PsExec или CPAU.

Экран. Редактирование настроек политики GPO Startup Script

Запланированное задание

Можно развернуть Office Setup, создавая задание для запуска по расписанию, выполняющее сценарий Office2007_Deploy.vbs. Это позволит сделать команда schtasks.exe

schtasks.exe /create /s desktop101 /tn "Deploy Office" /tr "cscript.exe \\windomain.com\software\office\sdp\INTELLIEM_Setup\Office 2007_Deploy.vbs" /ru SYSTEM /sc ONCE /ST 12:14 [/v1 ]

Заметим, что эта команда и некоторые другие команды в данной статье занимают несколько строк из-за нехватки места, однако их надо вводить одной строкой. Команда schtasks.exe создает задание с именем Deploy Office (имя задания может быть произвольным). Задание выполняет cscript.exe, путь к сценарию указан в папке CompanyName _Setup (INTELLIEM_Setup в нашем примере). Это задание запускается один раз с правами системной учетной записи в 12:14 p.m. Заметим, что запуск следует назначить в наиболее подходящее для вашей организации время.

Для Windows Vista запуск задания по расписанию выполняется иначе, чем на прежних версиях Windows. Если запустить schtasks.exe на системе Vista для выполнения сценария развертывания на системе Windows XP, то надо добавить ключ /v1. Заметим, что schtasks.exe нельзя запустить на системе XP или Windows Server 2003 для создания задания на удаленной системе Vista.

Если вы готовы запустить команду schtasks.exe, воспользуйтесь утилитой PsExec следующим образом:

psexec \\desktop101 schtasks.exe /create

По этой команде учетная запись System запускает сценарий в запланированное время, как если бы мы использовали сценарии начальной загрузки групповой политики для запуска сценария. Выполнив небольшую работу, можно перечислить членов группы CCM_Office 2007 Deploy и выполнить schtasks.exe на этих системах.

PsExec

PsExec является "не поддерживаемым" инструментом Microsoft (ранее принадлежавшим компании Sysinternals). Команда PsExec позволяет выполнять процессы на удаленных системах без установки клиентского программного обеспечения. Она нравится администраторам и удобна для развертывания Office 2007. PsExec можно загрузить с узла PsTools (http://www.microsoft.com/technet/sysinternals/Utilities/PsTools.mspx ). Для применения PsExec с целью развертывания Office 2007 надо запустить команду со всеми нужными параметрами

psexec \\<computername> "<path to Office 2007
Network Installation Point>\setup.exe"

Например, можно запустить PsExec с параметром -f, чтобы указать текстовый файл с именами компьютеров на одной строке. Команда будет запускаться для каждой системы, чье имя есть в файле, который был указан параметром -f.

По умолчанию PsExec загружается с привилегиями пользователя, запускающего эту команду. Поэтому, если вы обладаете правами администратора на удаленном компьютере, PsExec запустит команду Office setup.exe благополучно. Конечно, если удаленная система запущена и подключена к сети. Можно также применить PsExec для выполнения сценария Office2007_Deploy.vbs, запустив команду

psexec \\computername cscript -s
"\\windomain.com\software\office\INTELLIEM_Setup\Office2007 Deploy.vbs"

Параметр -s выполняет сценарий от имени локальной системы, что позволяет запускать сценарий с достаточными правами и вносить изменения в свойство Members наших групп. Если попробовать запустить этот сценарий под своей учетной записью, Office установится, но изменение в членстве группы не произойдет, потому что компьютер не может "передать" ваши права службе Active Directory (AD).

CPAU

В заключение рассмотрим метод развертывания Office 2007 для пользователей без административных прав с помощью запуска команды setup.exe с повышением уровня доступа. Нужно зашифровать административные учетные данные и саму команду. Для этого воспользуемся бесплатной утилитой CPAU, предоставленной Джо Ричардсом (см. ссылку http://wwww.joeware.net/freetools/tools/cpau/index.htm ). Для работы CPAU выполните следующие шаги.

Сначала введите команду для создания закодированного пакета, похожего на применяемый в Runas, который будет выполнять сценарий Office2007_Deploy.vbs:

cpau -u <domain\username> -p <password> -ex "cscript.exe
\\windomain.com\software\office\INTELLIEM_Setup\Office2007_Deploy.vbs" -enc -file
\\windomain.com\software\office\INTELLIEM_Setup\Office2007_Deploy_CPAU -lwp

Потом создайте командный файл, который запустит этот пакет, например, с именем Office2007_Deploy.bat, и поместите в папку INTELLIEM_Setup. Командный файл занимает только одну строку

"\\windomain.com\software\office\INTELLIEM_Setup\cpau.exe"-dec -file
"\\windomain.com\software\office\INTELLIEM_Setup\Office2007_Deploy_CPAU" -lwp

В заключение поместите CPAU.exe туда же, куда и командный файл. Пользователи могут теперь дважды щелкнуть на этом командном файле, он расшифрует пакет CPAU и запустит сценарий с определенными учетными данными.

Используя CPAU или подобные команды, можно отправить пользователю команду по электронной почте, выполнить команду в сценарии регистрации или поместить эту команду в общую папку, чтобы пользователь мог ее запустить, дважды щелкнув по ней. Утилита CPAU раскодирует предоставленные учетные данные, которые должны принадлежать учетной записи из группы администраторов. Существует одна явная (хотя и маловероятная) проблема безопасности. Она состоит в том, что опытный пользователь расшифрует учетные данные. Поэтому советую создать пользовательскую учетную запись TEMP_Office 2007 Deploy, а затем создать объект групповой политики, который использует параметр Restricted Groups для указания пользователя как члена локальной группы Administrators. Отфильтруйте GPO с помощью группы CCM_Office 2007 Deploy. Это приведет к тому, что на всех системах, на которых должен быть установлен Office, в локальную группу Administrators добавится учетная запись пользователя TEMP_Office 2007 Deploy. Используйте имя пользователя и пароль учетной записи в своем пакете CPAU. Когда пользователь без административных прав запустит сценарий, этот сценарий удалит компьютер из группы CCM_Office 2007 Deploy (заметим, что учетная запись пользователя TEMP_Office2007 Deploy должна иметь разрешение Allow Write Members), в результате чего GPO больше не применяется. В следующий раз настройки по защите обновятся (или при следующем повторном старте) и учетная запись TEMP_Office2007 Deploy будет удалена из локальной группы Administrators. По завершении развертывания Office 2007 учетную запись пользователя TEMP_Office 2007 Deploy можно заблокировать или удалить.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=22803