Microsoft Press. Выполнение и автоматизация задач администрирования фермы с помощью оболочки Windows PowerShell
Опубликовано: 13 января 2011 г.
В этой статье приводится отрывок из настольной книги администратора Microsoft SharePoint 2010 (издательство Microsoft Press, август 2010 г.).
Купить эту книгу (Возможно, на английском языке)
В этом отрывке из настольной книги администратора Microsoft SharePoint 2010 (Возможно, на английском языке) описываются возможности командной консоли SharePoint 2010, а также рассматривается порядок выполнения основных задач администрирования с помощью оболочки Windows PowerShell.
В этой статье приводится отрывок из настольной книги администратора 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.
Билл Инглиш является обладателем сертификатов 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. В этой главе мы не пытаемся научить вас работе с 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, которые не только позволяют использовать традиционные средства, но и существенно расширяют их функциональность.
В этом разделе рассматриваются следующие вопросы, посвященные работе с Windows PowerShell.
Каждому продукту Майкрософт также посвящено собственное сообщество, в которых рассматривались способы расширения возможностей встроенных средств для более эффективного выполнения задач администрирования. Нужные администраторам средства были доступны, однако были рассредоточены по различным источникам. Теперь все меняется, и любые административные задачи могут выполняться благодаря возможностям скриптов и автоматизации Windows PowerShell.
В основу концепции оболочки Windows PowerShell были положены результаты исследования, проведенного корпорацией Майкрософт в начале 2000-х годов. Командная оболочка Windows PowerShell изначально была построена на основе стандарта POSIX (IEEE 1003.2) с учетом возможностей оболочек Perl и UNIX. Она поддерживает язык скриптов, который обладает гораздо более широкими возможностями по сравнению с командной строкой Windows (cmd.exe). Средства командной строки традиционно нравятся администраторам, поскольку обеспечивают возможность пакетного выполнения и автоматизации повторяющихся задач, а также позволяют проверять правильность каждого выполнения набора задач. Эти возможности реализованы с помощью командлетов Windows PowerShell, которые не только позволяют использовать традиционные средства, но и существенно расширяют их функциональность.
| Предложенные сообществом инициативы по улучшению предыдущих версий 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 2.0
- Архитектура
- Установка Windows PowerShell
- Удаленное управление
Новые возможности выпуска Windows PowerShell 2.0
В Windows PowerShell 2.0 реализован ряд новых функций и улучшений по сравнению с Windows PowerShell 1.0, в том числе:
- Новые командлеты
- Функции удаленного управления и фоновые задания
- Интегрированная среда сценариев Windows PowerShell
- Отладчик Windows PowerShell
- Модули
- Расширенные функции
- Транзакции
- Пошаговые конвейеры
- События
- Интернационализация скриптов
- Интерактивная справка
| Дополнительные сведения о новых возможностях в 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 может потребоваться заключать их в кавычки, однако это единственное изменение по сравнению с работой в командной строке. Соответственно, вы сможете выполнять все задачи администрирования из одного окна.
Работать с оболочкой Windows PowerShell можно двумя способами: с использованием интерфейса командной строки (консоль Windows PowerShell — powershell.exe) или графического интерфейса интегрированной среды сценариев Windows PowerShell (Powershell_ise.exe). В этой главе описывается работа в консоли 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 может потребоваться заключать их в кавычки, однако это единственное изменение по сравнению с работой в командной строке. Соответственно, вы сможете выполнять все задачи администрирования из одного окна.
| По умолчанию в командной строке установлен черный фон, однако при необходимости его можно изменить. Для этого достаточно щелкнуть правой кнопкой мыши в строке заголовка и выбрать пункт "Свойства". В диалоговом окне "Свойства" представлены четыре вкладки: "Параметры", "Шрифт", "Макет" и "Цвета", на которых можно изменять шрифт, цвет фона, размер окна и другие параметры. Дополнительные сведения о сходствах между двумя интерфейсами командной строки см. в боковом примечании, посвященном сочетаниям клавиш командной строки, в этой главе. |
Дополнительные сведения об оболочке 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.
Чтобы использовать интегрированную среду сценариев Windows PowerShell в ОС Windows 2008 R2, необходимо добавить компонент Windows PowerShell ISE. Для этого можно использовать команды Windows PowerShell или диспетчер сервера. После установки SharePoint 2010 или SharePoint Foundation 2010 выполните следующие действия.
Рис. 5-1. Установка компонента интегрированной среды сценариев Windows PowerShell
| Если планируется активное использование интегрированной среды сценариев, рекомендуется поместить ярлык этой программы в панель задач. В меню "Пуск" щелкните правой кнопкой мыши файл Powershell_ise.exe и выберите пункт "Закрепить на панели задач" или "Закрепить в меню «Пуск»". |
- В оболочке Windows PowerShell введите следующие команды.
Import-Module Servermanager; Add-WindowsFeature "PowerShell-ISE" - В диспетчере сервера выполните следующую процедуру.
- Запустите диспетчер сервера. Выберите элемент Компоненты, а затем команду Добавить компоненты.
- В средней области мастера добавления компонентов установите флажок Интегрированная среда сценариев (ISE) Windows PowerShell, как показано на рис. 5-1, после чего нажмите кнопку Далее.
- На экране подтверждения выбранных для установки компонентов нажмите кнопку Установить.
- На экране результатов установки нажмите кнопку Закрыть.
Работа с политикой выполнения
Windows PowerShell — это крайне эффективный инструмент. Как и в случае с любыми другими языками скриптов, при работе с ним можно с легкостью использовать код, написанный другими пользователями, или загружать готовые фрагменты кода из Интернета. Обратите внимание, что, поскольку файлы кода представляют собой обычные текстовые файлы, в них легко может быть вставлен вредоносный код. В Windows PowerShell реализован встроенный компонент безопасности, который называется политикой выполнения и устанавливается отдельно для каждого пользователя с сохранением параметров в реестре. Для просмотра назначенной политики выполнения введите следующую команду в командной консоли Microsoft SharePoint 2010.
Если командная консоль запущена на сервере SharePoint, в большинстве случаев выходные данные этой команды будут иметь статус политики RemoteSigned. В этом случае пользователь, выполнивший вход в систему, может интерактивно выполнять любые команды и скрипты, хранящиеся на компьютере. Тем не менее, чтобы выполнять файлы конфигурации и скрипты из удаленных источников, требуется наличие подписи. Чтобы изменить политику выполнения, запустите консоль Windows PowerShell от имени администратора и выполните командлет Set-ExecutionPolicy. Также для этого можно изменить следующий раздел реестра.
HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
Для подписи скриптов применяется командлет Set-AuthenticodeSignature, с помощью которого можно добавить подпись Authenticode к скрипту Windows PowerShell или другому файлу.
В организациях с несколькими средами (такими как среды развертывания, интеграции систем, тестирования пользовательской приемки, подготовительные и рабочие среды) рекомендуется как минимум подписывать код в рабочей ферме и ферме тестирования пользовательской приемки. Также следует проверить параметры политики выполнения для этих ферм. Политика выполнения задается в объекте групповой политики для пользователей и компьютеров, что не позволяет переопределять ее другим пользователям, выполняющим вход на серверы SharePoint.
Если командная консоль запущена на сервере SharePoint, в большинстве случаев выходные данные этой команды будут иметь статус политики RemoteSigned. В этом случае пользователь, выполнивший вход в систему, может интерактивно выполнять любые команды и скрипты, хранящиеся на компьютере. Тем не менее, чтобы выполнять файлы конфигурации и скрипты из удаленных источников, требуется наличие подписи. Чтобы изменить политику выполнения, запустите консоль Windows PowerShell от имени администратора и выполните командлет Set-ExecutionPolicy. Также для этого можно изменить следующий раздел реестра.
HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
| Этот раздел реестра рекомендуется использовать в сочетании с групповой политикой Active Directory. Рекомендуется по возможности избегать изменения параметров реестра вручную, особенно учитывая тот факт, что корпорацией Майкрософт разработан специальный командлет для настройки политики выполнения Windows PowerShell. |
В организациях с несколькими средами (такими как среды развертывания, интеграции систем, тестирования пользовательской приемки, подготовительные и рабочие среды) рекомендуется как минимум подписывать код в рабочей ферме и ферме тестирования пользовательской приемки. Также следует проверить параметры политики выполнения для этих ферм. Политика выполнения задается в объекте групповой политики для пользователей и компьютеров, что не позволяет переопределять ее другим пользователям, выполняющим вход на серверы SharePoint.
| Дополнительные сведения о политиках выполнения 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 (Возможно, на английском языке). |
| При работе на настольном ПК под управлением ОС 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.
В следующем примере показаны возможные выходные данные команды Enable-PSRemoting.
На компьютере под управлением 64-разрядной версии ОС Windows может отображаться дополнительное сообщение подтверждения.
Чтобы определить параметры конфигурации WinRM, метод проверки подлинности и номера портов доступа, воспользуйтесь следующей командой.
winrm get winrm/config/service
В результате выполнения этой команды должны возвращаться аналогичные следующим выходные данные.
Команды winrm и связанные с ней (например, команду New-PSSession) можно выполнять как из консоли Windows PowerShell, так и из консоли управления SharePoint 2010. Для их выполнения требуются права администратора. Щелкните правой кнопкой мыши в консоли Windows PowerShell или консоли управления SharePoint 2010 и выберите команду "Запуск от имени администратора". Предоставлять учетные данные администратора для подобного механизма запуска могут только члены группы администраторов на удаленном компьютере.
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.
| Если одно из сетевых подключений является общим, при выполнении команды Set-WSManQuickConfig может возникнуть исключение недопустимой операции. Чтобы продолжить, необходимо изменить тип подключения на доменный или закрытый. |
На компьютере под управлением 64-разрядной версии ОС Windows может отображаться дополнительное сообщение подтверждения.
Чтобы определить параметры конфигурации WinRM, метод проверки подлинности и номера портов доступа, воспользуйтесь следующей командой.
winrm get winrm/config/service
В результате выполнения этой команды должны возвращаться аналогичные следующим выходные данные.
Команды winrm и связанные с ней (например, команду New-PSSession) можно выполнять как из консоли Windows PowerShell, так и из консоли управления SharePoint 2010. Для их выполнения требуются права администратора. Щелкните правой кнопкой мыши в консоли Windows PowerShell или консоли управления SharePoint 2010 и выберите команду "Запуск от имени администратора". Предоставлять учетные данные администратора для подобного механизма запуска могут только члены группы администраторов на удаленном компьютере.
| Если локальный и удаленный компьютер находятся в разных доменах, между которыми не установлены отношения доверия, либо в рабочей группе, необходимо выполнить дополнительные шаги по настройке удаленного управления. Сценарий с участием компьютеров в рабочей группе наиболее вероятен при установке 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
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"):
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, должны соблюдаться некоторые дополнительные требования.
- Требуется наличие доступа к идентификатору пользователя с правами, достаточными для выполнения этих команд. Эти требования действуют независимо от того, выполняются ли командлеты SharePoint удаленно или локально. Идентификатор пользователя должен соответствовать следующим требованиям.
- Он должен являться членом локальной группы безопасности WSS_ADM_WGP на компьютере, на котором выполняются команды.
- Он должен являться членом роли SharePoint_Shell_Access SQL Server в базе данных конфигурации.
- Он должен обладать доступом к базе данных контента, для управления которой применяется.
- Выделите один сервер в ферме в качестве сервера, который всегда будет использоваться для удаленного управления. На этом сервер увеличьте значение параметра конфигурации службы WinRM MaxMemoryPerShellDB до достаточно крупного значения (512 или 1024). Этот параметр ограничивает объем памяти, который может использоваться одним удаленным процессом. Увеличение этого значения позволяет выполнять длительные команды без возникновения ошибок исключений OutOfMemory. Ниже показаны команда, отображающая значения параметров конфигурации, а также ее выходные данные.
winrm get winrm/config/winrs
Чтобы изменить значение параметра MaxMemoryPerShellDB, введите следующую команду Windows PowerShell в командной консоли SharePoint 2010.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
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024 - Необходимо использовать проверку подлинности поставщика учетных данных безопасности (CredSSP). Этот механизм проверки подлинности был представлен в ОС Windows Vista и позволяет приложению делегировать учетные данные с одного компьютера на другой (этот процесс называется двойным переходом). Это позволяет предоставлять учетные данные, которые используются в командлетах SharePoint PowerShell для взаимодействия с сервером Microsoft SQL Server, на котором размещаются базы данных SharePoint. Если поставщик CredSSP не используется, при попытке удаленного выполнения командлета SharePoint с большой долей вероятности отображается сообщение, свидетельствующее о недоступности фермы. В выходных данных показанной выше команды Winrm get winrm/config/service обратите внимание на параметр CredSSP, которому присвоено значение False. Изменить параметры конфигурации WinRM можно несколькими способами, в том числе с помощью групповой политики, скриптов входа и командной строки. Чтобы включить проверку подлинности CredSSP через интерфейсы командной строки, выполните следующие задачи.
- На компьютере, с которого осуществляется удаленное управление, например на настольном ПК под управлением ОС Windows 7, введите следующую команду (в качестве параметра Web1 укажите сервер SharePoint). Введите "Y" в ответ на запрос о подтверждении включения проверки подлинности CredSSP.
Enable-WSManCredSSP -role client -DelegateComputer Web1 - На сервере SharePoint, для которого осуществляется удаленное управление, введите команду
Enable-WSManCredSSP -role server
Совет.
Дополнительные сведения о поддержке механизма многократного перехода в службе WinRM см. в статье http://msdn.microsoft.com/ru-ru/library/ee309365(v=VS.85).aspx. - На компьютере, с которого осуществляется удаленное управление, например на настольном ПК под управлением ОС Windows 7, введите следующую команду (в качестве параметра Web1 укажите сервер SharePoint). Введите "Y" в ответ на запрос о подтверждении включения проверки подлинности CredSSP.
Использование удаленного управления WinRM
Ниже приведены примеры команд, которые используются для запуска удаленного сеанса для удаленного управления фермой SharePoint или отдельным сервером SharePoint.
При вводе первой команды отображается диалоговое окно, в котором необходимо ввести пароль. Этот пароль и соответствующее имя пользователя сохраняются в переменной $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}
Командлет Windows PowerShell Invoke-Command обеспечивает взаимодействие со множеством сеансов как на одном, так и на разных серверах, с настольного ПК. С его помощью можно одновременно запускать и параллельно выполнять несколько задач администрирования. Тем не менее, если эти задачи выполняются в течение длительного времени, управление будет возвращено только после выполнения команды на удаленном компьютере. Такой механизм называется интерактивным выполнением команд. При необходимости можно выполнять команды асинхронно в виде фоновых заданий, что позволяет немедленно возвращать управление в командную строку Windows PowerShell и сразу же продолжать выполнение последующих команд. Для этого добавьте в командлет Invoke-Command параметр -AsJob или воспользуйтесь командлетом Start-Job. Такой подход позволяет уменьшить затраты времени на выполнение задач администрирования по сравнению с их последовательным выполнением. Например, существенная экономия времени достигается в процессе обновления, когда в каждом сеансе выполняется обновление с подключением баз данных, а время, затрачиваемое на обновление баз данных, ограничивается только доступными ресурсами сервера SQL Server.
Если на отдельном сервере требуется выполнить большое число коротких задач, чтобы не вводить много раз командлет Invoke-Command, воспользуйтесь одним из следующих подходов.
| Чтобы ограничить набор команд Windows PowerShell, доступных пользователю во время удаленного сеанса, воспользуйтесь параметром -ConfigurationName командлета New-PSSession или командлетом Proxy. Дополнительные сведения см. в записи блога, посвященной расширению и изменению команд с помощью прокси, которая доступна по адресу http://blogs.msdn.com/powershell/archive/2009/01/04/extending-and-or-modifing-commands-with-proxies.aspx (Возможно, на английском языке). |
Ссылка на постоянный сеанс хранится в переменной $sess. С помощью этой переменной можно перенаправлять любые нужные команды на удаленный сервер. В следующем примере командлет Get-SPServiceInstance вводится в блок скрипта, который представляет собой область в фигурных скобках ({ }). В выходных данных командлета Get-SPServiceInstance возвращается состояние служб в ферме SharePoint.
Invoke-Command -Session $s -ScriptBlock {get-SPServiceInstance}
| В блок скрипта можно вводить несколько команд на отдельных строках или на одной строке, разделяя их точками с запятой (;). Если в блок скрипта вводится только одна команда, вводить точку с запятой необязательно, однако для большей наглядности рекомендуется указывать этот знак. Также можно использовать локальные переменные для создания удаленного блока скрипта, как показано в следующем примере. |
Если на отдельном сервере требуется выполнить большое число коротких задач, чтобы не вводить много раз командлет 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
В этом примере можно использовать командлеты SPSite так же, как локальные команды. Например, командлет Get-RemoteSPSite возвращает все семейства сайтов, соответствующие заданным условиям. Эти импортированные команды хранятся во временном модуле, который удаляется по завершении сеанса. Чтобы создать постоянный модуль, который можно использовать в будущих сеансах, воспользуйтесь командлетом Export-PSSession. Импортированные команды по-прежнему выполняются в удаленном сеансе, из которого они были импортированы, в связи с чем их выполнение может длиться дольше по сравнению с локальными командами.
| Дополнительные сведения об удаленном управлении 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
Работа с командной консолью SharePoint 2010
Чтобы открыть командную консоль SharePoint 2010, в меню "Пуск" последовательно выберите пункты "Программы > Продукты Microsoft SharePoint 2010 > Командная консоль SharePoint 2010", как показано на рис. 5-2.

Рис. 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. Выходные данные этой команды должны выглядеть приблизительно следующим образом.
На рис. 5-3 показаны самые распространенные объекты и связи между ними (также показан объект SPSiteCollection, который представляет собой коллекцию объектов SPSite).
Текущий набор встроенных командлетов не позволяет полностью охватить все объекты SharePoint, однако для управления ими при необходимости можно создавать новые командлеты. Чтобы определить объекты, связанные с командлетами SharePoint 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. Выходные данные этой команды должны выглядеть приблизительно следующим образом.
| Если вы разрабатываете собственные скрипты, которые могут вызываться из командной строки или двойным щелчком мыши в проводнике, и если эти скрипты содержат команды Windows PowerShell для SharePoint, то необходимо убедиться, что в скрипты включена команда, устанавливающая потоковую модель и загружающая оснастку Windows PowerShell для SharePoint. При вызове скрипта из консоли Windows PowerShell можно использовать тег #requires в верхней его части. |
Настройка консоли в соответствии с требованиями рабочих сред
Файл профиля на выделенном компьютере администратора достаточно часто подвергается изменениям. Профиль можно изменить, реализовав в нем следующие возможности:
Поскольку скрипт профиля выполняется при каждом запуске командной консоли SharePoint 2010, он должен содержать подпись. Дополнительные сведения о настройке консоли можно найти в статье http://technet.microsoft.com/ru-ru/library/ee156814.aspx (Возможно, на английском языке).
- Включение в профиль всех оснасток и модулей, используемых ИТ-специалистами организации или отдела.
- Отслеживание всех выполняемых команд 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.
В показанном выше наборе команд принимаются выходные данные командлета Get-Command, которые передаются в командлет sort. Этот командлет выполняет сортировку данных в порядке "существительное-глагол". Это позволяет отображать вместе командлеты SharePoint, управляющие одним объектом, которые далее сортируются по глаголу. Чтобы уменьшить необходимость прокрутки в командной консоли SharePoint 2010, отсортированные данные передаются в командлет format-wide. Такое сочетание командлетов Windows PowerShell достаточно распространено. Выходные данные этого набора будут выглядеть примерно следующим образом.
В общем случае в командлетах используется пара "глагол-существительное". Существительное задает объект, относительно которого требуется получить сведения или с которым необходимо совершить определенные действия, а глагол определяет действия, которые требуется предпринять с указанным объектом. Глаголы и существительные всегда разделяются дефисом без пробелов. К командлетам 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.
| Если был введен однострочный скрипт Windows PowerShell или не предоставлены все необходимые параметры, в Windows PowerShell отображается запрос на ввод параметра или начинается новая строка (сочетание знаков >>), в которую можно ввести дополнительные команды. По завершении ввода нажмите клавишу ВВОД, чтобы выполнить код в Windows PowerShell. Из-за ограничений на размер страницы многие команды в этой главе показаны на нескольких строках несмотря на то, что их можно вводить на одной строке. Помните, что клавишу ВВОД следует нажимать только в тот момент, когда требуется выполнить скрипт. |
| Рассмотрим еще один командлет, который аналогичен 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.
Текущий набор встроенных командлетов не позволяет полностью охватить все объекты SharePoint, однако для управления ими при необходимости можно создавать новые командлеты. Чтобы определить объекты, связанные с командлетами SharePoint PowerShell, а также число командлетов для каждого объекта, воспользуйтесь командами, приведенными в следующем примере (показана часть выходных данных).
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
Проблемы с производительностью при выполнении команд 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
Объекты могут содержать не только свойства, но и действия, определяющие различные способы управления ими. В терминах объектно-ориентированного программирования эти действия (и другие способы выполнения действий в отношении объекта) называются методами. Чтобы определить свойства и методы объекта SPSite, воспользуйтесь командлетами, приведенными в следующем примере (показана часть выходных данных).
PS C:\Users\peter> Get-SPSite | Get-Member
| По возможности рекомендуется всегда передавать данные командлета Get-SP<существительное> в командлет Get-Member. Это позволяет извлекать любые необходимые сведения об объекте. |
Чтобы найти все семейства сайтов в ферме, можно использовать командлет 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:
Рассмотрим список самых популярных команд, связанных с SharePoint:
- Get (получить) — запрос конкретного объекта или набора объектов; извлечение сведений об объекте. Например, с помощью этой команды можно получить сведения обо всех приложениях-службах. Команды Get — единственные, которые могут возвращать один или несколько объектов. Любые другие команды выполняются одновременно только для одного объекта.
Get-SPServiceApplication - Set (задать) — изменение конкретного параметра объекта. Например, с помощью этой команды можно задать владельца семейства сайтов.
Set-SPSite http://teams -OwnerAlias contoso\peter - New (создать) — создание нового экземпляра объекта, например нового семейства сайтов.
- Remove (удалить) — удаление экземпляра объекта, например семейства сайтов и всех его дочерних сайтов. Из-за опасного характера этой команды обычно требуется подтверждение выполняемого действия (параметр -confirm). Если этот параметр отсутствует, отображается сообщение с запросом на подтверждение действия, как показано ниже.
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 можно получить справку по соответствующим темам.
| Встроенная справочная система — это один из лучших способов знакомства с оболочкой 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-файлы справки, используемые командлетами, введите следующую команду:
| Дополнительные сведения о формате 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 –
Справка по интегрированной среде сценариев
Помимо функции справки в командной строке доступен графический файл справки (WindowsPowerShellHelp.chm), который расположен в каталоге %SystemRoot%\Help\mui\<идентификатор_языка>, где параметр "идентификатор_языка" определяет язык установки, например 0409. Чтобы открыть графический файл справки при работе с интегрированной средой сценариев, выберите нужную команду и нажмите клавишу F1. Открывается CHM-файл, в котором отображается справка по выбранной команде, как показано на рис. 5-4.
Обратите внимание, что в CHM-файле содержится справка только по основным командлетам Windows PowerShell. Для получения справки по командлетам, относящимся к SharePoint, следует использовать командлет Get-Help командной консоли SharePoint 2010.

Рис. 5-4. Графическая справка Windows PowerShell
Обратите внимание, что в CHM-файле содержится справка только по основным командлетам Windows PowerShell. Для получения справки по командлетам, относящимся к SharePoint, следует использовать командлет Get-Help командной консоли SharePoint 2010.
| Дополнительные сведения о функции справки в оболочке Windows PowerShell, а также о возможностях ее настройки для отображения справки по псевдонимам, отключения локальной справки или принудительной загрузки справки в интегрированную среду сценариев непосредственно с сайта TechNet см. в статье http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2009/01/31/using-help-in-powershell-ise.aspx (Возможно, на английском языке). Корпорация Майкрософт рекомендует всегда проверять интерактивную справку, в которой представлены последние изменения и примеры. При использовании командлета Get-Help ссылка на интерактивную справку отображается в разделе связанных ссылок. |
Рис. 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 используются регулярные выражения.
Вместо оператора 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.
Чтобы получить сведения об установленных шаблонах и их идентификаторах, воспользуйтесь командлетом Get-SPWebTemplate. Ниже показан пример выходных данных этой команды.
В командлетах Get-SPSite и Get-SPSiteAdministration можно использовать два других вида фильтров на базе языка SQL: подстановочные знаки URL-адресов и регулярные выражения (-RegEx), например:
По умолчанию 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, что может заметно снизить производительность запросов к страницам на этом сервере.
При хранении любого из этих трех объектов в переменной необходимо высвобождать память, выделяемую соответствующим объектам. В следующих примерах показаны основные способы использования этих объектов с переменными и высвобождения памяти.
Дополнительные сведения о параметрах, которые можно использовать с командлетом, представлены в разделе синтаксиса результатов справки, как показано в следующих выходных данных. Необязательные параметры заключаются в квадратные ([ ]), а значения, передаваемые в параметры, — в угловые (<>) скобки. В следующем примере показан раздел синтаксиса командлета 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 используются регулярные выражения.
| Дополнительные сведения об операторах Windows PowerShell см. в разделе, посвященном работе с выражениями и операторами, в главе 5 карманного руководства администратора Windows PowerShell 2.0, которая содержит данные об основных структурах Windows PowerShell (автор Уильям Стэйнек (William Stanek), Microsoft Press, 2009 г.). |
- В этом примере возвращаются все семейства сайтов, основным владельцем которых является пользователь с именем 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"}
| Если при создании нового семейства сайтов шаблон не указан или не найден, то веб-сайт необходимо создать как корневой сайт семейства. Для этого можно использовать команду New-SPWeb или выбрать соответствующий шаблон сайта при первом отображении семейства сайтов в браузере. |
В командлетах Get-SPSite и Get-SPSiteAdministration можно использовать два других вида фильтров на базе языка SQL: подстановочные знаки URL-адресов и регулярные выражения (-RegEx), например:
- Get-SPSite http://intranet/sites/*
- Get-SPSite "http://intranet/(sites|teams)/HR" -RegEx
По умолчанию 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.
- Расширенный способ — использование командлета SPAssignment с отслеживанием состояния памяти, выделяемой конкретным переменным. В следующем примере с помощью командлета Start-SPAssignment создается именованное хранилище, на которое указывает переменная $o, а также связанная с этим хранилищем переменная $sc, в которой сохраняются сведения об объекте семейства интернет-сайтов. После этого командлет Stop-SPAssignment высвобождает память, связанную с именованным хранилищем.
- Разработчики решений на платформе SharePoint могут применять схожий способ. Например, можно использовать переменные в одной строке Windows PowerShell, высвобождая выделенную им память в конце этой строки.
В этом случае объект семейства сайтов сохраняется в переменной $sc. Следующая команда выводит название семейства сайтов интрасети, а последняя команда высвобождает память, в которой был сохранен объект семейства сайтов.
Примечание.
Для безопасного выполнения этой команды используйте следующий синтаксис.
New-SPSite(http://intranet) | Select Title
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.
Эта команда формирует список разделов справки по командлетам, отсортированный по существительному. В этом списке представлены те же разделы справки, которые можно просмотреть в командной консоли SharePoint 2010 с помощью следующей команды.
Get-Help <Cmdlet-Name> -detailed
В этом документе представлены данные, актуальные на момент его написания. Корпорация Майкрософт рекомендует всегда проверять интерактивную справку, в которой представлены последние изменения и примеры. При использовании командлета Get-Help ссылка на интерактивную справку отображается в разделе связанных ссылок.
@(Get-Command -PSSnapin "Microsoft.SharePoint.PowerShell").count
В большинстве случаев эти командлеты используются для работы с объектами SPSite, SPServer, SPWeb, SPBusinessDataCatalogue и SPConfigurationDatabase. Поскольку оболочка Windows PowerShell предназначена в первую очередь для администраторов, а управление этими компонентами является основной задачей администратора, такое разнообразие командлетов вполне объяснимо. Все эти командлеты также доступны в решении SharePoint 2010, которое построено на базе SharePoint Foundation.
| К этой книге прилагается справочник по командлетам Microsoft SharePoint Foundation 2010. В этом документе описываются выходные данные, которые отображаются при вводе следующей команды в командную консоль SharePoint 2010. |
Get-Help <Cmdlet-Name> -detailed
В этом документе представлены данные, актуальные на момент его написания. Корпорация Майкрософт рекомендует всегда проверять интерактивную справку, в которой представлены последние изменения и примеры. При использовании командлета Get-Help ссылка на интерактивную справку отображается в разделе связанных ссылок.
Командлеты для 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 можно использовать большее число командлетов для создания и удаления объектов служб приложений и управления ими.
Скопируйте файлы на тот же сервер и введите следующую команду.
Выводятся выходные данные, аналогичные следующему примеру.
В этом списке отображаются только те объекты, которые не присутствуют одновременно в обеих установках, а также те, для которых число командлетов на объект различается. В столбце 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>
Выполнение основных задач администрирования
В установке SharePoint выполняется два типа задач администрирования: задачи, выполняемые однократно и с любого сервера (например, создание нового веб-приложения, настройка основного владельца семейства сайтов или удаление веб-сайта), а также задачи, выполняемые многократно на отдельном сервере или на нескольких серверах (например, запуск службы на сервере, добавление или удаление сервера фермы, подключение сервера к заданной базе данных конфигурации). Администратор SharePoint выполняет преимущественно задачи первого типа независимо от того, на какой сервер был выполнен вход, поскольку эти задачи можно выполнять с любого сервера.
Применение Windows PowerShell позволяет упростить выполнение задач администрирования обоих типов. Благодаря возможности циклической обработки большого числа объектов и внедрения скриптов в автоматизированные задачи достигается существенное сокращение затрат времени на их выполнение. Несмотря на легкость выполнения задач администрирования с помощью оболочки Windows PowerShell, не рекомендуется использовать ее в обход реализованных в системе элементов управления. Некоторые задачи, выполняемые на уровне фермы, могут быть очень опасны, поскольку затрагивают установку в целом. В рабочей среде такие задачи должны выполняться при условии строгого управления изменениями.
В Windows PowerShell представлен ряд необязательных возможностей, которые рассматриваются как рекомендуемые. В следующих разделах более подробно будут рассмотрены две такие возможности: параметр -whatif и запись протокола.
Применение Windows PowerShell позволяет упростить выполнение задач администрирования обоих типов. Благодаря возможности циклической обработки большого числа объектов и внедрения скриптов в автоматизированные задачи достигается существенное сокращение затрат времени на их выполнение. Несмотря на легкость выполнения задач администрирования с помощью оболочки Windows PowerShell, не рекомендуется использовать ее в обход реализованных в системе элементов управления. Некоторые задачи, выполняемые на уровне фермы, могут быть очень опасны, поскольку затрагивают установку в целом. В рабочей среде такие задачи должны выполняться при условии строгого управления изменениями.
| Во многих организациях задачи администрирования выполняются только посредством удаленного доступа к рабочим серверам. Доступ в компьютерные залы строго ограничен, в результате чего возможность интерактивного доступа к консоли сервера присутствует редко и используется только для решения аппаратных проблем. В таких средах даже возможности удаленного доступа к рабочим серверам ограничены небольшим числом административных компьютеров, к которым администраторы подключаются с помощью виртуальной частной сети или удаленного рабочего стола. В настройках административного компьютера создание сеансов удаленного рабочего стола обычно разрешается строго ограниченному кругу пользователей (или соответствующим IP-адресам). В таких средах возможности удаленного управления установкой SharePoint с помощью консоли Windows PowerShell также будут ограничены административным компьютером. В Windows PowerShell реализован ряд встроенных функций, позволяющих сократить риски воздействия выполняемых задач на всю установку SharePoint. Эти функции были описаны ранее в разделе "Удаленное управление системами с помощью службы WinRM" этой главы. |
Использование параметра -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 отображает объекты, которые будут затронуты в случае выполнения команды, не выполняя ее фактически. В этом примере отображаются объекты, которые будут удалены без возможности восстановления.
Применение параметра -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 для всех пользователей. Запись в файл протокола прекращается при выходе пользователя из консоли.
Последствия выполнения команд без параметра -whatif в рабочих средах
В некоторых случаях даже опытные ИТ-специалисты могут неправильно использовать встроенные командлеты, что может повлечь за собой серьезные последствия. В особенности это касается использования командлетов в сочетании со знаками вертикальной черты. Например, с помощью команды Get-SPSite | Remove-SPSite все семейства сайтов в ферме удаляются без возможности восстановления. При этом удаляется весь контент веб-сайтов, включая данные в списках и библиотеках. Естественно, после такой катастрофы телефонные линии службы поддержки будут переполнены огромным числом звонков. При этом, если среди удаленных окажется основной веб-сайт компании, это повлечет за собой потерю денег и, что еще более серьезно, потенциальных клиентов, которых будет очень трудно вернуть. В этом случае для восстановления фермы потребуется огромный объем работы и наличие копий на ленточных носителях. Вывод прост: всегда сначала используйте параметр -whatif!
| Не рекомендуется сразу же использовать новые командлеты и скрипты Windows PowerShell в рабочей среде. Также следует обеспечивать простоту кода. Не рекомендуется создавать и использовать псевдонимы, если скрипты будут поддерживаться администраторами, мало знакомыми с оболочкой Windows PowerShell. Всегда используйте функции комментариев Windows PowerShell при создании или расширении скриптов. |
В некоторых случаях даже опытные ИТ-специалисты могут неправильно использовать встроенные командлеты, что может повлечь за собой серьезные последствия. В особенности это касается использования командлетов в сочетании со знаками вертикальной черты. Например, с помощью команды Get-SPSite | Remove-SPSite все семейства сайтов в ферме удаляются без возможности восстановления. При этом удаляется весь контент веб-сайтов, включая данные в списках и библиотеках. Естественно, после такой катастрофы телефонные линии службы поддержки будут переполнены огромным числом звонков. При этом, если среди удаленных окажется основной веб-сайт компании, это повлечет за собой потерю денег и, что еще более серьезно, потенциальных клиентов, которых будет очень трудно вернуть. В этом случае для восстановления фермы потребуется огромный объем работы и наличие копий на ленточных носителях. Вывод прост: всегда сначала используйте параметр -whatif!
Примеры задач администрирования SharePoint
Многие задачи администрирования необходимо выполнять ежедневно, однако существуют такие, которые выполняются периодически или вовсе редко. В Windows PowerShell предусмотрены возможности для повышения эффективности задач любого вида. В некоторых случаях написание скрипта для редко выполняемой задачи может дать гораздо больший эффект, чем автоматизация ежедневно выполняемой задачи. Это связано с тем, что редкие задачи зачастую необходимо выполнять как можно быстрее и с минимальным риском ошибок, поскольку последствия даже небольших ошибок в таких случаях могут быть катастрофическими. В этой книге приводится множество примеров использования оболочки Windows PowerShell. В следующих разделах будет рассмотрено несколько абсолютно новых примеров.
| В центре скриптов 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.
При работе с установкой SharePoint, необходимо объединить журналы. В операционных системах Windows ведутся журналы событий, сведения в которых позволяют упростить выполнение задач администрирования. С помощью командлета Windows PowerShell Get-Eventlog можно получить подробные данные из этих журналов. Кроме того, в SharePoint представлена единая служба ведения журнала, в которой содержатся события всех журналов приложений. Также поддерживается интеграция с этой службой стороннего программного обеспечения ведения журнала. В SharePoint 2010 используется несколько командлетов Windows PowerShell для извлечения данных и настройки единой службы ведения журнала. Чтобы определить параметры настройки этой службы в ферме, введите следующую команду. (Также показан пример выходных данных этой команды.)
Get-SPDiagnosticConfig
В процессе диагностики проблем можно использовать командлеты, связанные с объектом SPLogEvent. Для выполнения этих командлетов необходимы права администратора (возможно, потребуется запустить командную консоль SharePoint 2010 от имени администратора). Далее эти команды используются аналогично следующему примеру.

Рис. 5-5. Страница ошибки с идентификатором корреляции
В крупных или активно используемых установках SharePoint при возникновении проблем может создаваться большое число записей журналов. С помощью идентификатора корреляции можно уменьшить объем возвращаемых сведений в журналах, ограничив их только записями, относящимися к конкретному случаю. Чтобы задать временные рамки проблемы, следует использовать переменные $sdate и $edate. Если вам не удается воспроизвести условия возникновения проблемы, но это возможно на стороне пользователя, обратитесь в службу поддержки и запросите снимок экрана страницы ошибки, чтобы проверить правильность полученного идентификатора корреляции. После этого можно передать результаты команды (показаны на шаге 2) в командлет Where-Object, как показано в следующем примере.
В выходных данных отображаются только журналы событий в диапазоне между заданными датами, которые относятся к проблеме, связанной с этим идентификатором корреляции.
| Дополнительные сведения о возможностях автоматизации в SharePoint и использовании средств psconfig, stsadm и оболочки Windows PowerShell см. на странице http://stsadm.blogspot.com/ (Возможно, на английском языке). |
Get-SPDiagnosticConfig
В процессе диагностики проблем можно использовать командлеты, связанные с объектом SPLogEvent. Для выполнения этих командлетов необходимы права администратора (возможно, потребуется запустить командную консоль SharePoint 2010 от имени администратора). Далее эти команды используются аналогично следующему примеру.
- Например, настройка двух переменных для хранения дат начала и окончания.
Если требуется найти событие, произошедшее около 15 минут назад, с помощью переменной можно задать интервал между следующими моментами времени: за 20 минут до текущего времени и 10 минут спустя.
- Получение списка событий между двумя заданными датами и моментами времени.
Get-SPLogEvent -StartDate $SDate -EndTime $Edate
Если параметр -EndTime не указан, отображаются журналы событий вплоть до текущих значений даты и времени.
Рис. 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, которые после разработки проверяются на наличие всех необходимых задач и в дальнейшем позволяют существенно упростить процесс управления конфигурацией и уменьшить число связанных с ним ошибок. Подобные скрипты следует хранить в централизованном месте, что позволит использовать их другим администраторам в своих средах. Также эти скрипты могут быть полезны разработчикам. В качестве примеров задач, автоматизируемых с помощью таких скриптов, можно привести следующие.
Каждое приложение-служба по своему уникально. Например, некоторые приложения-службы не используют базу данных. Дополнительные сведения об этом можно найти в главе 7, посвященной масштабированию фермы SharePoint. Тем не менее, каждая служба использует прокси приложения-службы для подключения веб-приложения к приложению-службе.
Мастер обычно используется для быстрого создания прототипа, а также, возможно, при использовании SharePoint в средах разработки. Однако, если любая из этих сред ограничена по вычислительной мощности ЦП и объему доступной памяти, применение мастера не рекомендуется. Например, служба веб-аналитики потребляет большой объем памяти ЦП, в результате чего разработчики в большинстве случаев запрашивают ее остановку. Также может потребоваться регулярное включение или остановка других служб, особенно если компьютеры разработчиков ежедневно используются для подключения к рабочим столам, чтения электронной почты, написанию документации либо для разработки или создания прототипов в среде SharePoint.
Для управления конфигурацией можно использовать такие средства, как веб-сайт центра администрирования. Тем не менее, в некоторых случаях можно попросту забыть выполнить все задачи необходимые для полного изменения конфигурации. В таких ситуациях рекомендуется использовать скрипты Windows PowerShell, которые после разработки проверяются на наличие всех необходимых задач и в дальнейшем позволяют существенно упростить процесс управления конфигурацией и уменьшить число связанных с ним ошибок. Подобные скрипты следует хранить в централизованном месте, что позволит использовать их другим администраторам в своих средах. Также эти скрипты могут быть полезны разработчикам. В качестве примеров задач, автоматизируемых с помощью таких скриптов, можно привести следующие.
- Быстрое удаление заданного веб-приложения:
Get-SPWebApplication http://teams | Remove-SPWebApplication –Confirm - Удаление веб-приложения, веб-сайта IIS и всех связанных баз данных:
Remove-SPWebApplication http://teams –Confirm –DeleteIISSite ' -RemoveContentDatabases
| Если экземпляр связанной службы не запущен, эта команда может не работать в вашей среде. Полный вариант скрипта см. в статье, посвященной созданию приложения-службы с помощью SP и PS 2010 http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=50 (Возможно, на английском языке). |
Использование 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
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. Чтобы вернуться к старому интерфейсу, введите следующую команду.
После выполнения этих команд для сайтов восстанавливается интерфейс SharePoint Server 2007. Например, кнопка "Действия сайта" будет располагаться в верхнем правом, а не в верхнем левом углу. В меню "Действия сайта" будет доступен параметр "Визуальное обновление" (тем не менее, визуальное обновление может быть отключено на уровне семейства сайтов). Чтобы включить визуальное обновление на уровне семейства сайтов, используйте следующие команды.
При обновлении свойств объекта SPSite не используется метод обновления — все изменения вступают в силу незамедлительно. В качестве альтернативы двум предыдущим строкам команд можно ввести одну команду.
Чтобы восстановить интерфейс SharePoint Server 2007 для всех сайтов группы в семействе, воспользуйтесь следующей командой.
В командлете Set-SPWeb отсутствуют параметры для выполнения этой задачи. Для этого следует использовать свойства объекта SPWeb. Чтобы вернуться к старому интерфейсу, введите следующую команду.
| Ранее в этой главе описывалось создание переменных для хранения значений и объектов. Перед именами переменных указывается префикс $. В показанном здесь примере кода используется переменная $true. Эта переменная, а также другие схожие ключевые слова представляют собой пример специальной переменной. Специальная переменная обрабатывается как зарезервированное слово, которое нельзя использовать для хранения значений или объектов в скриптах. Специальная переменная $true представляет значение True, $false — значение False, $null — значение null, а переменная $_, которая также используется в этой главе, содержит текущий объект конвейера. Она используется в блоках скриптов, фильтрах и командлете Where. |
При обновлении свойств объекта SPSite не используется метод обновления — все изменения вступают в силу незамедлительно. В качестве альтернативы двум предыдущим строкам команд можно ввести одну команду.
Чтобы восстановить интерфейс SharePoint Server 2007 для всех сайтов группы в семействе, воспользуйтесь следующей командой.
| Эти команды также можно выполнять в семействе сайтов, для которого не выполнено обновление, то есть на сайтах версии 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>Заключение
В этой главе описываются новые командлеты 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 и, в частности, рассмотрим интерфейс центра администрирования.
На данный момент доступно более 500 командлетов SharePoint. Естественно, в этой главе невозможно описать их все. Вместо этого мы постарались привести общие рекомендации по использованию SharePoint PowerShell в рабочей среде, в том числе по настройке и удаленному управлению, записи протокола и использованию параметра -whatif. Обратите внимание, что настоятельно не рекомендуется проверять или впервые выполнять новые команды Windows PowerShell в рабочей среде. Постарайтесь, чтобы ваши скрипты были как можно более простыми, не стесняйтесь использовать комментарии и документировать скрипты. Кроме того, не следует использовать или создавать псевдонимы, если скрипты будут поддерживаться администраторами, не знакомыми с оболочкой Windows PowerShell.
В этой главе немного более подробно описываются два важных командлета — Start-SPAssignment и Stop-SPAssignment. Они используются при работе с высвобождаемыми объектами, такими как SPSite, SPWeb и SPSiteAdministration. Другие командлеты SharePoint были представлены для более полного ознакомления с принципами работы в Windows PowerShell. Материалы этой главы используются в главе 12, посвященной различным сценариям поиска. В следующей главе мы продолжим обсуждение принципов управления фермами SharePoint 2010 и, в частности, рассмотрим интерфейс центра администрирования.
Комментариев нет:
Отправить комментарий