вторник, 28 июня 2011 г.

Принцип работы DFS

Принцип работы Dfs
Основным элементом структуры данной службы является общий каталог, который представляет собой корень иерархии Dfs. При помощи Dfs эти сетевые каталоги формируют последовательное отдельное пространство имен. Клиентские системы используют хорошо знакомые понятия, такие как подключенный диск или путь UNC (Universal Naming Convention), для подключения к корню Dfs. После подключения клиента структура Dfs выступает в роли обычного общего каталога, содержащего подкаталоги, по которым пользователи могут перемещаться. Каждый подкаталог, доступный из корня Dfs, на самом деле представляет собой ссылку на общий каталог (источник ссылки) в любой точке сети. Dfs автоматически направляет клиента, который обращается к сетевой папке, к реальному месту расположения данных. Как показано на экране 1, папки, которые видит пользователь, представляют собой переадресацию пользователей службой Dfs к разным общим каталогам на серверах A, Б и В. В роли источника ссылки может выступать любая система, использующая сетевую файловую систему, к которой можно обратиться через путь UNC, например системы с Windows, Novell NetWare и UNIX или Linux (то есть машины с файловой системой NFS).


Экран 1. Перенаправление данных Dfs


Служба Dfs позволяет задействовать корни двух видов: автономные и интегрированные в Active Directory (AD). Они различаются способами хранения данных Dfs. В случае автономных корней иерархия Dfs, состоящая из различных ссылок на сетевые каталоги, хранится в локальном реестре сервера Dfs. Этот способ хранения информации не предполагает возможности ее дублирования на других серверах Dfs, то есть, если единственный сервер Dfs, содержащий корень Dfs, становится недоступен, иерархия Dfs оказывается полностью недоступной для всех клиентов сети. В случае недоступности сервера Dfs клиенты по-прежнему могут обращаться к общим каталогам на серверах напрямую. Они лишь не смогут задействовать службу Dfs для доступа к ресурсам. Придется использовать автономные корни Dfs, если система не содержит службу AD или если администраторы системы Dfs не являются администраторами домена и поэтому не могут получить достаточно прав (то есть получить доступ к объекту DFS-Configuration в контейнере System раздела AD для домена) для управления системой Dfs.

Система Windows 2000 Server и более поздние версии также поддерживают корни Dfs, интегрированные с AD (известные еще как доменные корни Dfs или отказоустойчивые корни Dfs). При использовании интегрированных корней информация Dfs хранится преимущественно в AD, хотя действующие серверы Dfs тоже содержат копии данных в памяти, чтобы минимизировать количество обращений сервера Dfs к контроллерам домена (DC) и таким образом снизить нагрузку на сеть со стороны службы Dfs. Интегрированные в AD корни можно использовать только тогда, когда сервер Dfs является членом домена. Однако сервер Dfs не обязан быть контроллером домена. По существу, следует задействовать автономные корни Dfs в случае отсутствия домена AD, необходимости разместить более 5000 ссылок или же если сеть содержит унаследованные клиентские системы. Более подробная информация о различиях между автономными и интегрированными в AD корнями Dfs приведена во врезке «Такие разные корни».

После того как вы решите, какой тип корней Dfs будете использовать, необходимо настроить ссылки и источники ссылок, содержащие данные, которые система Dfs будет предоставлять клиентам. Как уже говорилось, источник ссылки — это общий ресурс, к которому Dfs направляет клиента при обращении по ссылке. Ссылка может иметь несколько источников, благодаря чему реализуется балансировка нагрузки и отказоустойчивость: если общий каталог на одном из серверов недоступен, Dfs направляет клиента к другой копии данных. Существующий источник ссылки, используемый клиентом, зависит в основном от расположения клиента. По существу, Dfs — это служба установки взаимосвязи между хостами в сети, то есть по умолчанию, если источник ссылки находится вблизи от клиента, то Dfs направляет клиента к данному источнику ссылки.

Настройка Dfs
Теперь, когда мы изучили важнейшие понятия системы Dfs, можно приступать к ее настройке. Первая задача — создать корень Dfs. Для этого существует два способа: использование в Microsoft Management Console (MMC) оснастки Distributed File System и запуск приложения dfsutil.exe из командной строки. В данной статье мы рассмотрим оснастки, что чуть проще для новичков по сравнению с dfsutil.exe. Ознакомившись с Dfs, вы, возможно, захотите использовать dfsutil.exe, например, в сценарии, заполняющем ссылками иерархию Dfs. Тогда нужно иметь в виду, что в системах Windows Server 2003, Standard Edition и Windows 2000 Server сервер может содержать лишь один корень Dfs. Серверы Windows Server 2003, Enterprise Edition и Windows Server 2003, Datacenter Edition могут работать с неограниченным числом корней Dfs.

Чтобы создать новый корень Dfs с помощью оснастки Distributed File System, необходимо выполнить следующие шаги:

Запустить оснастку Distributed File System (пункт находится в папке Administrative Tools меню Start).
Щелкнуть правой кнопкой мыши по заголовку Distributed File System в корне дерева в панели и выбрать пункт New Root (если используется система Windows 2003) или New DFS root (для Windows 2000 Server). Последующие шаги используют диалоговые окна системы Windows 2003, хотя сам процесс почти полностью повторяет процесс для оболочки Windows 2000 Server.
В окне приветствия нажать кнопку Next.
Выбрать тип создаваемого корня (доменный или автономный). Нажать Next.
Если выбран доменный корень Dfs, потребуется ввести имя домена, который будет хранить информацию службы Dfs. Если выбран автономный корень, следует ввести имя сервера, который будет хранить соответствующую информацию. Нажмите Next.
Если на шаге 4 выбран доменный корень, программа попросит выбрать сервер, который будет содержать корень Dfs. Следует указать сервер и нажать кнопку Next.
Ввести имя нового корня и любые комментарии, которые помогут при его идентификации, после чего нажать Next. Введя имя корня, вы увидите, как это имя будет выглядеть в качестве имени общего каталога в формате UNC, как показано на экране 2. Например, для доменного общего каталога Dfs имя пути имеет структуру имя домена\имя каталога. Если на данный момент общего каталога не существует, нужно выбрать локальную папку на системе в качестве общего каталога. Этот каталог не содержит реальных данных; вместо этого он включает объекты-ссылки, указывающие на физическое расположение данных. Необходимо выбрать папку для использования в качестве общего каталога и щелкнуть Next.
В окне подтверждения нажать кнопку Finish.


Экран 2. Указание нового корня Dfs


В этой точке клиенты могут подсоединяться к пространству имен Dfs, используя путь UNC \\dfstest.test\shared. Им не нужно ничего знать о том, какие серверы содержат элементы Dfs. Клиенты, использующие систему Windows NT 4.0+Service Pack 6a (SP6a) или более поздние версии, могут подсоединяться к доменному пространству имен Dfs. Клиенты, использующие оболочку Windows 98, могут обращаться к автономным пространствам имен Dfs, но должны иметь установленное расширение, клиента службы AD, чтобы подключаться к пространству имен домена. Среда загрузки Microsoft Windows Preinstallation Environment (WinPE) может обращаться лишь к автономным пространствам имен Dfs.

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

В оснастке Distributed File System щелкните правой кнопкой по созданному корню и выберите пункт New Root Target.
Введите имя сервера, который послужит дополнительным хостом Dfs для пространства имен. Имейте в виду, что имя общего каталога (например, shared), которое система Dfs будет использовать для содержания этой копии, уже задано и не может быть изменено. Нажмите Next.
Если каталога с таким именем на указанном сервере не существует, система предложит выбрать папку для использования в этом качестве либо можно создать новую папку, а потом выбрать ее. Выберите папку и нажмите Next.
В результирующем окне нажмите кнопку Finish.
Корень Dfs теперь будет отображать множество серверов, которые действуют как корневые объекты пространства имен, как показано на экране 3. Клиенты могут подключаться к пространству имен и направляться на один из его корневых объектов. Однако пользователи, обратившиеся к корневому объекту, увидят лишь пустую папку, так как еще не задано ни одной ссылки. Следующим шагом будет добавление нескольких ссылок и источников ссылок, которые будут направлять клиентов к нужным данным.


Экран 3. Просмотр источников корня Dfs


На данном этапе, чтобы закончить настройку системы Dfs, необходимо создать список общих каталогов в компании, обнаружить и учесть дублирование данных в различных каталогах и решить, в каком виде мы будем предоставлять данные клиентам (то есть выбрать имя папки и текст комментария). После того как будет собрана вся указанная выше информация, можно создавать ссылки, выполняя следующие шаги:

Щелкните правой кнопкой мыши на корне Dfs и выберите пункт New Link из контекстного меню.
Введите имя ссылки (то есть имя папки, которую будет видеть клиент) и имя общего каталога, в который ссылка будет направлять клиента. Это имя можно изменить или добавить позднее. Также можно ввести комментарий и определить период времени, в течение которого клиенты будут хранить информацию по источнику, до повторного обращения к серверу Dfs, как показано на экране 4.
Нажмите кнопку ОК.


Экран 4. Создание новой ссылки


Теперь, когда клиенты попадут в пространство имен Dfs, они будут видеть папку. При открытии этой папки пользователь будет перенаправлен в общий каталог и сможет просмотреть его содержимое.

Предположим, у нас имеется папка с документами на сервере в удаленном офисе. Вместо того чтобы создавать отдельную ссылку на эту папку (например, LondonDocuments), можно добавить еще один источник к существующей ссылке. Настройка множества источников ссылки — еще один способ обеспечить отказоустойчивость. Если один из источников ссылки недоступен, система Dfs может направить пользователя к другой копии данных. Чтобы добавить дополнительный источник к существующей ссылке, следуйте приведенным ниже инструкциям.

Щелкните правой кнопкой мыши по ссылке и выберите пункт New Target из контекстного меню.
Укажите путь к новому каталогу, который также послужит источником для данной ссылки. Можно дополнительно включить дублирование данных, поставив флажок в поле Add this target to the replication set, как показано на экране 5. Дополнительная информация о дублировании приведена во врезке «Настройка дублирования данных на основе службы Dfs».
Нажмите кнопку OK.


Экран 5. Добавление источника ссылки для существующей ссылки


Просмотрев ссылку, увидим, что доступно два источника ссылки. Когда клиенты обращаются к этой ссылке, система Dfs отправляет их к одному из источников. Теперь можно повторить пройденные шаги, чтобы настроить все ссылки и источники, необходимые для заполнения всей структуры Dfs.

Как мы убедились, для одной ссылки может существовать множество источников. Эта возможность вызывает очевидный вопрос: не будет ли наличие разнообразных данных в различных источниках ссылки означать, что система Dfs может произвольным образом направлять клиентов к различным источникам ссылки и клиенты будут видеть различные файлы? Так как источники ссылки представляют собой разные каталоги на отдельных серверах, специального механизма для постоянной синхронизации их содержания не существует. Следовательно, вполне возможна ситуация, когда различные источники ссылки будут иметь разное содержание. В таком случае клиент обратится к папке, получит доступ к данным, но, вернувшись к той же папке позднее, возможно, будет отправлен к другому источнику ссылки и увидит совершенно другой набор данных. Однако этот сценарий маловероятен. Мои пояснения по теме приведены во врезке «Настройка перенаправления в Dfs». К счастью, оболочка Windows 2000 Server и более поздние реализации системы Dfs содержат службу File Replication Service (FRS), которую контроллеры домена задействуют для постоянной синхронизации своих общих каталогов Sysvol. Система Dfs использует службу FRS для синхронизации источников ссылки, которые являются частью доменного пространства имен. Служба FRS предоставляет различные возможности дублирования, такие как непрерывное дублирование, которое позволяет дублировать изменения в режиме, близком к реальному времени, и дублирование в определенное время суток. Система Windows 2003 R2 будет содержать новую версию службы FRS специально для службы Dfs. Инструкции по настройке дублирования файлов на основе системы Dfs приводятся во врезке «Настройка дублирования на основе Dfs». Если используется автономный корень Dfs и требуется синхронизация, для решения этой задачи необходимо средство синхронизации файлов, такое как служба Robocopy из пакета Windows Resource Kit.

Как мы выяснили, система Dfs заметно упрощает доступ к общим ресурсам для конечных пользователей и, при действующей службе AD, предоставляет методы повышения отказоустойчивости. Для оптимальной работы системы Dfs в конкретной компании потребуется решить, какие файлы необходимо дублировать, и, если нужно, отладить механизм перенаправления. Я привел самую существенную информацию, которой следует владеть перед началом работы с Dfs. Дополнительные сведения по этой теме можно найти на Web-сайте Microsoft’s Distributed File System and File Replication Services по адресуhttp://www.microsoft.com/.../default.mspx.


Такие разные корни
Каждый тип корня Dfs имеет свои преимущества и ограничения. Важно помнить, что, в отличие от интегрированной в Active Directory (AD) службы DNS, доменные корни Dfs не обязаны находиться на контроллерах домена (DC); они могут содержаться на любом сервере, который является членом домена и использует Windows 2000 Server или более поздние версии. При запуске и через определенные интервалы времени (по умолчанию один раз в течение часа) серверы Dfs просто обращаются к эмуляторам PDC домена, чтобы получить последние данные о пространстве имен Dfs. Эти периодические запросы могут оказаться узким местом при доступе к ресурсам. Кроме того, они накладывают ограничение в 16 копий корней при реализации Dfs, а значит, нельзя будет иметь более 16 корней для одного пространства имен, так как синхронизация между серверами Dfs становится все более сложной при каждом изменении структуры Dfs (т. е. при добавлении новой ссылки или ее источника). Исключением из этого правила является реализация Dfs в системе Windows Server 2003, которая имеет новый режим масштабирования корней, обычно позволяющий серверам Dfs обращаться к любому DC в домене, а не только к эмулятору PDC.

Другое ограничение доменных корней Dfs заключается в том, что вся структура Dfs (в том числе ссылки, источники ссылок и корневые серверы) хранится в отдельном объекте, который необходимо дублировать на всех контроллерах домена при малейших изменениях в структуре Dfs. Вам это не напоминает дублирование членства в группе в системах Windows 2000 Server? Для корректного выполнения дублирования Microsoft рекомендует иметь максимальный размер объекта Dfs не более 5 Mбайт (около 5000 ссылок). Средняя реализация Dfs имеет около 100. Если требуется разместить более 5000 ссылок, следует обдумать варианты разделения пространства имен Dfs на множество пространств имен или использование автономных корней Dfs, для которых рекомендованный лимит составляет 50 000 ссылок. Другой способ минимизировать объем, используемый системой Dfs в AD, — ограничить число комментариев, приводимых для ссылок, так как они тоже хранятся в объекте Dfs службы AD. Тем не менее нужно помнить, что подобное пространство имен Dfs вряд ли будет часто меняться. После настройки начальной конфигурации системы Dfs она останется достаточно статичной и не будет дублироваться часто.

Настройка дублирования на основе Dfs
Если в системе имеется множество источников ссылки и предстоит осуществлять постоянную синхронизацию файлов, требуется настроить дублирование на основе Dfs. Чтобы настроить дублирование для ссылки, нужно выполнить следующие шаги:

Щелкнуть правой кнопкой мыши по ссылке и выбрать пункт меню Configure Replication.
На экране приветствия мастера Configure Replication Wizard нажать кнопку Next.
Программа попросит выбрать источник, который станет оригиналом для дублирования. Если имеется общий каталог, содержащий данные, которые необходимо дублировать в другие папки, следует выбрать его в качестве оригинала. Нажмите кнопку Next.
Необходимо будет выбрать топологию, используемую при дублировании. По умолчанию установлена кольцевая топология, которая подходит для большинства сетей. Если сетевое окружение более сложное, можно рассмотреть использование других топологических схем, таких как «издатель — подписчики», взаимная пересылка и схема, настраиваемая пользователем. Выбранная топология должна соответствовать топологии имеющейся глобальной сети; в идеале топология дублирования службы FRS должна соответствовать схеме сети. К примеру, если сеть включает один центральный офис и множество подключенных к нему филиалов, топологическая схема «издатель — подписчики» будет наилучшим выбором. Нажмите Finish.
С этого момента источники ссылки будут автоматически дублировать изменения, осуществляя постоянную синхронизацию содержимого. Однако в зависимости от географического расположения серверов обновления могут происходить с задержкой. На задержку влияет множество факторов, в том числе доступная полоса пропускания, объем дублируемых данных, используемая топология и расписание дублирования.

Хочу кое-что пояснить относительно технологии дублирования в Dfs: она не создавалась для работы с данными, которые находятся на множестве серверов и часто обновляются, или для тех случаев, когда файл может обновляться в одно время в различных источниках ссылок. Служба FRS не соединяет все изменения в одном файле; дублируется файл, сохраненный последним. Поэтому стоит задействовать службу FRS только для дублирования статичных данных, таких как шаблоны или политики компании, либо данных, которые будут обновляться лишь в одном месте в один и тот же момент времени. Основное достоинство службы FRS заключается в том, что она предоставляет отказоустойчивый набор данных, чтобы обеспечить надежную защиту в случае сбоя отдельного сервера.

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

Заданное по умолчанию поведение системы Dfs (перенаправление клиента на произвольный альтернативный источник ссылки), если она не может найти локальный источник, может быть неэффективным. Например, если система Dfs не находит локальный источник в Далласе, она может перенаправить клиента к источнику в Лондоне, хотя в Нью-Орлеане существует еще один источник, соединение с которым реализовано через более быстрый канал. Однако настройки Dfs можно регулировать, обеспечивая более эффективное перенаправление запросов пользователей. Можно настроить Dfs таким образом, что система будет направлять клиентов только к источникам ссылок, размещенным в локальном окружении пользователей. Для активизации этого режима, названного Restricted Same-site Target Selection, следует запустить команду Dfsutil и указать параметр /insite:

dfsutil /root:\\\ /insite /enable

Недостаток данного режима заключается в том, что в случае, если система Dfs не может обнаружить локальный источник, пользователи просто не смогут получить доступ к ресурсу.

С другой стороны, если на контроллерах домена и серверах Dfs используется оболочка Windows 2003, можно задействовать режим Least-Expensive Target Selection. В этом режиме, если локальный источник ссылки недоступен, система Dfs перенаправляет клиента на источник, соединение с которым даст наименьшую нагрузку на полосу пропускания; Dfs использует для этого стоимость межсайтовых соединений, описанных в AD. Режим Least-Expensive Target Selection минимизирует использование медленных соединений и позволяет клиентам быстрее получать доступ к сетевым каталогам. Чтобы активировать режим Least-Expensive Target Selection, нужно запустить команду:

dfsutil /root:\\
\
/sitecosting /enable

воскресенье, 19 июня 2011 г.

Основы работы с оболочкой Windows PowerShell

Microsoft Press. Выполнение и автоматизация задач администрирования фермы с помощью оболочки Windows PowerShell
Опубликовано: 13 января 2011 г.
В этой статье приводится отрывок из настольной книги администратора Microsoft SharePoint 2010 (издательство Microsoft Press, август 2010 г.).
Купить эту книгу (Возможно, на английском языке)
В этом отрывке из настольной книги администратора Microsoft SharePoint 2010 (Возможно, на английском языке) описываются возможности командной консоли SharePoint 2010, а также рассматривается порядок выполнения основных задач администрирования с помощью оболочки Windows PowerShell.

Авторы

Билл Инглиш (Bill English)
Билл Инглиш является обладателем сертификатов MCTS, MCT, CTT+ и GSEC, а также статуса Microsoft® MVP в отношении продуктов SharePoint® Server. Он управляет крупной компанией, специализирующейся на подготовке специалистов и оказании консультационных услуг, является автором более 10 книг и выступал с докладами на многих компьютерных конференциях, включая Microsoft® Office SharePoint® Conference, Comdex и другие мероприятия.
Брайан Олдерман (Brian Alderman)
Брайан Олдерман является специалистом в области компьютерных информационных систем и в настоящий момент работает в компании Mindsharp, которая располагается в агломерации Миннеаполис-Сент-Пол в штате Миннесота (США). С 1995 года он стал обладателем множества сертификатов корпорации Майкрософт, включая MCT, MCTS для SharePoint, MCITP для SQL Server®, MCSA и MCSE для Windows Server®, а также PMP. Брайан занимает позицию старшего технического инструктора, консультанта и обладает более чем 15 летним опытом управления проектами, работы с сетевыми технологиями, базами данных SQL Server и технологиями SharePoint. Он является автором ряда публикаций, в том числе посвященных администрированию Windows 2000 Professional и SQL Server 2000. Брайан активно выступает на конференциях, посвященных технологиям SharePoint, в том числе SharePoint Saturday и SharePoint Best Practices Conference.
Марк Ферраз (Mark Ferraz)
Марк Ферраз является президентом консалтинговой компании SolutionsMark (www.solutionsmark.com), которая базируется в Хьюстоне (Техас, США) и специализируется на проектировании, разработке и внедрении корпоративных платформ, решений и услуг на основе продуктов и технологий Microsoft SharePoint. Марк занимает позицию старшего разработчика информационной архитектуры, разработчика архитектуры корпоративных сетей и систем, а также проектировщика. Он обладает более чем десятилетним управленческим опытом разработки и внедрения сложных проектов для крупнейших мировых компаний. Помимо участия в разработке рекомендаций к Microsoft Office SharePoint Server 2007, Марк активно выступает на отраслевых конференциях, посвященных рекомендациям по применению продуктов и технологий SharePoint.

Отрывок из книги. Глава 5. Выполнение и автоматизация задач администрирования фермы с помощью оболочки Windows PowerShell

В последние годы многие администраторы SharePoint все больше осознают эффективность оболочки Windows PowerShell и пытаются использовать ее для реализации задач администрирования своих систем, однако без встроенной поддержки сталкиваются с определенными сложностями. В Microsoft SharePoint Foundation 2010 и Microsoft SharePoint 2010 реализована встроенная поддержка оболочки Windows PowerShell с помощью командной консоли SharePoint 2010. В этой главе описываются возможности командной консоли SharePoint 2010, а также рассматривается порядок выполнения основных задач администрирования с помощью оболочки Windows PowerShell. Материалы этой главы используются в главе 12 "Управление службами поиска и службой FAST Search с помощью оболочки Windows PowerShell" при описании сценариев и задач администрирования поиска.
В Интернете и специализированной литературе представлен огромный объем информации об оболочке Windows PowerShell. В этой главе мы не пытаемся научить вас работе с Windows PowerShell, а описываем новые командлеты Windows PowerShell, представленные в SharePoint 2010. Тем не менее, для новичков в начале этой главы приводится краткий обзор основ работы с оболочкой Windows PowerShell.

Содержание


Основы работы с оболочкой Windows PowerShell

Процесс администрирования сервера, на котором установлены продукты Майкрософт, традиционно включает в себя ознакомление с рядом инструментов администратора, таких как графические интерфейсы консоли управления (MMC), называемые оснастками MMC; разнообразные средства командной строки; и, возможно, объекты поставщика инструментария управления Windows (WMI) или модели COM, с которыми администраторы могут работать с помощью языка сценариев VBScript. До выпуска SharePoint 2010 продукты и технологии SharePoint мало чем отличались по числу доступных инструментов администратора от других продуктов Майкрософт. В своей работе администраторы использовали веб-сайт центра администрирования, мастер настройки продуктов SharePoint, а также средства командной строки stsadm и psconfig. Возможности каждого из этих средств ограничены.
Каждому продукту Майкрософт также посвящено собственное сообщество, в которых рассматривались способы расширения возможностей встроенных средств для более эффективного выполнения задач администрирования. Нужные администраторам средства были доступны, однако были рассредоточены по различным источникам. Теперь все меняется, и любые административные задачи могут выполняться благодаря возможностям скриптов и автоматизации Windows PowerShell.
В основу концепции оболочки Windows PowerShell были положены результаты исследования, проведенного корпорацией Майкрософт в начале 2000-х годов. Командная оболочка Windows PowerShell изначально была построена на основе стандарта POSIX (IEEE 1003.2) с учетом возможностей оболочек Perl и UNIX. Она поддерживает язык скриптов, который обладает гораздо более широкими возможностями по сравнению с командной строкой Windows (cmd.exe). Средства командной строки традиционно нравятся администраторам, поскольку обеспечивают возможность пакетного выполнения и автоматизации повторяющихся задач, а также позволяют проверять правильность каждого выполнения набора задач. Эти возможности реализованы с помощью командлетов Windows PowerShell, которые не только позволяют использовать традиционные средства, но и существенно расширяют их функциональность.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Предложенные сообществом инициативы по улучшению предыдущих версий SharePoint, в том числе расширения средства командной строки stsadm, опубликованы на странице http://stsadm.codeplex.com/ (Возможно, на английском языке). Скрипты Windows PowerShell для продуктов Windows SharePoint Services 3.0 и Microsoft Office SharePoint Server 2007 можно найти на странице http://sharepointpsscripts.codeplex.com/ (Возможно, на английском языке). Проект CodePlex "PowerShell SharePoint Provider" для продуктов Windows SharePoint Services 2.0 и Microsoft SharePoint Portal Server 2003 представлен на странице http://pssharepoint.codeplex.com/ (Возможно, на английском языке).
В этом разделе рассматриваются следующие вопросы, посвященные работе с Windows PowerShell.
  • Новые возможности выпуска Windows PowerShell 2.0
  • Архитектура
  • Установка Windows PowerShell
  • Удаленное управление

Новые возможности выпуска Windows PowerShell 2.0

В Windows PowerShell 2.0 реализован ряд новых функций и улучшений по сравнению с Windows PowerShell 1.0, в том числе:
  • Новые командлеты
  • Функции удаленного управления и фоновые задания
  • Интегрированная среда сценариев Windows PowerShell
  • Отладчик Windows PowerShell
  • Модули
  • Расширенные функции
  • Транзакции
  • Пошаговые конвейеры
  • События
  • Интернационализация скриптов
  • Интерактивная справка
Многие новые возможности будут интересны ИТ-специалистам. Например, вы можете удаленно управлять всеми серверами фермы с настольного ПК. По мере знакомства с Windows PowerShell вы сможете создавать собственные расширенные функции с использованием языка скриптов Windows PowerShell и в дальнейшем использовать их в виде командлетов. В Windows PowerShell 1.0 единственным способом реализовать такое поведение является написание кода и развертывание файлов в ферме при участии разработчика.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения о новых возможностях в Windows PowerShell 2.0 см. в статьях What's New in Windows PowerShell и http://ru.wikipedia.org/wiki/Windows_PowerShell. Также можно выполнить поиск в Интернете по ключевой фразе "Новые возможности в Windows PowerShell 2.0" или по имени интересующей функции.

Архитектура Windows PowerShell

Почему применение Windows PowerShell в современной системе так важно? В Windows PowerShell реализован объектно-ориентированный язык скриптов на платформе .NET Framework (.NET Framework 3.5 для Windows PowerShell 2.0), построенный на базе языка программирования C# (произносится "Си-шарп"). Это позволяет оболочке Windows PowerShell получать доступ к базовым объектным моделям, а также передавать объекты и их значения (свойства) из одной команды Windows PowerShell в другую. Фактически, такая архитектура дает вам возможности разработчика, не требуя при этом написания, компиляции и развертывания кода. С другой стороны, такие расширенные возможности являются и недостатком, поскольку их неправильное применение может легко привести к разрушительным последствиям для системы.
Разработчики продуктов Майкрософт в большинстве случаев создают инструменты для администраторов на основе оболочки Windows PowerShell. Например, в установке SharePoint 2010 большинство задач администрирования выполняются с помощью командлетов Windows PowerShell без необходимости устанавливать программное обеспечение, предлагаемое сообществом. При необходимости вы можете создавать дополнительные командлеты с использованием скриптов и расширенных функций Windows PowerShell 2.0. Также новые командлеты могут создаваться разработчиками организации. Администрирование SharePoint с помощью оболочки Windows PowerShell — это ориентированный на будущее подход, поэтому уже сейчас важно как можно скорее ознакомиться с возможностями встроенных командлетов и научиться эффективно применять их.
На первый взгляд, работа в оболочке Windows PowerShell может показаться слишком сложной, однако если вы ранее использовали командную строку (cmd.exe) или создавали пакетные файлы, то вы с легкостью освоитесь в консоли Windows PowerShell. Фактически, консоль Windows PowerShell можно использовать вместо командной строки, поскольку в ней полностью работоспособны все представленные там команды (например, dir, cd и ping). При использовании параметров командной строки в командах консоли Windows PowerShell может потребоваться заключать их в кавычки, однако это единственное изменение по сравнению с работой в командной строке. Соответственно, вы сможете выполнять все задачи администрирования из одного окна.
Gg550867.note(ru-ru,office.14).gifПримечание.
По умолчанию в командной строке установлен черный фон, однако при необходимости его можно изменить. Для этого достаточно щелкнуть правой кнопкой мыши в строке заголовка и выбрать пункт "Свойства". В диалоговом окне "Свойства" представлены четыре вкладки: "Параметры", "Шрифт", "Макет" и "Цвета", на которых можно изменять шрифт, цвет фона, размер окна и другие параметры. Дополнительные сведения о сходствах между двумя интерфейсами командной строки см. в боковом примечании, посвященном сочетаниям клавиш командной строки, в этой главе.
Работать с оболочкой Windows PowerShell можно двумя способами: с использованием интерфейса командной строки (консоль Windows PowerShell — powershell.exe) или графического интерфейса интегрированной среды сценариев Windows PowerShell (Powershell_ise.exe). В этой главе описывается работа в консоли Windows PowerShell.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения об оболочке Windows PowerShell можно найти в следующих ресурсах.

Сочетания клавиш командной строки

В консоли Windows PowerShell поддерживаются сочетания клавиш, которые использовались в командной строке.
  • Чтобы временно приостановить отображение при выводе данных команды, нажмите клавиши CTRL+S. После этого можно нажать клавиши CTRL+S, чтобы продолжить выполнение или CTRL+C, чтобы завершить его.
  • По умолчанию в буфере хранится до 50 команд. Для выбора команды в буфере используйте клавиши со стрелками вверх и вниз. Это позволяет с легкостью переходить к предыдущим или последующим командам и выполнять их.
  • Чтобы отобразить всплывающее окно, в котором выводятся хранящиеся в буфере команды, нажмите клавишу F7. С помощью клавиш со стрелками выберите команду, которую требуется выполнить, нажмите клавишу ВВОД или F9, введите номер команды, которую требуется выполнить, и нажмите клавишу ВВОД.
  • Чтобы отобразить в командной строке команды, хранящиеся в буфере, введите первые несколько знаков названия нужной команды и нажмите клавишу F8. В интерфейсе командной строки осуществляется поиск в буфере первой команды, начинающейся с введенных знаков.
  • Благодаря функциям автозаполнения командной оболочки Windows PowerShell вам практически никогда не потребуется полностью вводить название команды. Достаточно ввести первые несколько знаков названия нужной команды, а затем с помощью клавиши TAB просмотреть в алфавитном порядке все доступные команды, имена файлов и папок, начинающиеся с введенного сочетания. Чтобы просмотреть команды в обратном порядке, воспользуйтесь сочетанием клавиш SHIFT+TAB.
  • Чтобы скопировать и вставить текст, щелкните правой кнопкой мыши в заголовке интерфейса командной строки, выберите команду "Пометить", выделите текст, который нужно скопировать, а затем снова щелкните правой кнопкой мыши в заголовке окна, чтобы автоматически скопировать выделенный текст в буфер обмена.
  • Названия команд не зависят от регистра. Команды можно объединять в пакетные текстовые файлы. При вызове такого файла в окне командной строки выполняются сохраненные в нем команды. Такие текстовые файлы имеют расширение BAT, CMD, VBS или, как в случае с Windows PowerShell, PS1. Кроме того, команды в таких файлах можно выполнять вне окна командной строки. Для этого достаточно выполнить файл из строки "Выполнить" или дважды щелкнуть его в проводнике.
  • При вызове командного файла в него можно передавать аргументы. Передаваемые в файл аргументы хранятся в памяти и используются с помощью переменных. Также можно создавать переменные для хранения значений, которые могут потребоваться после выполнения задачи. В Windows PowerShell ссылка на переменную задается с помощью префикса ($) перед именем переменной.
  • Выходные данные команды можно сохранить в файл, имя которого указывается справа от знака >. Если указанный файл уже существует, он будет перезаписан. Чтобы сохранить данные в файл, добавив их к концу файла, воспользуйтесь сочетанием знаков >>. Сообщения об ошибках, произошедших при выполнении команды, можно сохранить в файл, имя которого указывается справа от знака 2>. Чтобы добавить сведения об ошибках в конец файла, воспользуйтесь сочетанием знаков 2>>. Чтобы отправить данные по стандартному адресу вывода, укажите 2>&1.
  • В одной строке можно выполнять несколько команд. В Windows PowerShell для разделения команд используется знак точки с запятой (;).
  • Чтобы использовать выходные данные одной команды в качестве входных для другой, разделите их знаком вертикальной черты "|". Например, при вводе команды dir | sort | more отображается отсортированный список файлов в текущем каталоге с выводом по одной странице. В большинстве случаев на клавиатуре символ вертикальной черты располагается над символом обратной косой черты.
  • При работе с распространенными командами можно использовать псевдонимы и ярлыки. Например, командлет ForEach-Object можно вызвать с помощью псевдонима ForEach или даже знака процента (%). Вместо псевдонима Where, который соответствует командлету Where-Object, можно использовать знак вопроса (?). Список псевдонимов можно получить с помощью команды Get-Alias. Обратите внимание, что использование большого числа псевдонимов в скриптах может существенно затруднить их понимание.
  • В этой книге вы найдете ряд примеров таких ярлыков.

Установка Windows PowerShell

На компьютерах под управлением ОС Windows 7, Windows 2008 R2 или более поздних версий, установлены средства Windows PowerShell 2.0 и Windows Remote Management (WinRM) 2.0. Чтобы реализовать удаленное или локальное управление компьютерами, на которых установлены более ранние версии операционных систем, с помощью Windows PowerShell, необходимо установить и Windows PowerShell 2.0, и WinRM 2.0.

Установка Windows PowerShell 2.0 и WinRM 2.0

Копию оболочки Windows PowerShell 2.0 и компонента WinRM 2.0 можно загрузить с веб-страницы http://support.microsoft.com/kb/968929/ru. Убедитесь, что загружается нужная версия. Например, при установке SharePoint в 64-разрядной версии ОС Windows Server 2008 необходимо загрузить и установить версии Windows PowerShell 2.0 и WinRM 2.0 для Windows 2008 x64. После установки исполняемый файл интегрированной среды сценариев Windows PowerShell располагается в каталоге %SystemRoot%\System32\WindowsPowerShell\v1.0.
Gg550867.note(ru-ru,office.14).gifПримечание.
Если планируется активное использование интегрированной среды сценариев, рекомендуется поместить ярлык этой программы в панель задач. В меню "Пуск" щелкните правой кнопкой мыши файл Powershell_ise.exe и выберите пункт "Закрепить на панели задач" или "Закрепить в меню «Пуск»".
Чтобы использовать интегрированную среду сценариев Windows PowerShell в ОС Windows 2008 R2, необходимо добавить компонент Windows PowerShell ISE. Для этого можно использовать команды Windows PowerShell или диспетчер сервера. После установки SharePoint 2010 или SharePoint Foundation 2010 выполните следующие действия.
  • В оболочке Windows PowerShell введите следующие команды.

    Import-Module Servermanager; Add-WindowsFeature "PowerShell-ISE"
  • В диспетчере сервера выполните следующую процедуру.

    1. Запустите диспетчер сервера. Выберите элемент Компоненты, а затем команду Добавить компоненты.
    2. В средней области мастера добавления компонентов установите флажок Интегрированная среда сценариев (ISE) Windows PowerShell, как показано на рис. 5-1, после чего нажмите кнопку Далее.
Установка Windows PowerShell Рис. 5-1. Установка компонента интегрированной среды сценариев Windows PowerShell
  1. На экране подтверждения выбранных для установки компонентов нажмите кнопку Установить.
  2. На экране результатов установки нажмите кнопку Закрыть.

Работа с политикой выполнения

Windows PowerShell — это крайне эффективный инструмент. Как и в случае с любыми другими языками скриптов, при работе с ним можно с легкостью использовать код, написанный другими пользователями, или загружать готовые фрагменты кода из Интернета. Обратите внимание, что, поскольку файлы кода представляют собой обычные текстовые файлы, в них легко может быть вставлен вредоносный код. В Windows PowerShell реализован встроенный компонент безопасности, который называется политикой выполнения и устанавливается отдельно для каждого пользователя с сохранением параметров в реестре. Для просмотра назначенной политики выполнения введите следующую команду в командной консоли Microsoft SharePoint 2010.
Если командная консоль запущена на сервере SharePoint, в большинстве случаев выходные данные этой команды будут иметь статус политики RemoteSigned. В этом случае пользователь, выполнивший вход в систему, может интерактивно выполнять любые команды и скрипты, хранящиеся на компьютере. Тем не менее, чтобы выполнять файлы конфигурации и скрипты из удаленных источников, требуется наличие подписи. Чтобы изменить политику выполнения, запустите консоль Windows PowerShell от имени администратора и выполните командлет Set-ExecutionPolicy. Также для этого можно изменить следующий раздел реестра.
HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
Gg550867.security(ru-ru,office.14).gifБезопасностьПримечание.
Этот раздел реестра рекомендуется использовать в сочетании с групповой политикой Active Directory. Рекомендуется по возможности избегать изменения параметров реестра вручную, особенно учитывая тот факт, что корпорацией Майкрософт разработан специальный командлет для настройки политики выполнения Windows PowerShell.
Для подписи скриптов применяется командлет Set-AuthenticodeSignature, с помощью которого можно добавить подпись Authenticode к скрипту Windows PowerShell или другому файлу.
В организациях с несколькими средами (такими как среды развертывания, интеграции систем, тестирования пользовательской приемки, подготовительные и рабочие среды) рекомендуется как минимум подписывать код в рабочей ферме и ферме тестирования пользовательской приемки. Также следует проверить параметры политики выполнения для этих ферм. Политика выполнения задается в объекте групповой политики для пользователей и компьютеров, что не позволяет переопределять ее другим пользователям, выполняющим вход на серверы SharePoint.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения о политиках выполнения Windows PowerShell и подписи скриптов см. в статье TechNet, посвященной защите от вредоносного кода, которая доступна по адресу http://technet.microsoft.com/ru-ru/magazine/2008.01.powershell.aspx. Также можно ввести команду Get-Help about_Execution_Policies в интерфейсе командной строки Windows PowerShell. Кроме того, можно ознакомиться с записью блога, посвященной использованию статуса ALLSigned при подписывании скриптов PowerShell, в которой этот процесс описывается на детальном уровне. Эта запись располагается на странице http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=53 (Возможно, на английском языке).
Gg550867.note(ru-ru,office.14).gifПримечание.
При работе на настольном ПК под управлением ОС Windows 7 для удаленного управления серверами SharePoint с ОС Windows Server 2008 R2 необходимо использовать средства удаленного администрирования сервера (RSAT), которые являются обязательными для работы с новыми компонентами групповой политики и поддерживают оболочку Windows PowerShell. Эти средства доступны в центре загрузки Майкрософт по адресу http://www.microsoft.com/downloads/ru-ru/default.aspx. Дополнительные сведения можно найти на страницах http://technet.microsoft.com/ru-ru/library/dd367853(ws.10).aspx и http://trycatch.be/blogs/roggenk/archive/2009/06/08/installing-windows-7-rsat-unattended.aspx (Возможно, на английском языке).

Удаленное управление системами с помощью службы WinRM

В Windows PowerShell 2.0 реализована новая возможность, обеспечивающая удаленное управление системами с настольного ПК с помощью службы WinRM или сервера Internet Information Server (IIS). В большинстве случаев администраторы используют службу WinRM, которая и рассматривается в этом разделе. Удаленное управление подразумевает не только возможность локально запускать оболочку Windows PowerShell на компьютере, используя команды, в которых в качестве необязательного параметра можно указывать имя компьютера. При этом поддерживаются методы удаленного объединения и разветвления по входу, а также фоновые задания.
  • Удаленное объединение по входу — позволяет администраторам подключаться к экземпляру Windows PowerShell, запущенному на тех же удаленных серверах. В стандартном комплекте поставки SharePoint 2010 эта возможность не поддерживается.
  • Удаленное разветвление по входу — позволяет отправлять одну команду Windows PowerShell для параллельного выполнения в нескольких экземплярах Windows PowerShell. Результаты выполнения отправленных команд возвращаются на настольный ПК администратора, с которого они были отправлены. Такой механизм используется для выполнения одинаковых задач на нескольких серверах. Благодаря этому более не требуется поочередно устанавливать подключение удаленного рабочего стола к каждому серверу и выполнять команды локально на каждом из них. Можно создать набор команд Windows PowerShell и передать в них имена серверов. В этом случае на каждом из указанных серверов будут последовательно выполнены введенные команды.
  • Фоновые задания — в Windows PowerShell 2.0 поддерживаются как локальные, так и удаленные фоновые задания. Так называются команды, которые выполняются асинхронно в фоновых процессах и не требуют участия пользователя. При выполнении команды в фоновом процессе командная строка возвращается незамедлительно, что позволяет сразу же продолжить выполнение других команд.

Настройка для работы со службой WinRM

На локальном компьютере и на сервере, на котором требуется удаленно выполнять команды, необходимо запустить службу WinRM Windows и настроить ее для удаленного управления. Чтобы определить, запущена ли на сервере служба WinRM, введите команду
Get-service winrm
Чтобы определить, запущена ли эта служба на удаленном сервере, введите команду
Get-service winrm -computername $имя_сервера
Эта служба должна быть запущена на сервере SharePoint. Если на локальном компьютере используется ОС Windows 7 (или ОС Windows Vista с установленными компонентами Windows PowerShell 2.0 и WinRM 2.0), для реализации функций удаленного управления может потребоваться запустить эту службу. Для этого следует ввести команду Enable-PSRemoting, которая, в свою очередь, выполняет две дополнительные команды — Set-WSManQuickConfig и Start-Service WinRM.
Gg550867.Important(ru-ru,office.14).gifВажно!
Если одно из сетевых подключений является общим, при выполнении команды Set-WSManQuickConfig может возникнуть исключение недопустимой операции. Чтобы продолжить, необходимо изменить тип подключения на доменный или закрытый.
В следующем примере показаны возможные выходные данные команды Enable-PSRemoting.
На компьютере под управлением 64-разрядной версии ОС Windows может отображаться дополнительное сообщение подтверждения.
Чтобы определить параметры конфигурации WinRM, метод проверки подлинности и номера портов доступа, воспользуйтесь следующей командой.
winrm get winrm/config/service
В результате выполнения этой команды должны возвращаться аналогичные следующим выходные данные.
Команды winrm и связанные с ней (например, команду New-PSSession) можно выполнять как из консоли Windows PowerShell, так и из консоли управления SharePoint 2010. Для их выполнения требуются права администратора. Щелкните правой кнопкой мыши в консоли Windows PowerShell или консоли управления SharePoint 2010 и выберите команду "Запуск от имени администратора". Предоставлять учетные данные администратора для подобного механизма запуска могут только члены группы администраторов на удаленном компьютере.
Gg550867.note(ru-ru,office.14).gifПримечание.
Если локальный и удаленный компьютер находятся в разных доменах, между которыми не установлены отношения доверия, либо в рабочей группе, необходимо выполнить дополнительные шаги по настройке удаленного управления. Сценарий с участием компьютеров в рабочей группе наиболее вероятен при установке SharePoint Foundation для совместной работы с внешними пользователями, а также в средах малого бизнеса, а не в типовых установках SharePoint Server. Дополнительные сведения о настройке удаленного управления между двумя компьютерами рабочей группы см. в записи блога, расположенной по адресу http://blogs.msdn.com/wmi/archive/2009/07/24/powershell-remoting-between-two-workgroup-machines.aspx (Возможно, на английском языке).


Копировать код
Service
    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)
    MaxConcurrentOperations = 4294967295
    MaxConcurrentOperationsPerUser = 15
    EnumerationTimeoutms = 60000
    MaxConnections = 25
    MaxPacketRetrievalTimeSeconds = 120
    AllowUnencrypted = false
    Auth
        Basic = false
        Kerberos = true
        Negotiate = true
        Certificate = false
        CredSSP = false
        CbtHardeningLevel = Relaxed
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    IPv4Filter = *
    IPv6Filter = *
    EnableCompatibilityHttpListener = false
    EnableCompatibilityHttpsListener = false
    CertificateThumbprint

Оболочка Windows PowerShell

Копировать код
Are you sure you want to perform this action?
Performing operation "Registering session configuration" on Target "Session
configuration "Microsoft.PowerShell32" is not found. Running command
"Register-PSSessionConfiguration Microsoft.PowerShell32 -processorarchitecture x86 
-force" to create "Microsoft.PowerShell32" session configuration. This will restart
WinRM service.".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

Оболочка Windows PowerShell

Копировать код
WinRM Quick Configuration
Running command "Set-WSManQuickConfig" to enable this machine for remote management
through WinRM service.
 This includes:
    1. Starting or restarting (if already started) the WinRM service
    2. Setting the WinRM service type to auto start
    3. Creating a listener to accept requests on any IP address
    4. Enabling firewall exception for WS-Management traffic (for http only).

Do you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default
is "Y"): y
WinRM has been updated to receive requests.
WinRM service type changed successfully.
WinRM service started.
Configured LocalAccountTokenFilterPolicy to grant administrative rights remotely to local users.
WinRM has been updated for remote management.
Created a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.
WinRM firewall exception enabled.

Требования к удаленному управлению SharePoint PowerShell

Чтобы выполнять командлеты SharePoint PowerShell на удаленном компьютере с помощью службы WinRM, должны соблюдаться некоторые дополнительные требования.
  1. Требуется наличие доступа к идентификатору пользователя с правами, достаточными для выполнения этих команд. Эти требования действуют независимо от того, выполняются ли командлеты SharePoint удаленно или локально. Идентификатор пользователя должен соответствовать следующим требованиям.

    • Он должен являться членом локальной группы безопасности WSS_ADM_WGP на компьютере, на котором выполняются команды.
    • Он должен являться членом роли SharePoint_Shell_Access SQL Server в базе данных конфигурации.
    • Он должен обладать доступом к базе данных контента, для управления которой применяется.
    Управление этими требованиями может осуществляться с помощью командлетов SPShellAdmin. Если используется командлет Add-SPShellAdmin для добавления идентификатора пользователя в роль SharePoint_Shell_Admin, требуется наличие сопоставления с ролью Security_Admin в экземпляре SQL и ролью db_owner в соответствующих базах данных. Командлет Add-SPShellAdmin необходимо выполнить для каждой базы данных контента, к которой должен иметь доступ указанный идентификатор пользователя.
  2. Выделите один сервер в ферме в качестве сервера, который всегда будет использоваться для удаленного управления. На этом сервер увеличьте значение параметра конфигурации службы WinRM MaxMemoryPerShellDB до достаточно крупного значения (512 или 1024). Этот параметр ограничивает объем памяти, который может использоваться одним удаленным процессом. Увеличение этого значения позволяет выполнять длительные команды без возникновения ошибок исключений OutOfMemory. Ниже показаны команда, отображающая значения параметров конфигурации, а также ее выходные данные.

    winrm get winrm/config/winrs


    Копировать код
    Winrs
        AllowRemoteShellAccess = true
        IdleTimeout = 180000
        MaxConcurrentUsers = 5
        MaxShellRunTime = 2147483647
        MaxProcessesPerShell = 15
        MaxMemoryPerShellMB = 150
        MaxShellsPerUser = 5
     Winrs    AllowRemoteShellAccess = true    IdleTimeout = 180000    MaxConcurrentUsers = 5    MaxShellRunTime = 2147483647    MaxProcessesPerShell = 15    MaxMemoryPerShellMB = 150    MaxShellsPerUser = 5
    Чтобы изменить значение параметра MaxMemoryPerShellDB, введите следующую команду Windows PowerShell в командной консоли SharePoint 2010.

    Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024
  3. Необходимо использовать проверку подлинности поставщика учетных данных безопасности (CredSSP). Этот механизм проверки подлинности был представлен в ОС Windows Vista и позволяет приложению делегировать учетные данные с одного компьютера на другой (этот процесс называется двойным переходом). Это позволяет предоставлять учетные данные, которые используются в командлетах SharePoint PowerShell для взаимодействия с сервером Microsoft SQL Server, на котором размещаются базы данных SharePoint. Если поставщик CredSSP не используется, при попытке удаленного выполнения командлета SharePoint с большой долей вероятности отображается сообщение, свидетельствующее о недоступности фермы. В выходных данных показанной выше команды Winrm get winrm/config/service обратите внимание на параметр CredSSP, которому присвоено значение False. Изменить параметры конфигурации WinRM можно несколькими способами, в том числе с помощью групповой политики, скриптов входа и командной строки. Чтобы включить проверку подлинности CredSSP через интерфейсы командной строки, выполните следующие задачи.

    1. На компьютере, с которого осуществляется удаленное управление, например на настольном ПК под управлением ОС Windows 7, введите следующую команду (в качестве параметра Web1 укажите сервер SharePoint). Введите "Y" в ответ на запрос о подтверждении включения проверки подлинности CredSSP.

      Enable-WSManCredSSP -role client -DelegateComputer Web1
    2. На сервере SharePoint, для которого осуществляется удаленное управление, введите команду

      Enable-WSManCredSSP -role server
    Gg550867.Tip(ru-ru,office.14).gifСовет.
    Дополнительные сведения о поддержке механизма многократного перехода в службе WinRM см. в статье http://msdn.microsoft.com/ru-ru/library/ee309365(v=VS.85).aspx.

Использование удаленного управления WinRM

Ниже приведены примеры команд, которые используются для запуска удаленного сеанса для удаленного управления фермой SharePoint или отдельным сервером SharePoint.

Gg550867.security(ru-ru,office.14).gifБезопасностьПримечание.
Чтобы ограничить набор команд Windows PowerShell, доступных пользователю во время удаленного сеанса, воспользуйтесь параметром -ConfigurationName командлета New-PSSession или командлетом Proxy. Дополнительные сведения см. в записи блога, посвященной расширению и изменению команд с помощью прокси, которая доступна по адресу http://blogs.msdn.com/powershell/archive/2009/01/04/extending-and-or-modifing-commands-with-proxies.aspx (Возможно, на английском языке).
При вводе первой команды отображается диалоговое окно, в котором необходимо ввести пароль. Этот пароль и соответствующее имя пользователя сохраняются в переменной $Cred, которая используется во второй команде — New-PSSession. Эта команда устанавливает постоянный сеанс с удаленным сервером. Если возможности удаленного управления Windows PowerShell не используются, создавать постоянный сеанс не обязательно. Однако, если постоянный сеанс установлен, при вызове удаленной команды, которая содержит командлет SharePoint, в каждую команду Invoke-Command необходимо включить командлет PSSnapin. Третья команда, Invoke-Command PSSnapin, позволяет выполнять командлеты SharePoint PowerShell на удаленном сервере.
Ссылка на постоянный сеанс хранится в переменной $sess. С помощью этой переменной можно перенаправлять любые нужные команды на удаленный сервер. В следующем примере командлет Get-SPServiceInstance вводится в блок скрипта, который представляет собой область в фигурных скобках ({ }). В выходных данных командлета Get-SPServiceInstance возвращается состояние служб в ферме SharePoint.
Invoke-Command -Session $s -ScriptBlock {get-SPServiceInstance}

Gg550867.Important(ru-ru,office.14).gifВажно!
В блок скрипта можно вводить несколько команд на отдельных строках или на одной строке, разделяя их точками с запятой (;). Если в блок скрипта вводится только одна команда, вводить точку с запятой необязательно, однако для большей наглядности рекомендуется указывать этот знак. Также можно использовать локальные переменные для создания удаленного блока скрипта, как показано в следующем примере.
Командлет Windows PowerShell Invoke-Command обеспечивает взаимодействие со множеством сеансов как на одном, так и на разных серверах, с настольного ПК. С его помощью можно одновременно запускать и параллельно выполнять несколько задач администрирования. Тем не менее, если эти задачи выполняются в течение длительного времени, управление будет возвращено только после выполнения команды на удаленном компьютере. Такой механизм называется интерактивным выполнением команд. При необходимости можно выполнять команды асинхронно в виде фоновых заданий, что позволяет немедленно возвращать управление в командную строку Windows PowerShell и сразу же продолжать выполнение последующих команд. Для этого добавьте в командлет Invoke-Command параметр -AsJob или воспользуйтесь командлетом Start-Job. Такой подход позволяет уменьшить затраты времени на выполнение задач администрирования по сравнению с их последовательным выполнением. Например, существенная экономия времени достигается в процессе обновления, когда в каждом сеансе выполняется обновление с подключением баз данных, а время, затрачиваемое на обновление баз данных, ограничивается только доступными ресурсами сервера SQL Server.
Если на отдельном сервере требуется выполнить большое число коротких задач, чтобы не вводить много раз командлет Invoke-Command, воспользуйтесь одним из следующих подходов.
  • Создайте интерактивный сеанс с этим сервером с помощью команды Enter-PSSession $sess. Приглашение командной строки изменится с PS C:\Users\<идентификатор_пользователя> (здесь <идентификатор_пользователя> — имя текущего пользователя), на [<имя_удаленного_сервера>]: PS C:\Users\<учетные_данные_удаленного_сеанса>\Documents (здесь <учетные_данные_удаленного_сеанса> — идентификатор пользователя, который применялся при проверке подлинности CredSSP. Такой вид командной строки напоминает о том, что выполняется передача команд на удаленный сервер. Чтобы вернуться в интерактивный режим на локальном компьютере, введите Exit-PSSession или выполните выход.
  • Используйте командлет удаленного управления Import-PSSession, также известный как командлет неявного удаленного управления, для импорта команд из удаленного сеанса в локальный сеанс Windows PowerShell. Дополнительным преимуществом командлета Import-PSSession является возможность взаимодействовать с локальной файловой системой и SharePoint так, как будто выполнен локальный вход на сервер SharePoint. По умолчанию командлет Import-PSSession импортирует все команды, за исключением тех, имена которых совпадают с именами команд, открытых в текущем сеансе. Также можно импортировать подмножество команд и указать для них префикс, что позволит явно отделить локальные команды от удаленных. В следующем примере ко всем командлетам SPSite в качестве префикса добавляется слово Remote, определяющее удаленные команды.

    Import-PSSession -session $sess -CommandName *-spsite -Prefix Remote


    Копировать код
    M ModuleType Name                      ExportedCommands                          
    ---------- ----                      ----------------                          
    Script     tmp_1833f7bc-b269-4229... {Set-SPSite, Backup-SPSite, Get-SPSite,...
    
    В этом примере можно использовать командлеты SPSite так же, как локальные команды. Например, командлет Get-RemoteSPSite возвращает все семейства сайтов, соответствующие заданным условиям. Эти импортированные команды хранятся во временном модуле, который удаляется по завершении сеанса. Чтобы создать постоянный модуль, который можно использовать в будущих сеансах, воспользуйтесь командлетом Export-PSSession. Импортированные команды по-прежнему выполняются в удаленном сеансе, из которого они были импортированы, в связи с чем их выполнение может длиться дольше по сравнению с локальными командами.
После выполнения всех задач можно удалить постоянное подключение между локальным и удаленным компьютерами с помощью команды Remove-PSSession $sess.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения об удаленном управлении Windows PowerShell см. в главе 4 карманного руководства администратора Windows PowerShell 2.0 (автор Уильям Стэйнек (William Stanek), Microsoft Press, 2009 г.), которая посвящена использованию сеансов, заданий и удаленного управления. Также см. статью, посвященную краткому обзору возможностей удаленного управления в версии 2.0 в журнале TechNet, которая расположена по адресу http://technet.microsoft.com/ru-ru/magazine/2008.08.windowspowershell.aspx. Кроме того, вы можете ознакомиться с записью блога по адресу http://blogs.technet.com/otto/archive/2007/02/09/sample-vista-ws-man-winrm-commands.aspx (Возможно, на английском языке), в которой описываются некоторые полезные команды WS-MAN (WinRM).


Копировать код
$url = "http://contoso.com"
$myscript = "get-spsite $url"
$sb = [scriptblock]::Create($myscript)
Invoke-Command $sess -ScriptBlock $sb


Копировать код
WARNING: column "PSComputerName" does not fit into the display and was removed.

TypeName                         Status   Id
--------                         ------   --
Business Data Connectivity       Online   3ad4d004-9ae3-4810-94bf-76cc43c9d507
Microsoft SharePoint Foundati... Online   81cc6474-fd6f-42ad-a932-25d67cff8cc1
Microsoft SharePoint Foundati... Disabled cb3b976c-b451-4abe-b808-0c6d191ccd3d
Microsoft SharePoint Foundati... Online   5bac9c93-483a-4901-ae46-f6f7ae0a12a8
Central Administration           Online   0c24457f-b58e-4daa-895e-4acd35ef7543
Microsoft SharePoint Foundati... Online   155570fa-0d4c-495d-9f31-5250e83bdd75
Microsoft SharePoint Foundati... Disabled c25ae170-c07d-48db-97b3-73b0d9b47e94
SharePoint Foundation Help Se... Online   8af8b8b1-92cb-48d2-8864-20a7e191d7c2


Копировать код
$cred = Get-Credential contoso\spfarm
$sess = New-PSSession Web1 -Authentication CredSSP -Credential $cred
Invoke-Command -Session $sess -ScriptBlock '
   {ADD-PSSnapin Microsoft.SharePoint.PowerShell;}

Работа с командной консолью SharePoint 2010

Чтобы открыть командную консоль SharePoint 2010, в меню "Пуск" последовательно выберите пункты "Программы > Продукты Microsoft SharePoint 2010 > Командная консоль SharePoint 2010", как показано на рис. 5-2.
Запуск Windows PowerShell
Рис. 5-2. Доступ к командной консоли SharePoint 2010
Командная консоль SharePoint 2010 поддерживает настройку и отличается от открывающейся по умолчанию консоли Windows PowerShell, ярлык для которой обычно располагается в панели задач. В свойствах ярлыка командной консоли SharePoint 2010 можно увидеть команду, которая выполняется при его запуске.
Этот ярлык ссылается на файл Sharepoint.ps1, в котором содержится пример профиля Windows PowerShell, аналогичного любому другому скрипту Windows PowerShell. В этом файле хранятся часто используемые элементы, которые должны автоматически загружаться при запуске сеанса Windows PowerShell. В связи с этим профили, как и любые другие файлы скриптов, могут содержать функции, псевдонимы и переменные, а также реализовывать загрузку любых необходимых расширений, оснасток или модулей Windows PowerShell. Оснастка Windows PowerShell (PSSnapin) — это программа .NET, которая скомпилирована в DLL-файлы и содержит новые командлеты, функции или поставщики. В комплект поставки Windows PowerShell входит несколько оснасток, в том числе Microsoft.PowerShell.Core, Microsoft.PowerShell.Host и Microsoft.PowerShell.WSMan.Management, а также модули, такие как ActiveDirectory, FailoverClusters и WebAdministration. По мере установки на компьютер других продуктов становятся доступны другие дополнительные расширения.
Основная задача файла профиля SharePoint заключается в загрузке оболочки Windows PowerShell для оснастки SharePoint, что позволяет использовать новые командлеты для SharePoint. Помимо сигнатуры, в файле профиля SharePoint содержится следующий код.
В этом коде получается версия Windows PowerShell и проверяется, превышает ли номер версии значение 1. Затем, если это значение больше 1, загружается потоковая модель, позволяющая повторно использовать первый поток. После этого загружается оснастка SharePoint PowerShell, а каталог изменяется на домашнюю папку (например, C:\users\<идентификатор_пользователя>), где параметр идентификатор_пользователя определяет пользователя, выполнившего вход в систему. Дополнительные сведения о SharePoint, Windows PowerShell и потоковой модели см. в боковом примечании, посвященном рекомендациям по использованию памяти при работе с Windows PowerShell, в этой главе.
В командную консоль SharePoint 2010 загружается не только оснастка SharePoint PowerShell. Это позволяет использовать не только командлеты SharePoint, но и другие командлеты из загружаемых оснасток. Чтобы просмотреть список оснасток в порядке их загрузки, введите Get-PSSnapin. Выходные данные этой команды должны выглядеть приблизительно следующим образом.

Gg550867.note(ru-ru,office.14).gifПримечание.
Если вы разрабатываете собственные скрипты, которые могут вызываться из командной строки или двойным щелчком мыши в проводнике, и если эти скрипты содержат команды Windows PowerShell для SharePoint, то необходимо убедиться, что в скрипты включена команда, устанавливающая потоковую модель и загружающая оснастку Windows PowerShell для SharePoint. При вызове скрипта из консоли Windows PowerShell можно использовать тег #requires в верхней его части.

Настройка консоли в соответствии с требованиями рабочих сред

Файл профиля на выделенном компьютере администратора достаточно часто подвергается изменениям. Профиль можно изменить, реализовав в нем следующие возможности:
  • Включение в профиль всех оснасток и модулей, используемых ИТ-специалистами организации или отдела.
  • Отслеживание всех выполняемых команд Windows PowerShell.
  • Изменение приглашения командной строки (в него включается имя сервера). В организациях с большим числом серверов весьма вероятно выполнение задачи администрирования на неверном сервере, поэтому любые данные, позволяющие определить конкретный сервер, на котором выполняются задачи, будут крайне полезны для администратора. Для этого можно настроить заголовок окна, включив в него имя сервера.
Например, настраиваемый профиль может содержать следующий код.
Поскольку скрипт профиля выполняется при каждом запуске командной консоли SharePoint 2010, он должен содержать подпись. Дополнительные сведения о настройке консоли можно найти в статье http://technet.microsoft.com/ru-ru/library/ee156814.aspx (Возможно, на английском языке).

Копировать код
<# ***********************************************************
 Copyright (c)2010, Contoso, All Rights Reserved
 *************************************************************
Contoso PowerShell Profile - ContosoProfile.ps1
Author: Peter Connelly
Purpose: This profile sets the PowerShell window size, font and title
and loads the SharePoint snap-in
History: Version 1.0 01/02/2010 First version
#>
# Track all Windows PowerShell commands
$profilename = $MyInvocation.MyCommand.Name
$profilepath = $MyInvocation.MyCommand.Path
$transcriptFile = "C:\Contoso\Logs\Powershell_$profilename.log"
Start-Transcript $transcriptFile -append –force
Write-Output "Starting profile: $profilepath"

# Command from SharePoint Server 2010 profile file – SharePoint.ps1
$ver = $host | select version
if ($ver.Version.Major -gt 1)  {$Host.Runspace.ThreadOptions = "ReuseThread"}
Add-PsSnapin Microsoft.SharePoint.PowerShell
Set-location $home

# Check that this is a command-line interface and not the ISE
if ($host.name –eq "ConsoleHost")
{
  $width = 80
  $sizeWindow = new-object System.Management.Automation.Host.Size $width,40
  $sizeBuffer = new-object System.Management.Automation.Host.Size $width,9999
  <# Check to adhere to the following rules:
  The buffer width can't be resized to be narrower than the window's current 
  width plus the window's width can't be resized to be wider than the 
  buffer's current width. #>
  $S = $Host.UI.RawUI
  if ($s.WindowSize.width -gt $width)
  {
        $s.WindowSize = $sizeWindow
        $s.BufferSize = $sizeBuffer
  } else {
        $s.BufferSize = $sizeBuffer
        $s.WindowSize = $sizeWindow
  }
}
# Set foreground, background color and window title
$s.ForegroundColor = "Yellow";$s.BackgroundColor = "DarkBlue";
$s.WindowTitle = "$env:computername"
# #############################################################
# End of ContosoProfile.ps1
# #############################################################

Общие сведения о командлетах

Командлеты Window PowerShell — это служебные программы, построенные на базе программных интерфейсов (в случае с SharePoint 2010 в качестве интерфейсов выступают модуль объекта и веб-службы SharePoint), с помощью которых администраторы могут выполнять определенные задачи.
В общем случае в командлетах используется пара "глагол-существительное". Существительное задает объект, относительно которого требуется получить сведения или с которым необходимо совершить определенные действия, а глагол определяет действия, которые требуется предпринять с указанным объектом. Глаголы и существительные всегда разделяются дефисом без пробелов. К командлетам SharePoint добавляется префикс SP. Например, чтобы получить (глагол, англ. — get) сведения обо всех базах данных контента (существительное, англ. — content database) в ферме, необходимо использовать следующий командлет SharePoint (ниже показаны выходные данные этого командлета).
PS C:\Users\Peter> Get-SPContentDatabase
В Windows PowerShell представлено несколько командлетов, обеспечивающих работу с другими командлетами. В качестве примера можно привести командлеты Get-Command (псевдоним — gcm) и Get-Help (псевдоним — help). Псевдонимами называются сокращенные имена командлетов. С помощью командлета Get-Command осуществляется поиск командлетов. С помощью командлета Get-Help можно получить общие сведения о командлете после его извлечения. Применение командлета Get-Help показано в разделе "Получение справки" этой главы. В следующем примере с помощью командлета Get-Command выполняется поиск всех командлетов, связанных с SharePoint.

Gg550867.note(ru-ru,office.14).gifПримечание.
Если был введен однострочный скрипт Windows PowerShell или не предоставлены все необходимые параметры, в Windows PowerShell отображается запрос на ввод параметра или начинается новая строка (сочетание знаков >>), в которую можно ввести дополнительные команды. По завершении ввода нажмите клавишу ВВОД, чтобы выполнить код в Windows PowerShell. Из-за ограничений на размер страницы многие команды в этой главе показаны на нескольких строках несмотря на то, что их можно вводить на одной строке. Помните, что клавишу ВВОД следует нажимать только в тот момент, когда требуется выполнить скрипт.
В показанном выше наборе команд принимаются выходные данные командлета Get-Command, которые передаются в командлет sort. Этот командлет выполняет сортировку данных в порядке "существительное-глагол". Это позволяет отображать вместе командлеты SharePoint, управляющие одним объектом, которые далее сортируются по глаголу. Чтобы уменьшить необходимость прокрутки в командной консоли SharePoint 2010, отсортированные данные передаются в командлет format-wide. Такое сочетание командлетов Windows PowerShell достаточно распространено. Выходные данные этого набора будут выглядеть примерно следующим образом.

Gg550867.note(ru-ru,office.14).gifПримечание.
Рассмотрим еще один командлет, который аналогичен Get-Command и используется для работы с другими командлетами, особенно при создании собственных команд и скриптов, — командлет Measure-Command. С помощью этой команды можно определить время, затрачиваемое на выполнение командлетов или скриптов. Кроме того, для отладки коротких блоков скриптов можно использовать командлет Trace-Command.


Копировать код
Start-SPAdminJob           Get-SPAlternateURL         New-SPAlternateURL
Remove-SPAlternateURL      Set-SPAlternateURL         Install-SPApplicationC...
Start-SPAssignment         Stop-SPAssignment          Get-SPAuthenticationPr...
New-SPAuthenticationPro... Get-SPBackupHistory        Move-SPBlobStorageLoca...
Get-SPBrowserCustomerEx... Set-SPBrowserCustomerEx... Copy-SPBusinessDataCat...
…..(not all output shown)
Set-SPWebApplicationHtt... Get-SPWebPartPack          Install-SPWebPartPack
Uninstall-SPWebPartPack    Get-SPWebTemplate          Install-SPWebTemplate
Set-SPWebTemplate          Uninstall-SPWebTemplate    Get-SPWorkflowConfig
Set-SPWorkflowConfig


Копировать код
PS C:\Users\Peter>Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell" |
>>sort noun, verb |Format-Wide -Column 3
>><ENTER>


Копировать код
Id               : a1d5c96c-a41a-43b3-bc5d-3f8a93b26046
Name             : WSS_Content_a2fde53006e04bf5aae434ffd3c8a19c
WebApplication   : SPWebApplication Name=SharePoint - 80
Server           : SQL
CurrentSiteCount : 1

Id               : 363b11a3-6947-42f6-9df4-665eeff59c83
Name             : SPF_TeamsDB
WebApplication   : SPWebApplication Name=SPF_Teams
Server           : SQL
CurrentSiteCount : 1

Работа с объектами

В SharePoint используется множество объектов, при этом число объектов в SharePoint Server ожидаемо превышает их число в SharePoint Foundation. В рамках этой книги вы, возможно, уже ознакомились со связями между этими объектами. Например, любая ферма SharePoint может содержать несколько веб-приложений, однако при этом имеет только одну базу данных конфигурации. Имена большинства командлетов SharePoint позволяют с легкостью определить объекты, для управления которыми они используются. К примеру, командлеты SPFarm используются для извлечения сведений о ферме SharePoint, а также ее резервного копирования и восстановления. Например, командлет SPFarmConfig позволяет извлекать и устанавливать свойства фермы.
Тем не менее, имена некоторых командлетов не так однозначны. Например, командлет SPSite используется для управления семействами сайтов. В главе 2, содержащей общие сведения об архитектуре SharePoint 2010, поясняется, что создание семейства сайта возможно только при наличии веб-приложения (т. е. если используется объект SPWebApplication). После создания семейства сайтов для создания сайта используется шаблон сайта. В объектной модели SharePoint такой сайт называется веб-сайтом, а не сайтом, в результате чего ему соответствует объект SPWeb. Это может в определенной степени вводить в замешательство, поскольку термин "веб-сайт" часто сокращается до "сайт". При этом в объектной модели SharePoint термин "сайт" также часто выступает в качестве сокращения для понятия "семейство сайтов". Поскольку такая терминология постоянно используется разработчиками в различных версиях SharePoint, ИТ-специалистам такое именование будет более привычным.
  • Таким образом, веб-сайт определяется объектом SPWeb.
  • Семейство сайтов, которое содержит коллекцию веб-сайтов, управляется с помощью объекта SPSite.
На рис. 5-3 показаны самые распространенные объекты и связи между ними (также показан объект SPSiteCollection, который представляет собой коллекцию объектов SPSite).
Текущий набор встроенных командлетов не позволяет полностью охватить все объекты SharePoint, однако для управления ими при необходимости можно создавать новые командлеты. Чтобы определить объекты, связанные с командлетами SharePoint PowerShell, а также число командлетов для каждого объекта, воспользуйтесь командами, приведенными в следующем примере (показана часть выходных данных).
Основные объекты SharePoint и их взаимосвязи

Копировать код
PS C:\Users\peter> Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell" |
>>sort noun, verb | group-object -property noun
>><ENTER>


Копировать код
Name        : Microsoft.PowerShell.Diagnostics
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains Windows Eventing and
              Performance Counter cmdlets.

Name        : Microsoft.WSMan.Management
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains cmdlets (such as 
              Get-WSManInstance and Set-WSManInstance) that are used by the
              Windows PowerShell host to manage WSMan operations.

Name        : Microsoft.PowerShell.Core
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains cmdlets used to manage
              components of WindowsPowerShell.

Name        : Microsoft.PowerShell.Utility
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains utility Cmdlets used to
              manipulate data.

Name        : Microsoft.PowerShell.Host
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains cmdlets (such as Start-
              Transcript and Stop-Transcript) that are provided for use with the
              Windows PowerShell console host.

Name        : Microsoft.PowerShell.Management
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains management cmdlets used to
              manage Windows components.

Name        : Microsoft.PowerShell.Security
PSVersion   : 2.0
Description : This Windows PowerShell snap-in contains cmdlets to manage Windows
              PowerShell security.

Name        : Microsoft.SharePoint.PowerShell
PSVersion   : 1.0
Description : Register all administration Cmdlets for Microsoft SharePoint Server.


Копировать код
$ver = $host | select version
if ($ver.Version.Major -gt 1)  {$Host.Runspace.ThreadOptions = "ReuseThread"}
Add-PsSnapin Microsoft.SharePoint.PowerShell
Set-location $home


Копировать код
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe  -NoExit  " &
   ' C:\Program Files\Common Files\Microsoft Shared\Web Server 
   Extensions\14\CONFIG\POWERSHELL\Registration\\sharepoint.ps1 ' "


Копировать код
Count Name                      Group
----- ----                      -----
    1 SPAdminJob                {Start-SPAdminJob}
    4 SPAlternateURL            {Get-SPAlternateURL, New-SPAlternateURL, Rem...
    1 SPApplicationContent      {Install-SPApplicationContent}
    2 SPAssignment              {Start-SPAssignment, Stop-SPAssignment}
...(not all output shown)
    6 SPWeb                     {Export-SPWeb, Get-SPWeb, Import-SPWeb, New-...
    4 SPWebApplication          {Get-SPWebApplication, New-SPWebApplication,...
    1 SPWebApplicationExtension {New-SPWebApplicationExtension}
    2 SPWebApplicationHttpTh... {Disable-SPWebApplicationHttpThrottling, Ena...
    2 SPWebApplicationHttpTh... {Get-SPWebApplicationHttpThrottlingMonitor, ...
    3 SPWebPartPack             {Get-SPWebPartPack, Install-SPWebPartPack, U...
    4 SPWebTemplate             {Get-SPWebTemplate, Install-SPWebTemplate, S...
    2 SPWorkflowConfig          {Get-SPWorkflowConfig, Set-SPWorkflowConfig}
Рис. 5-3. Основные объекты SharePoint и их взаимосвязи

Общие сведения о свойствах и методах

В SharePoint любые сведения об объекте хранятся в виде элементов данных и значений, которые называются свойствами и описывают состояние объекта. Например, объект SPContentDatabase содержит все сведения о базах данных контента в ферме.
Объекты могут содержать не только свойства, но и действия, определяющие различные способы управления ими. В терминах объектно-ориентированного программирования эти действия (и другие способы выполнения действий в отношении объекта) называются методами. Чтобы определить свойства и методы объекта SPSite, воспользуйтесь командлетами, приведенными в следующем примере (показана часть выходных данных).
PS C:\Users\peter> Get-SPSite | Get-Member

Gg550867.Important(ru-ru,office.14).gifВажно!
По возможности рекомендуется всегда передавать данные командлета Get-SP<существительное> в командлет Get-Member. Это позволяет извлекать любые необходимые сведения об объекте.
Проблемы с производительностью при выполнении команд Windows PowerShell в рабочих средах
Чтобы найти все семейства сайтов в ферме, можно использовать командлет Get-SPSite. Однако в этом случае в выходных данных будут содержаться только URL-адреса семейств сайтов. По умолчанию в целях повышения производительности отображается только свойство URL-адреса. Это связано с тем, что семейства сайтов обладают множеством свойств; соответственно, отображение всех свойств для большого числа семейств сайтов повлечет за собой потребление большого объема памяти и приведет к длительному выполнению команды. Свойство URL-адреса кэшируется и поэтому отображается практически мгновенно. В связи с этим настоятельно рекомендуется при выполнении этой команды задавать отображение небольшого числа свойств.
Для отображения других свойств (помимо заданных по умолчанию) можно использовать командлет select Windows PowerShell со знаком вертикальной черты (|). Чтобы вывести список всех значений свойств, можно использовать подстановочный знак (*) с выражением select, как показано в следующем примере.
PS C:\Users\Peter> Get-SPSite "http://teams" | select *
Чтобы получить список всех семейств сайтов в ферме, а также имя базы данных контента, в которой они хранятся (в выходных данных отображается только URL-адрес семейства сайтов и имя базы данных контента), необходимо использовать команды, показанные в следующем примере (также показан пример выходных данных).
PS C:\Users\peter> Get-SPSite | select url, contentdatabase


Копировать код
Url                                     ContentDatabase
---                                     ---------------
http://MySite                           SPContentDatabase Name=Contoso_MySiteDB
http://MySite/personal/peter            SPContentDatabase Name=Contoso_PersonalDB
http://MySite/personal/erin             SPContentDatabase Name=Contoso_PersonalDB
http://intranet.contoso.msft            SPContentDatabase Name=Contoso_IntranetDB
http://teams                            SPContentDatabase Name=Contoso_TeamsDB
http://teams/sites/Finance              SPContentDatabase Name=Contoso_TeamsDB


Копировать код
ApplicationRightsMask                 : FullMask
ID                                    : cbf3290e-000e-4768-953c-99a983430283
SystemAccount                         : SHAREPOINT\system
Owner                                 : CONTOSO\spadmin
SecondaryContact                      : CONTOSO\peter
GlobalPermMask                        : FullMask
IISAllowsAnonymous                    : False
Protocol                              : http:
HostHeaderIsSiteName                  : False
HostName                              : teams
Port                                  : 80
...(not all output shown)
AllowDesigner                         : True
AllowRevertFromTemplate               : False
AllowMasterPageEditing                : False
ShowURLStructure                      : False


Копировать код
TypeName: Microsoft.SharePoint.SPSite

Name                                  MemberType Definition
----                                  ---------- ----------
AddWorkItem                           Method     System.Guid AddWorkItem(Sys...
BypassUseRemoteApis                   Method     System.Void BypassUseRemote...
CheckForPermissions                   Method     System.Void CheckForPermiss...
Close                                 Method     System.Void Close()
ConfirmUsage                          Method     bool ConfirmUsage()
Delete                                Method     System.Void Delete(), Syste...
Dispose                               Method     System.Void Dispose()
…
ToString                              Method     string ToString()
UpdateValidationKey                   Method     System.Void UpdateValidatio...
VisualUpgradeWebs                     Method     System.Void VisualUpgradeWe...
AdministrationSiteType                Property   Microsoft.SharePoint.SPAdmi...
AllowDesigner                         Property   System.Boolean AllowDesigne...
AllowMasterPageEditing                Property   System.Boolean AllowMasterP...
….(not all output shown)
WarningNotificationSent               Property   System.Boolean WarningNotif...
WebApplication                        Property   Microsoft.SharePoint.Admini...
WorkflowManager                       Property   Microsoft.SharePoint.Workfl...
WriteLocked                           Property   System.Boolean WriteLocked ...
Zone                                  Property   Microsoft.SharePoint.Admini...

Использование команд

В SharePoint используются стандартные команды (глаголы), которые присутствуют в других наборах командлетов. Кроме того, в SharePoint добавлен ряд новых команд. Ознакомиться с ними можно с помощью командлета Get-Command, как показано ниже.
Рассмотрим список самых популярных команд, связанных с SharePoint:
  • Get (получить) — запрос конкретного объекта или набора объектов; извлечение сведений об объекте. Например, с помощью этой команды можно получить сведения обо всех приложениях-службах. Команды Get — единственные, которые могут возвращать один или несколько объектов. Любые другие команды выполняются одновременно только для одного объекта.

    Get-SPServiceApplication
  • Set (задать) — изменение конкретного параметра объекта. Например, с помощью этой команды можно задать владельца семейства сайтов.

    Set-SPSite http://teams -OwnerAlias contoso\peter
  • New (создать) — создание нового экземпляра объекта, например нового семейства сайтов.


    Копировать код
    New-SPSite http://teams/sites/HR -OwnerAlias contoso\peter
    -Name "HR Team" -Template STS#0
  • Remove (удалить) — удаление экземпляра объекта, например семейства сайтов и всех его дочерних сайтов. Из-за опасного характера этой команды обычно требуется подтверждение выполняемого действия (параметр -confirm). Если этот параметр отсутствует, отображается сообщение с запросом на подтверждение действия, как показано ниже.


    Копировать код
    PS C:\Users\Peter> Remove-SPSite http://teams/sites/HR
    Confirm
    Are you sure you want to perform this action?
    Performing operation "Remove-SPSite" on Target "http://teams/sites/Finance".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
    (default is "Y"):y
В приведенных примерах активно используются параметры, которые представляют собой слова с префиксом в виде дефиса (-). В следующем разделе описывается командлет Get-Help, с помощью которого можно подробнее ознакомиться с доступными параметрами для разных командлетов.

Копировать код
PS C:\Users\Peter>Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell" |
>>sort verb | group verb | sort count -descending
>><ENTER>


Копировать код
Count Name                      Group
----- ----                      -----
  139 Get                       {Get-PluggableSecurityTrimmer, Get-SPAccessS...
  104 Set                       {Set-SPAccessServiceApplication, Set-SPAlter...
   88 New                       {New-SPAccessServiceApplication, New-SPAlter...
   77 Remove                    {Remove-PluggableSecurityTrimmer, Remove-SPA...
   11 Update                    {Update-SPFarmEncryptionKey, Update-SPInfoPa...
   10 Add                       {Add-PluggableSecurityTrimmer, Add-SPClaimTy...
   10 Install                   {Install-SPApplicationContent, Install-SPDat...
    8 Start                     {Start-SPAdminJob, Start-SPAssignment, Start...
    8 Import                    {Import-SPBusinessDataCatalogModel, Import-S...
    8 Export                    {Export-SPBusinessDataCatalogModel, Export-S...
    8 Uninstall                 {Uninstall-SPDataConnectionFile, Uninstall-S...
    7 Disable                   {Disable-SPBusinessDataCatalogEntity, Disabl...
    6 Enable                    {Enable-SPBusinessDataCatalogEntity, Enable-...
    6 Clear                     {Clear-SPLogLevel, Clear-SPMetadataWebServic...
    5 Stop                      {Stop-SPAssignment, Stop-SPEnterpriseSearchQ...
    4 Move                      {Move-SPBlobStorageLocation, Move-SPProfileM...
    3 Initialize                {Initialize-SPContentDatabase, Initialize-SP...
    3 Upgrade                   {Upgrade-SPContentDatabase, Upgrade-SPEnterp...
    3 Backup                    {Backup-SPConfigurationDatabase, Backup-SPFa...
    3 Restore                   {Restore-SPEnterpriseSearchServiceApplicatio...
    2 Resume                    {Resume-SPEnterpriseSearchServiceApplication...
    2 Test                      {Test-SPContentDatabase, Test-SPInfoPathForm...
    2 Suspend                   {Suspend-SPEnterpriseSearchServiceApplicatio...
    2 Revoke                    {Revoke-SPBusinessDataCatalogMetadataObject,...
    2 Mount                     {Mount-SPContentDatabase, Mount-SPStateServi...
    2 Grant                     {Grant-SPBusinessDataCatalogMetadataObject, ...
    2 Dismount                  {Dismount-SPContentDatabase, Dismount-SPStat...
    1 Merge                     {Merge-SPLogFile}
    1 Receive                   {Receive-SPSharedServiceApplicationInfo}
    1 Disconnect                {Disconnect-SPConfigurationDatabase}
    1 Unpublish                 {Unpublish-SPServiceApplication}
    1 Connect                   {Connect-SPConfigurationDatabase}
    1 Rename                    {Rename-SPServer}
    1 Restart                   {Restart-SPEnterpriseSearchQueryComponent}
    1 Copy                      {Copy-SPBusinessDataCatalogAclToChildren}
    1 Ping                      {Ping-SPEnterpriseSearchContentService}
    1 Publish                   {Publish-SPServiceApplication}

Получение справки

В Windows PowerShell реализована расширенная встроенная справочная система, для доступа к которой достаточно ввести команду help в интерфейсе командной строки. Это псевдоним командлета Get-Help. При необходимости можно получить справку даже по самому этому командлету, введя команду Get-Help Get-Help. В выходных данных этой команды отображается список с описанием командлета, его синтаксиса, параметров, с примерами и другими полезными сведениями. Также с помощью командлета Get-Help можно получить справку по базовому языку Windows PowerShell. Например, с помощью команд Get-Help foreach, Get-Help substring или Get-Help variables можно получить справку по соответствующим темам.
Gg550867.note(ru-ru,office.14).gifПримечание.
Встроенная справочная система — это один из лучших способов знакомства с оболочкой Windows PowerShell. Разработчикам, занимающимся созданием новых командлетов Windows PowerShell, настоятельно рекомендуется уделить внимание созданию собственных файлов справки. Помимо встроенной справки множество ресурсов можно найти в Интернете. Например, можно загрузить бесплатную справочную систему Windows PowerShell 2.0 для 32- или 64-разрядной версии по адресу http://www.primaltools.com/downloads/communitytools/ (Возможно, на английском языке).

Файлы справки

Командлет Get-Help осуществляет поиск сведений в XML-файлах, установленных на сервере. При установке SharePoint файлы справки устанавливаются вместе с оснасткой Windows PowerShell. Эти файлы располагаются в каталоге %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\CONFIG\PowerShell\Help или %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\CONFIG\PowerShell\Help\<языковой_стандарт>, где параметр "языковой_стандарт" определяет язык компьютера, например ru-ru. Имена файлов имеют формат <имя_dll_файла>-help.xml, например Microsoft.SharePoint.PowerShell.dll-help.xml, Microsoft.SharePont.Search.dll-help.xml или Microsoft.Office.Access.Server.dll-help.xml. Чтобы определить XML-файлы справки, используемые командлетами, введите следующую команду:
 

Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения о формате XML-файлов справки по командлетам, а также о создании собственных файлов справки для новых командлетов можно найти в записях блога по адресу http://blogs.msdn.com/powershell/archive/2006/09/14/Draft-Creating-Cmdlet-Help.aspx (Возможно, на английском языке) и http://blogs.msdn.com/powershell/archive/2008/12/24/powershell-v2-external-maml-help.aspx (Возможно, на английском языке).


Копировать код
:

Get-SPExcelBlockedFileType        Get-SPExcelDataProvider  
Remove-SPExcelDataProvider        Remove-SPExcelUserDefinedFunction
Set-SPExcelFileLocation

   HelpFile: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions
\14\CONFIG\PowerShell\Help\microsoft.office.access.server.dll-help.xml

Get-SPAccessServiceApplication    New-SPAccessServiceApplication 
Set-SPAccessServiceApplication

   HelpFile: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions
\14\CONFIG\PowerShell\Help\Microsoft.Office.Excel.Server.MossHost.dll-help.xml

Get-SPExcelDataConnectionLibrary   Get-SPExcelFileLocation
Get-SPExcelServiceApplication      Get-SPExcelUserDefinedFunction
New-SPExcelBlockedFileType         New-SPExcelDataConnectionLibrary
New-SPExcelDataProvider            New-SPExcelFileLocation
New-SPExcelServiceApplication      New-SPExcelUserDefinedFunction
Remove-SPExcelBlockedFileType      Remove-SPExcelDataConnectionL...
Remove-SPExcelFileLocation         Set-SPExcelDataConnectionLibrary
Set-SPExcelDataProvider            Set-SPExcelServiceApplication  
-- More –


Копировать код
PS C:\Users\Peter>Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell" |
>>sort helpfile, name |
>>Format-Wide name -column 2 -groupby helpfile | more
>><ENTER>

Справка по интегрированной среде сценариев

Помимо функции справки в командной строке доступен графический файл справки (WindowsPowerShellHelp.chm), который расположен в каталоге %SystemRoot%\Help\mui\<идентификатор_языка>, где параметр "идентификатор_языка" определяет язык установки, например 0409. Чтобы открыть графический файл справки при работе с интегрированной средой сценариев, выберите нужную команду и нажмите клавишу F1. Открывается CHM-файл, в котором отображается справка по выбранной команде, как показано на рис. 5-4.
Обратите внимание, что в CHM-файле содержится справка только по основным командлетам Windows PowerShell. Для получения справки по командлетам, относящимся к SharePoint, следует использовать командлет Get-Help командной консоли SharePoint 2010.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения о функции справки в оболочке Windows PowerShell, а также о возможностях ее настройки для отображения справки по псевдонимам, отключения локальной справки или принудительной загрузки справки в интегрированную среду сценариев непосредственно с сайта TechNet см. в статье http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2009/01/31/using-help-in-powershell-ise.aspx (Возможно, на английском языке). Корпорация Майкрософт рекомендует всегда проверять интерактивную справку, в которой представлены последние изменения и примеры. При использовании командлета Get-Help ссылка на интерактивную справку отображается в разделе связанных ссылок.
Справка Windows PowerShell
Рис. 5-4. Графическая справка Windows PowerShell

Использование параметров

Для получения справки по параметрам, которые можно использовать вместе с командлетом, введите Get-Help <командлет> или Get-Command <командлет> -syntax, где <командлет> — это имя командлета, для которого требуется получить сведения о параметрах. Например, командлет Get-Help New-SPSite или Get-Command New-SPSite -syntax отображает сведения о параметрах, связанных с командлетом New-SPSite. С командлетом Get-Help также связаны некоторые параметры, с помощью которых можно определить объем отображаемых сведений. При достаточно хорошем уровне знакомства с командлетом можно пропустить описание его действия и просто ознакомиться с примерами его использования (для этого введите Get-Help New-SPSite -examples).
Дополнительные сведения о параметрах, которые можно использовать с командлетом, представлены в разделе синтаксиса результатов справки, как показано в следующих выходных данных. Необязательные параметры заключаются в квадратные ([ ]), а значения, передаваемые в параметры, — в угловые (<>) скобки. В следующем примере показан раздел синтаксиса командлета Get-SPSite.
Обратите внимание, что командлет Get-SPSite можно использовать четырьмя способами, в каждом из которых присутствует параметр -AssignmentCollection. Параметр -AssignmentCollection относится к важному аспекту встроенного командлета SharePoint, который более подробно рассматривается в боковом примечании, посвященном рекомендациям по использованию памяти при работе с Windows PowerShell, в этой главе.
В первом из приведенных выше примеров синтаксиса обязательные параметры отсутствуют, в результате чего область действия командлета Get-SPSite распространяется на всю ферму или веб-приложение. В трех остальных вариантах синтаксиса предусмотрен обязательный параметр, который определяет область действия на уровне семейства сайтов, базы данных контента или набора семейств сайтов, которые подписаны на общие параметры, компоненты и службы, как показано в следующем коде. Как и в случае с другими командлетами SPSite, в крупных установках этот командлет может возвращать большой объем выходных данных, в результате чего запросы к большому числу баз данных контента могут привести к существенному снижению производительности серверов SharePoint. Поэтому по умолчанию в выходных данных возвращаются сведения только о первых 20 объектах.
Это ограничение можно изменить с помощью параметра -limit, как показано в следующем примере, где возвращаются все семейства сайтов, хранящиеся в базе данных контента Contoso_TeamsDB.
Get-SPSite -ContentDatabase Contoso_TeamsDB -limit all
При необходимости можно задать значения, определяющие область действия. В случае с параметром -identity, где в качестве значения выступает URL-адрес, можно использовать подстановочный знак (*). При вводе команды help без параметров (по умолчанию) возвращается ограниченное описание команды.
Для получения дополнительных сведений воспользуйтесь параметром -detailed или -full. При вводе параметра -full отображаются дополнительные сведения о параметрах. Например, на следующей странице отображаются дополнительные сведения о параметре -identity.
В последних пяти строках выходных данных отображаются дополнительные сведения об использовании параметра -identity. Например, атрибут Required имеет значение True. Это означает, что параметр -identity является обязательным для командлета Get-SPSite. Атрибут Position имеет значение 1. Это означает, что если указать URL-адрес семейства сайтов непосредственно после командлета Get-SPSite, использовать параметр -identity будет не нужно, поскольку этот URL-адрес будет считан как удостоверение (URL-адрес) семейства сайтов. При этом будут отображаться все значения свойств семейства сайтов, которые существуют по управляемому пути к личному сайту, как показано в следующем примере.
Get-SPSite http://MySite/personal/* | Select *
Значения многих параметров заключены в угловые скобки и сопровождаются суффиксом PipeBind. Это означает, что такие параметры могут принимать объектные переменные определенного типа. Например, синтаксис [-ContentDatabase <SPContentDatabasePipeBind>] означает, что параметр -ContentDatabase может принимать объект базы данных контента SharePoint, который может быть передан в объект ContentDatabase в виде переменной или передан из результатов другого командлета. При передаче объекта в командлет вводить или использовать переменную не нужно. При передаче объекта из одного командлета в другой указывать параметр не нужно, поскольку в Windows PowerShell тип объекта проверяется и сопоставляется с соответствующим параметром. В следующем примере выводится список всех семейств сайтов, которые хранятся в любых базах данных контента, имена которых содержат подстроку "oso".
Get-SPContentDatabase | where {$_.name -match "oso"} | Get-SPSite -Limit 50
Командлет Get-SPContentDatabase возвращает набор баз данных контента, каждая из которых проверяется на соответствие заданным условиям. Командлет Where-object (псевдонимы where или ?) выступает в качестве цикла, проверяя каждый объект базы данных контента, возвращаемый из командлета Get-SPContentDatabase. Переменная $_ представляет один объект базы данных контента, а атрибут .name — свойство этой базы данных, которое требуется сопоставить с нашим запросом. Для этого используется оператор -match.
В Windows PowerShell используется ряд операторов, в том числе -eq (равно), -ne (не равно), -lt (меньше), -ge (больше или равно), -like (соответствует сочетанию подстановочных знаков) и -notlike (не соответствует сочетанию подстановочных знаков). Оператора -like, -notlike, -match и -notmatch используются для сопоставления с шаблоном. Чтобы определить, содержит ли значение совпадение с заданным выражением, в операторах -match и -notmatch используются регулярные выражения.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения об операторах Windows PowerShell см. в разделе, посвященном работе с выражениями и операторами, в главе 5 карманного руководства администратора Windows PowerShell 2.0, которая содержит данные об основных структурах Windows PowerShell (автор Уильям Стэйнек (William Stanek), Microsoft Press, 2009 г.).
Вместо оператора WHERE можно использовать параметр -filter, который обладает аналогичным синтаксисом и возвращает такие же результаты. Отличие заключается в том, что параметр -filter выполняется на сервере. Передача результатов командлета Get-SPContentDatabase в оператор WHERE влечет за собой обращение SQL к серверу, на котором выполняется клиент Windows PowerShell. Применение параметра -filter дает определенный выигрыш в производительности за счет использования функций фильтрации SQL вместо локального поиска. Обратите внимание, что при использовании параметра -filter командлету SPSite доступны только свойства Owner, SecondaryOwner и LockState. В некоторых командлетах реализованы дополнительные параметры, обеспечивающие фильтрацию выходных данных. Например, командлет SPWeb поддерживает фильтрацию выходных данных по шаблону или заголовку веб-сайта. Тем не менее, во многих случаях применение параметра -filter позволяет сэкономить время. Например, поиск всех сайтов блогов в ферме с 4300 веб-сайтами занимает около 1,2 с при использовании параметра -filter и около 15 минут, если применяется оператор WHERE. Ниже показано несколько примеров использования параметра -filter.
  • В этом примере возвращаются все семейства сайтов, основным владельцем которых является пользователь с именем peter.

    Get-SPSite -Filter {$_.Owner -eq "contoso\peter"}
  • В этом примере возвращаются все веб-сайты в семействе http://teams/sites/HR, которые были созданы на базе шаблона "Пустая рабочая область для собраний".

    Get-SPSite http://teams/sites/HR | Get-SPWeb -Filter {$_.Template -eq "STS#03"}
Gg550867.note(ru-ru,office.14).gifПримечание.
Если при создании нового семейства сайтов шаблон не указан или не найден, то веб-сайт необходимо создать как корневой сайт семейства. Для этого можно использовать команду New-SPWeb или выбрать соответствующий шаблон сайта при первом отображении семейства сайтов в браузере.
Чтобы получить сведения об установленных шаблонах и их идентификаторах, воспользуйтесь командлетом Get-SPWebTemplate. Ниже показан пример выходных данных этой команды.
В командлетах Get-SPSite и Get-SPSiteAdministration можно использовать два других вида фильтров на базе языка SQL: подстановочные знаки URL-адресов и регулярные выражения (-RegEx), например:
  • Get-SPSite http://intranet/sites/*
  • Get-SPSite "http://intranet/(sites|teams)/HR" -RegEx
Рекомендации по использованию памяти при работе с Windows PowerShell
По умолчанию Windows PowerShell выполняется в многопоточной среде, в которой каждые строка, функция или скрипт выполняются в собственном потоке ($host.Runspace.ThreadOptions == "Default"). Это может повлечь за собой утечки памяти. Как было показано в предыдущем разделе "Работа с командной консолью SharePoint 2010" этой главы, в командной консоли SharePoint 2010 каждые строка, функция или скрипт выполняются в первом потоке ($host.Runspace.ThreadOptions ="ReuseThread"), что позволяет уменьшить последствия проблемы, но не обеспечивает полное исключение утечек памяти. В этом разделе описываются командлеты Start-SPAssignment и Stop-SPAssignment. Они связаны с параметром -SPAssignmentCollection, который используется с некоторыми командлетами SharePoint и возвращает высвобождаемый объект. С точки зрения разработчика это объекты, реализующие интерфейс IDisposable. Если не реализовать надлежащее высвобождение этих объектов, при их использовании могут возникать утечки памяти. В частности, это относится к объектам SPSite, SPWeb и SPSiteAdministration. При использовании связанных с этими объектами командлетов в одном конвейере, если для их хранения не используются переменные, по завершении конвейера занимаемая память автоматически высвобождается. Если используется длинный конвейер, в рамках которого извлекается большое число объектов, это может привести к нехватке памяти на сервере SharePoint, что может заметно снизить производительность запросов к страницам на этом сервере.
При хранении любого из этих трех объектов в переменной необходимо высвобождать память, выделяемую соответствующим объектам. В следующих примерах показаны основные способы использования этих объектов с переменными и высвобождения памяти.
  • Простой способ — использование командлетов SPAssignment, в которых все объекты находятся в глобальной памяти, которая высвобождается при вызове командлета Stop-SPAssignment.


    Копировать код
    Start-SPAssignment -Global
    $sc = Get-SPSite http://intranet
    $sc.Title
    Stop-SPAssignment -Global
  • Расширенный способ — использование командлета SPAssignment с отслеживанием состояния памяти, выделяемой конкретным переменным. В следующем примере с помощью командлета Start-SPAssignment создается именованное хранилище, на которое указывает переменная $o, а также связанная с этим хранилищем переменная $sc, в которой сохраняются сведения об объекте семейства интернет-сайтов. После этого командлет Stop-SPAssignment высвобождает память, связанную с именованным хранилищем.


    Копировать код
    $o = Start-SPAssignment
    $sc = $o | Get-SPSite http://intranet
    Get-SPSite -Limit all
    $sc.Title
    $o | Stop-SPAssignment
  • Разработчики решений на платформе SharePoint могут применять схожий способ. Например, можно использовать переменные в одной строке Windows PowerShell, высвобождая выделенную им память в конце этой строки.


    Копировать код
    $sc = New-SPSite("http://Intranet"); $sc.Title; $sc.Dispose()
    В этом случае объект семейства сайтов сохраняется в переменной $sc. Следующая команда выводит название семейства сайтов интрасети, а последняя команда высвобождает память, в которой был сохранен объект семейства сайтов.

    Gg550867.note(ru-ru,office.14).gifПримечание.
    Для безопасного выполнения этой команды используйте следующий синтаксис.
    New-SPSite(http://intranet) | Select Title
Обратите внимание, что простой способ, подразумевающий вызов командлета SPAssignment, также может привести к возникновению проблем с памятью. Любые объекты, получаемые между командами Stop и Stop SPAssignment, сохраняются в глобальной памяти и не высвобождаются до тех пор, пока не будет выполнен командлет Stop-SPAssignment. При расширенном способе с вызовом командлета SPAssignment до выполнения командлета Stop-SPAssignment сохраняется только память, связанная с переменными, которые отслеживаются с помощью командлета SPAssignment. Соответственно, если для выполнения задачи требуется большой объем данных и необходимо избежать нехватки памяти на сервере SharePoint, рекомендуется применять расширенный метод с использованием командлета SPAssigment. Дополнительные сведения можно получить с помощью командлета Get-Help About_SPAssignment.

Копировать код
Name                 Title                                    LocaleId   Custom
----                 -----                                    --------   ------
GLOBAL#0             Global template                          1033       False
STS#0                Team Site                                1033       False
STS#1                Blank Site                               1033       False
STS#2                Document Workspace                       1033       False
MPS#0                Basic Meeting Workspace                  1033       False
MPS#1                Blank Meeting Workspace                  1033       False
MPS#2                Decision Meeting Workspace               1033       False
MPS#3                Social Meeting Workspace                 1033       False
MPS#4                Multipage Meeting Workspace              1033       False
CENTRALADMIN#0       Central Admin Site                       1033       False
WIKI#0               Wiki Site                                1033       False
BLOG#0               Blog                                     1033       False
SGS#0                Group Work Site                          1033       False
TENANTADMIN#0        Tenant Admin Site                        1033       False
ACCSRV#0             Access Services Site                     1033       False
ACCSRV#1             Assets Web Database                      1033       False
ACCSRV#3             Charitable Contributions Web Database    1033       False


Копировать код
PARAMETERS
    -Identity <SPSitePipeBind>
        Specifies the URL or GUID of the site collection to get.

        The type must be a valid URL, in the form http://server_name or http://
        server_name/sites/sitename, or a valid GUID (for example, 12345678-90ab
        -cdef-1234-567890bcdefgh).

        Required?                    true
        Position?                    1
        Default value
        Accept pipeline input?       True
        Accept wildcard characters?  false


Копировать код
SYNTAX
    Get-SPSite [-AssignmentCollection <SPAssignmentCollection>] 
    [-Confirm [<SwitchParameter>]] [-Filter <ScriptBlock>] [-Limit <String>]
    [-WebApplication <SPWebApplicationPipeBind>] [-WhatIf [<SwitchParameter>]]
    [<CommonParameters>]

    Get-SPSite -Identity <SPSitePipeBind> [-AssignmentCollection
    <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-Filter <ScriptBlock>]
    [-Limit <String>] [-Regex <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
    [<CommonParameters>]

    Get-SPSite -ContentDatabase <SPContentDatabasePipeBind> [-AssignmentCollection
    <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-Filter <ScriptBlock>]
    [-Limit <String>] [-WhatIf [<SwitchParameter>]] [<CommonParameters>]

    Get-SPSite -SiteSubscription <SPSiteSubscriptionPipeBind> [-AssignmentCollection
    <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-Filter <ScriptBlock>]
    [-Limit <String>] [-WhatIf [<SwitchParameter>]] [<CommonParameters>]

Командлеты для SharePoint Foundation 2010

В SharePoint Foundation 2010 представлено более 240 командлетов для SharePoint. Точное число можно определить с помощью следующей команды.
@(Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell").count
В большинстве случаев эти командлеты используются для работы с объектами SPSite, SPServer, SPWeb, SPBusinessDataCatalogue и SPConfigurationDatabase. Поскольку оболочка Windows PowerShell предназначена в первую очередь для администраторов, а управление этими компонентами является основной задачей администратора, такое разнообразие командлетов вполне объяснимо. Все эти командлеты также доступны в решении SharePoint 2010, которое построено на базе SharePoint Foundation.
Gg550867.Tip(ru-ru,office.14).gifСовет.
К этой книге прилагается справочник по командлетам Microsoft SharePoint Foundation 2010. В этом документе описываются выходные данные, которые отображаются при вводе следующей команды в командную консоль SharePoint 2010.
Эта команда формирует список разделов справки по командлетам, отсортированный по существительному. В этом списке представлены те же разделы справки, которые можно просмотреть в командной консоли SharePoint 2010 с помощью следующей команды.
Get-Help <Cmdlet-Name> -detailed
В этом документе представлены данные, актуальные на момент его написания. Корпорация Майкрософт рекомендует всегда проверять интерактивную справку, в которой представлены последние изменения и примеры. При использовании командлета Get-Help ссылка на интерактивную справку отображается в разделе связанных ссылок.

Копировать код
PS C:\Users\Peter>Get-Command -PSSnapin Microsoft.SharePoint.PowerShell | 
>>Sort Noun, Verb | Get-Help -detailed > CmdletHelp.txt
>><ENTER>

Командлеты для SharePoint 2010

Если использовать показанную в предыдущем разделе команду Windows PowerShell для определения числа доступных командлетов в SharePoint 2010, общее число командлетов для SharePoint 2010 составит более 530. В частности, такое число командлетов связано с полной установкой выпуска SharePoint 2010 Enterprise Edition без службы FAST Search. При необходимости можно определить дополнительные командлеты SharePoint с помощью Windows PowerShell. На компьютере, на котором установлены SharePoint Foundation и версия SharePoint Server, введите следующую команду (при необходимости измените имя файла перенаправления в соответствии с конкретной установкой SharePoint).
Скопируйте файлы на тот же сервер и введите следующую команду.
Выводятся выходные данные, аналогичные следующему примеру.
В этом списке отображаются только те объекты, которые не присутствуют одновременно в обеих установках, а также те, для которых число командлетов на объект различается. В столбце SideIndicator показывается файл, в котором содержится объект с соответствующими командлетами.
В SharePoint 2010 с помощью командлетов управляются преимущественно те же объекты, что и в SharePoint Foundation. Помимо них в SharePoint 2010 представлен 131 дополнительный командлет для управления процессом поиска. (В SharePoint Foundation с поиском связано только четыре командлета.) Проверить это можно с помощью следующей команды.
В SharePoint 2010 представлено больше служб приложений по сравнению SharePoint Foundation, в том числе службы Excel, InfoPath, Microsoft Visio, PerformancePoint, служба безопасного хранения и служба состояний. Соответственно, в ферме SharePoint Server можно использовать большее число командлетов для создания и удаления объектов служб приложений и управления ими.

Копировать код
PS C:\Users\Peter>@(gcm -PSSnapin "Microsoft.SharePoint.PowerShell" | 
>>where {$_.name -like "*search*"}).count
>><ENTER>


Копировать код
InputObject                                                 SideIndicator
-----------                                                 -------------
    8 SPContentDatabase                                     =>
    3 PluggableSecurityTrimmer                              <=
    3 SPAccessServiceApplica...                             <=
    9 SPContentDatabase                                     <=
    5 SPContentDeploymentJob                                <=
    4 SPContentDeploymentPath                               <=
    4 SPDataConnectionFile                                  <=
    1 SPDataConnectionFileDe...                             <=
    2 SPEnterpriseSearchAdmi...                             <=
    3 SPEnterpriseSearchLang...                             <=
    4 SPEnterpriseSearchMeta...                             <=
...


Копировать код
PS C:\Users\Peter>Compare-Object -ReferenceObject $(Get-Content .\cmdlet_sps.txt) ' 
>>-DifferenceObject $(Get-Content .\cmdlet_spf.txt)
>><ENTER>


Копировать код
PS C:\users\peter>Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell" | 
>> Sort noun, verb |group -Property noun -NoElement > cmdlet_sps.txt
>><Enter>

Выполнение основных задач администрирования

В установке SharePoint выполняется два типа задач администрирования: задачи, выполняемые однократно и с любого сервера (например, создание нового веб-приложения, настройка основного владельца семейства сайтов или удаление веб-сайта), а также задачи, выполняемые многократно на отдельном сервере или на нескольких серверах (например, запуск службы на сервере, добавление или удаление сервера фермы, подключение сервера к заданной базе данных конфигурации). Администратор SharePoint выполняет преимущественно задачи первого типа независимо от того, на какой сервер был выполнен вход, поскольку эти задачи можно выполнять с любого сервера.
Применение Windows PowerShell позволяет упростить выполнение задач администрирования обоих типов. Благодаря возможности циклической обработки большого числа объектов и внедрения скриптов в автоматизированные задачи достигается существенное сокращение затрат времени на их выполнение. Несмотря на легкость выполнения задач администрирования с помощью оболочки Windows PowerShell, не рекомендуется использовать ее в обход реализованных в системе элементов управления. Некоторые задачи, выполняемые на уровне фермы, могут быть очень опасны, поскольку затрагивают установку в целом. В рабочей среде такие задачи должны выполняться при условии строгого управления изменениями.
Gg550867.Important(ru-ru,office.14).gifВажно!
Во многих организациях задачи администрирования выполняются только посредством удаленного доступа к рабочим серверам. Доступ в компьютерные залы строго ограничен, в результате чего возможность интерактивного доступа к консоли сервера присутствует редко и используется только для решения аппаратных проблем. В таких средах даже возможности удаленного доступа к рабочим серверам ограничены небольшим числом административных компьютеров, к которым администраторы подключаются с помощью виртуальной частной сети или удаленного рабочего стола. В настройках административного компьютера создание сеансов удаленного рабочего стола обычно разрешается строго ограниченному кругу пользователей (или соответствующим IP-адресам). В таких средах возможности удаленного управления установкой SharePoint с помощью консоли Windows PowerShell также будут ограничены административным компьютером. В Windows PowerShell реализован ряд встроенных функций, позволяющих сократить риски воздействия выполняемых задач на всю установку SharePoint. Эти функции были описаны ранее в разделе "Удаленное управление системами с помощью службы WinRM" этой главы.
В Windows PowerShell представлен ряд необязательных возможностей, которые рассматриваются как рекомендуемые. В следующих разделах более подробно будут рассмотрены две такие возможности: параметр -whatif и запись протокола.

Использование параметра -whatif

Windows PowerShell — это крайне эффективный инструмент. Как и в случае с любыми другими языками скриптов, при работе с ним можно с легкостью использовать код, написанный другими пользователями, или загружать готовые фрагменты кода из Интернета. В некоторых случаях сложно точно спрогнозировать последствия выполнения таких фрагментов. Для защиты ресурсов можно использовать подписанные скрипты, политику выполнения Windows PowerShell, а также ограничение разрешений на загрузку файлов скриптов на сервер SharePoint.
Применение параметра -whatif в Windows PowerShell позволяет протестировать команду перед ее реальным выполнением. Введите следующую команду.
PS C:\Users\Peter> Get-SPSite http://teams/sites/* | Remove-SPSite -whatif
При выполнении этой команды выводится список всех семейств сайтов и операций, которые будут выполняться в отношении этих объектов в том случае, если команда будет выполнена без параметра -whatif.
При тестовом выполнении команды с параметром -whatif никакие объекты реально не выполняются. При вводе этого параметра командлет Remove-SPSite отображает объекты, которые будут затронуты в случае выполнения команды, не выполняя ее фактически. В этом примере отображаются объекты, которые будут удалены без возможности восстановления.

Копировать код
What if: Performing operation "Remove-SPSite" on Target "http://teams/sites/Sales".
What if: Performing operation "Remove-SPSite" on Target "http://teams/sites/Blogs".
What if: Performing operation "Remove-SPSite" on Target "http://teams/sites/Finance".
What if: Performing operation "Remove-SPSite" on Target "http://teams/sites/Wikis".
What if: Performing operation "Remove-SPSite" on Target "http://teams/sites/HR".

Ведение записи протокола

С помощью спаренных командлетов Windows PowerShell Start-Transcripts и Stop-Transcripts можно вести запись команд, вводимых в командную строку, и соответствующих выходных данных. При этом записываются все действия, выполняемые между командами start и stop. Если не ввести команду stop, запись протокола прекращается по завершении сеанса консоли. Такое поведение эффективно в рабочих средах, в которых в профиле компьютера изначально указывается командлет Start-Transcript, позволяющий записывать действия в оболочке Windows PowerShell для всех пользователей. Запись в файл протокола прекращается при выходе пользователя из консоли.
Gg550867.Important(ru-ru,office.14).gifВажно!
Не рекомендуется сразу же использовать новые командлеты и скрипты Windows PowerShell в рабочей среде. Также следует обеспечивать простоту кода. Не рекомендуется создавать и использовать псевдонимы, если скрипты будут поддерживаться администраторами, мало знакомыми с оболочкой Windows PowerShell. Всегда используйте функции комментариев Windows PowerShell при создании или расширении скриптов.
Последствия выполнения команд без параметра -whatif в рабочих средах
В некоторых случаях даже опытные ИТ-специалисты могут неправильно использовать встроенные командлеты, что может повлечь за собой серьезные последствия. В особенности это касается использования командлетов в сочетании со знаками вертикальной черты. Например, с помощью команды Get-SPSite | Remove-SPSite все семейства сайтов в ферме удаляются без возможности восстановления. При этом удаляется весь контент веб-сайтов, включая данные в списках и библиотеках. Естественно, после такой катастрофы телефонные линии службы поддержки будут переполнены огромным числом звонков. При этом, если среди удаленных окажется основной веб-сайт компании, это повлечет за собой потерю денег и, что еще более серьезно, потенциальных клиентов, которых будет очень трудно вернуть. В этом случае для восстановления фермы потребуется огромный объем работы и наличие копий на ленточных носителях. Вывод прост: всегда сначала используйте параметр -whatif!

Примеры задач администрирования SharePoint

Многие задачи администрирования необходимо выполнять ежедневно, однако существуют такие, которые выполняются периодически или вовсе редко. В Windows PowerShell предусмотрены возможности для повышения эффективности задач любого вида. В некоторых случаях написание скрипта для редко выполняемой задачи может дать гораздо больший эффект, чем автоматизация ежедневно выполняемой задачи. Это связано с тем, что редкие задачи зачастую необходимо выполнять как можно быстрее и с минимальным риском ошибок, поскольку последствия даже небольших ошибок в таких случаях могут быть катастрофическими. В этой книге приводится множество примеров использования оболочки Windows PowerShell. В следующих разделах будет рассмотрено несколько абсолютно новых примеров.
Gg550867.Tip(ru-ru,office.14).gifСовет.
В центре скриптов Microsoft, расположенном по адресу http://gallery.technet.microsoft.com/scriptcenter/ (Возможно, на английском языке), скриптам SharePoint посвящен отдельный раздел.

Развертывание SharePoint 2010 с помощью скриптов Windows PowerShell

На протяжении жизненного цикла установки SharePoint определенные задачи, например установку и создание фермы SharePoint, к счастью, приходится выполнять всего один раз. Тем не менее, в крупных организациях с разнообразными средами и большим числом разработчиков зачастую предварительно разрабатывают базовые скрипты, на основе которых выполняется построение интерфейсных веб-серверов SharePoint (WFE) и серверов приложений SharePoint, где размещаются службы приложений, например службы InfoPath, а также службы поисковых запросов и индексации. В предыдущих версиях SharePoint подобные задачи можно было выполнять с помощью пакетных файлов и средств командной строки SharePoint psconfig и stsadm. Эти средства по-прежнему можно использовать для автоматизации процесса установки SharePoint 2010 и серверов SharePoint Foundation 2010. Дополнительные сведения об использовании этих средств см. в главе 4, посвященной установке SharePoint 2010 (здесь мы не будем подробно останавливаться на этом вопросе). Корпорацией Майкрософт разработан скрипт, рекомендуемый к применению для создания фермы SharePoint с нуля с помощью оболочки Windows PowerShell. Порядок используемых команд и параметров может показаться достаточно сложным, поэтому рекомендуется использовать модуль Windows PowerShell SPModule, который задокументирован в статье библиотеки Microsoft TechNet Установка SharePoint Server 2010 с помощью Windows PowerShell.
Gg550867.Tip(ru-ru,office.14).gifСовет.
Дополнительные сведения о возможностях автоматизации в SharePoint и использовании средств psconfig, stsadm и оболочки Windows PowerShell см. на странице http://stsadm.blogspot.com/ (Возможно, на английском языке).
При работе с установкой SharePoint, необходимо объединить журналы. В операционных системах Windows ведутся журналы событий, сведения в которых позволяют упростить выполнение задач администрирования. С помощью командлета Windows PowerShell Get-Eventlog можно получить подробные данные из этих журналов. Кроме того, в SharePoint представлена единая служба ведения журнала, в которой содержатся события всех журналов приложений. Также поддерживается интеграция с этой службой стороннего программного обеспечения ведения журнала. В SharePoint 2010 используется несколько командлетов Windows PowerShell для извлечения данных и настройки единой службы ведения журнала. Чтобы определить параметры настройки этой службы в ферме, введите следующую команду. (Также показан пример выходных данных этой команды.)
Get-SPDiagnosticConfig
В процессе диагностики проблем можно использовать командлеты, связанные с объектом SPLogEvent. Для выполнения этих командлетов необходимы права администратора (возможно, потребуется запустить командную консоль SharePoint 2010 от имени администратора). Далее эти команды используются аналогично следующему примеру.
  1. Например, настройка двух переменных для хранения дат начала и окончания.


    Копировать код
    $SDate = Get-Date -Day 13 -Month 04 -Year 2010
    $EDate = Get-Date -Day 14 -Month 04 -Year 2010
    Если требуется найти событие, произошедшее около 15 минут назад, с помощью переменной можно задать интервал между следующими моментами времени: за 20 минут до текущего времени и 10 минут спустя.


    Копировать код
    $SDate = (Get-Date).AddMinutes(-20)
    $EDate = (Get-Date).AddMinutes(-10)
  2. Получение списка событий между двумя заданными датами и моментами времени.

    Get-SPLogEvent -StartDate $SDate -EndTime $Edate

    Если параметр -EndTime не указан, отображаются журналы событий вплоть до текущих значений даты и времени.
С каждым запросом к SharePoint связан свой номер для отслеживания (идентификатор корреляции). Этот номер хранится в виде значения в свойстве, связанном с объектом SPLogEvent. В трассировках приложения SQL Profiler также отображаются идентификаторы корреляции. Этот номер отображается на странице ошибки, как показано на рис. 5-5.
Сообщение об ошибке SharePoint Foundation
Рис. 5-5. Страница ошибки с идентификатором корреляции
В крупных или активно используемых установках SharePoint при возникновении проблем может создаваться большое число записей журналов. С помощью идентификатора корреляции можно уменьшить объем возвращаемых сведений в журналах, ограничив их только записями, относящимися к конкретному случаю. Чтобы задать временные рамки проблемы, следует использовать переменные $sdate и $edate. Если вам не удается воспроизвести условия возникновения проблемы, но это возможно на стороне пользователя, обратитесь в службу поддержки и запросите снимок экрана страницы ошибки, чтобы проверить правильность полученного идентификатора корреляции. После этого можно передать результаты команды (показаны на шаге 2) в командлет Where-Object, как показано в следующем примере.
В выходных данных отображаются только журналы событий в диапазоне между заданными датами, которые относятся к проблеме, связанной с этим идентификатором корреляции.

Копировать код
PS C:\Users\Peter>Get-SPLogEvent -StartDate $SDate -EndTime $EDate |
  where {$_.Correlation –eq "68bc5cf4-5a8c-4517-a879-86e35e57c862"}


Копировать код
AllowLegacyTraceProviders                   : False
CustomerExperienceImprovementProgramEnabled : True
ErrorReportingEnabled                       : True
ErrorReportingAutomaticUploadEnabled        : True
DownloadErrorReportingUpdatesEnabled        : True
DaysToKeepLogs                              : 14
LogMaxDiskSpaceUsageEnabled                 : True
LogDiskSpaceUsageGB                         : 3
LogLocation                                 : %CommonProgramFiles%\Microsoft Sh
                                             ared\Web Server Extensions\14\LOG
                                             S\
LogCutInterval                              : 30
EventLogFloodProtectionEnabled              : True
EventLogFloodProtectionThreshold            : 5
EventLogFloodProtectionTriggerPeriod        : 2
EventLogFloodProtectionQuietPeriod          : 2
EventLogFloodProtectionNotifyInterval       : 5
ScriptErrorReportingEnabled                 : True
ScriptErrorReportingRequireAuth             : True
ScriptErrorReportingDelay                   : 60
 AllowLegacyTraceProviders                   : FalseCustomerExperienceImprovementProgramEnabled : TrueErrorReportingEnabled                       : TrueErrorReportingAutomaticUploadEnabled        : TrueDownloadErrorReportingUpdatesEnabled        : TrueDaysToKeepLogs                              : 14LogMaxDiskSpaceUsageEnabled                 : TrueLogDiskSpaceUsageGB                         : 3LogLocation                                 : %CommonProgramFiles%\Microsoft Sh                                             ared\Web Server Extensions\14\LOG                                             S\LogCutInterval                              : 30EventLogFloodProtectionEnabled              : TrueEventLogFloodProtectionThreshold            : 5EventLogFloodProtectionTriggerPeriod        : 2EventLogFloodProtectionQuietPeriod          : 2EventLogFloodProtectionNotifyInterval       : 5ScriptErrorReportingEnabled                 : TrueScriptErrorReportingRequireAuth             : TrueScriptErrorReportingDelay                   : 60

Управление службами SharePoint

После установки решения SharePoint на серверы с помощью мастера настройки продуктов SharePoint 2010 можно использовать веб-сайт центра администрирования SharePoint 2010 для запуска мастера настройки фермы. С помощью этого мастера можно достаточно быстро настроить ферму и ввести ее в эксплуатацию, однако в некоторых случаях возможности этого средства не удовлетворяют требованиям организации. Например, создаваемые мастером имена будут иметь формат имя_GUID, где GUID — это генерируемый случайным образом глобальный уникальный идентификатор. Также мастер настройки фермы использует учетную запись, указанную как удостоверение пула приложений для установленного по умолчанию веб-приложения контента, и по умолчанию запускает службу веб-аналитики, что может быть нежелательно в рабочей ферме.
Мастер обычно используется для быстрого создания прототипа, а также, возможно, при использовании SharePoint в средах разработки. Однако, если любая из этих сред ограничена по вычислительной мощности ЦП и объему доступной памяти, применение мастера не рекомендуется. Например, служба веб-аналитики потребляет большой объем памяти ЦП, в результате чего разработчики в большинстве случаев запрашивают ее остановку. Также может потребоваться регулярное включение или остановка других служб, особенно если компьютеры разработчиков ежедневно используются для подключения к рабочим столам, чтения электронной почты, написанию документации либо для разработки или создания прототипов в среде SharePoint.
Для управления конфигурацией можно использовать такие средства, как веб-сайт центра администрирования. Тем не менее, в некоторых случаях можно попросту забыть выполнить все задачи необходимые для полного изменения конфигурации. В таких ситуациях рекомендуется использовать скрипты Windows PowerShell, которые после разработки проверяются на наличие всех необходимых задач и в дальнейшем позволяют существенно упростить процесс управления конфигурацией и уменьшить число связанных с ним ошибок. Подобные скрипты следует хранить в централизованном месте, что позволит использовать их другим администраторам в своих средах. Также эти скрипты могут быть полезны разработчикам. В качестве примеров задач, автоматизируемых с помощью таких скриптов, можно привести следующие.
  • Быстрое удаление заданного веб-приложения:

    Get-SPWebApplication http://teams | Remove-SPWebApplication –Confirm
  • Удаление веб-приложения, веб-сайта IIS и всех связанных баз данных:

    Remove-SPWebApplication http://teams –Confirm –DeleteIISSite ' -RemoveContentDatabases
Если мастер настройки фермы не использовался, в некоторых случаях вам могут потребоваться такие службы, о которых вы ранее никогда бы не задумались. Например, если службы приложений не запущены, при попытке использовать один из рабочих процессов SharePoint 2010 не будет отображаться диаграмма Microsoft Visio, на которой показывается ход выполнения процесса. В такой ситуации для устранения проблемы уже потребуется не только создание службы приложения Visio. В этом случае присутствует ряд других зависимостей, в том числе и от приложения-службы состояний. Службы состояний можно создавать только на сайте центра администрирования с помощью мастера фермы, что для вас, как администратора, крайне нежелательно. Для создания службы состояний с помощью Windows PowerShell введите следующую команду.

Gg550867.note(ru-ru,office.14).gifПримечание.
Если экземпляр связанной службы не запущен, эта команда может не работать в вашей среде. Полный вариант скрипта см. в статье, посвященной созданию приложения-службы с помощью SP и PS 2010 http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=50 (Возможно, на английском языке).
Каждое приложение-служба по своему уникально. Например, некоторые приложения-службы не используют базу данных. Дополнительные сведения об этом можно найти в главе 7, посвященной масштабированию фермы SharePoint. Тем не менее, каждая служба использует прокси приложения-службы для подключения веб-приложения к приложению-службе.

Копировать код
PS: C:\Users\Peter>New-SPStateServiceDatabase –Name Contoso_StateService_DB |
>>New-SPStateServiceApplication –Name Contoso_StateService |
>>New-SPStateServiceApplicationProxy –Name Contoso_StateService_Proxy –Default
>><ENTER>

Использование Windows PowerShell в процессе обновления

В следующих разделах описываются команды Windows PowerShell, которые можно использовать в процессе обновления. Более подробно процесс обновления рассматривается в главе 22, посвященной обновлению до SharePoint 2010.

Подготовка к обновлению

После установки SharePoint 2010, но до начала обновления, можно воспользоваться командлетом Test-SPContentDatabase для проверки баз данных SharePoint Server 2007 на наличие существующих или потенциальных проблем, в том числе потерянных данных, а также отсутствующих определений сайтов, компонентов или сборок. Этот командлет дополняет средство проверки перед обновлением, описываемое в главе 22. Проверка на наличие таких проблем выполняется без прерывания установки SharePoint. Этот командлет также позволяет проверить состояние баз данных SharePoint 2010 для более эффективного обслуживания и поддержания работоспособности среды. В следующем примере показана команда и образец ее выходных данных.
Test-SPContentDatabase -name W_intranet -WebApplication http://www.contoso.msft


Копировать код
Category        : SiteOrphan
Error           : True
UpgradeBlocking : False
Message         : Database [W_intranet] contains a site (Id = [46ad6d70-9a5c-4d
                  e0-8daa-0f73f2466a6a], Url = [/]) whose id is already associa
                  ted with a different database (Id = [6987d2d8-6291-4ead-9eb0-
                  aefe7097a58e], name = [W_Intranet]) in the site map. Consider
                  deleting one of these sites which have conflicting ids.
Remedy          : The orphaned sites could cause upgrade failures. Try detach a
                  nd reattach the database which contains the orphaned sites. R
                  estart upgrade if necessary.

Category        : SiteOrphan
Error           : True
UpgradeBlocking : False
Message         : Database [W_intranet] contains a site (Id = [46ad6d70-9a5c-4d
                  e0-8daa-0f73f2466a6a], Url = [/]) whose url is already used b
                  y a different site, in database (Id = [6063e77c-991f-4c4b-b3a
                  c-68cb62e66502], name = [w_Internet]), in the same web applic
                  ation. Consider deleting one of the sites which have conflict
                  ing urls.
Remedy          : The orphaned sites could cause upgrade failures. Try detach a
                  nd reattach the database which contains the orphaned sites. R
                  estart upgrade if necessary.

Выполнение задач после обновления

Процесс обновления подразделяется на два компонента: обновление базы данных контента и визуальное обновление. За счет разделения этих компонентов группа SharePoint может выполнить обновление веб-приложения Microsoft Office SharePoint Server 2007 незаметно для пользователей, сохраняя при этом существующий интерфейс сайтов. С помощью браузера пользователи могут просмотреть внешний вид сайта в новом оформлении SharePoint 2010, после чего принять решение о необходимости постоянного перехода на новый интерфейс посредством визуального обновления. После окончательного перехода возврат к интерфейсу SharePoint Server 2007 из браузера невозможен.
В командлете Set-SPWeb отсутствуют параметры для выполнения этой задачи. Для этого следует использовать свойства объекта SPWeb. Чтобы вернуться к старому интерфейсу, введите следующую команду.

Gg550867.note(ru-ru,office.14).gifПримечание.
Ранее в этой главе описывалось создание переменных для хранения значений и объектов. Перед именами переменных указывается префикс $. В показанном здесь примере кода используется переменная $true. Эта переменная, а также другие схожие ключевые слова представляют собой пример специальной переменной. Специальная переменная обрабатывается как зарезервированное слово, которое нельзя использовать для хранения значений или объектов в скриптах. Специальная переменная $true представляет значение True, $false — значение False, $null — значение null, а переменная $_, которая также используется в этой главе, содержит текущий объект конвейера. Она используется в блоках скриптов, фильтрах и командлете Where.
После выполнения этих команд для сайтов восстанавливается интерфейс SharePoint Server 2007. Например, кнопка "Действия сайта" будет располагаться в верхнем правом, а не в верхнем левом углу. В меню "Действия сайта" будет доступен параметр "Визуальное обновление" (тем не менее, визуальное обновление может быть отключено на уровне семейства сайтов). Чтобы включить визуальное обновление на уровне семейства сайтов, используйте следующие команды.
При обновлении свойств объекта SPSite не используется метод обновления — все изменения вступают в силу незамедлительно. В качестве альтернативы двум предыдущим строкам команд можно ввести одну команду.
Чтобы восстановить интерфейс SharePoint Server 2007 для всех сайтов группы в семействе, воспользуйтесь следующей командой.

Gg550867.note(ru-ru,office.14).gifПримечание.
Эти команды также можно выполнять в семействе сайтов, для которого не выполнено обновление, то есть на сайтах версии 4, что позволяет применять к сайтам SharePoint 2010 оформление SharePoint 2007.


Копировать код
PS C:\Users\zzspfarm> Get-SPsite http://teams |
>> Get-SPWeb –Filter {$_.Template –eq "STS#0}|
>> ForEach-Object {
>> $_.UIVersion =3;
>> $_.UIVersionConfigurationEnabled = $false;
>> $_.Update();
>> }
>><ENTER>


Копировать код
(Get-SPSite http://teams).UIVersionConfigurationEnabled = $false


Копировать код
$site = Get-SPSite http://teams
$site.UIVersionConfigurationEnabled = $true


Копировать код
Start-SPAssignment –Global
$web = Get-SPWeb http://teams ;
$web.UIVersion = 3;
$web.UIVersionConfigurationEnabled = $true;
$web.Update();
Stop-SPAssignment

Заключение

В этой главе описываются новые командлеты Windows PowerShell, представленные в SharePoint 2010. В ней рассматривается работа с командной консолью SharePoint 2010, а также порядок выполнения некоторых простых, но очень эффективных задач администрирования с использованием однострочных команд Windows PowerShell.
На данный момент доступно более 500 командлетов SharePoint. Естественно, в этой главе невозможно описать их все. Вместо этого мы постарались привести общие рекомендации по использованию SharePoint PowerShell в рабочей среде, в том числе по настройке и удаленному управлению, записи протокола и использованию параметра -whatif. Обратите внимание, что настоятельно не рекомендуется проверять или впервые выполнять новые команды Windows PowerShell в рабочей среде. Постарайтесь, чтобы ваши скрипты были как можно более простыми, не стесняйтесь использовать комментарии и документировать скрипты. Кроме того, не следует использовать или создавать псевдонимы, если скрипты будут поддерживаться администраторами, не знакомыми с оболочкой Windows PowerShell.
В этой главе немного более подробно описываются два важных командлета — Start-SPAssignment и Stop-SPAssignment. Они используются при работе с высвобождаемыми объектами, такими как SPSite, SPWeb и SPSiteAdministration. Другие командлеты SharePoint были представлены для более полного ознакомления с принципами работы в Windows PowerShell. Материалы этой главы используются в главе 12, посвященной различным сценариям поиска. В следующей главе мы продолжим обсуждение принципов управления фермами SharePoint 2010 и, в частности, рассмотрим интерфейс центра администрирования.