PowerShell для сисадминов - Адам Бертрам - E-Book

PowerShell для сисадминов E-Book

Adam Bertram

0,0
10,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

PowerShell® — это одновременно язык сценариев и командная оболочка, которая позволяет управлять системой и автоматизировать практически любую задачу. В книге «PowerShell для сисадминов» обладатель Microsoft MVP Адам Бертрам aka «the Automator» покажет, как использовать PowerShell так, чтобы у читателя наконец-то появилось время на игрушки, йогу и котиков. Вы научитесь: -Комбинировать команды, управлять потоком выполнения, обрабатывать ошибки, писать сценарии, запускать их удаленно и тестировать их с помощью фреймворка тестирования Pester. -Анализировать структурированные данные, такие как XML и JSON, работать с популярными сервисами (например Active Directory, Azure и Amazon Web Services), создавать системы мониторинга серверов. -Создавать и проектировать модули PowerShell. -Использовать PowerShell для удобной, полностью автоматизированной установки Windows. -Создавать лес Active Directory, имея лишь узел Hyper-V и несколько ISO-файлов. -Создавать бесчисленные веб- и SQL-серверы с помощью всего нескольких строк кода! Реальные примеры помогают преодолеть разрыв между теорией и работой в настоящей системе, а легкий авторский юмор упрощает чтение. Перестаньте полагаться на дорогое ПО и невнятные советы из сети!

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 366

Veröffentlichungsjahr: 2023

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Адам Бертрам
PowerShell для сисадминов

Научный редактор А. Логунов

Переводчик С. Черников

Художник В. Мостипан

Корректоры С. Беляева, М. Молчанова (Котова)

Верстка Л. Егорова

Адам Бертрам

PowerShell для сисадминов. — СПб.: Питер, 2021.

ISBN 978-5-4461-1732-1

© ООО Издательство "Питер", 2021

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Об авторе
О научном редакторе
Благодарности
Введение
Почему именно PowerShell?
Для кого эта книга
О книге
От издательства
Часть I. Основы
1. Начало работы
Открытие консоли PowerShell
Использование команд DOS
Изучаем команды PowerShell
Подсказки
Обновление документов
Итоги
2. Основные понятия PowerShell
Переменные
Типы данных
Объекты
Структуры данных
Создание пользовательских объектов
Итоги
3. Объединение команд
Запуск службы Windows
Использование конвейера
Написание сценариев
Итоги
4. Поток управления
Немного о потоке управления
Использование условных операторов
Использование циклов
Итоги
5. Обработка ошибок
Работа с исключениями и ошибками
Обработка незавершающих ошибок
Обработка завершающих ошибок
Изучение автоматической переменной $Error
Итоги
6. Пишем функции
Функции и командлеты
Определение функции
Добавление параметров в функции
Атрибут параметра Mandatory
Значения параметров по умолчанию
Добавление атрибутов проверки параметров
Прием входных данных конвейера
Итоги
7. Изучаем модули
Изучение встроенных модулей
Компоненты PowerShell-модуля
Работа с пользовательскими модулями
Создание собственного модуля
Итоги
8. Удаленный запуск сценариев
Работа с блоками сценариев
Работа с сеансами
Общие сведения об авторизации при удаленном управлении PowerShell
Итоги
9. Тестирование с помощью Pester
Знакомьтесь: Pester
Основы Pester
Выполнение теста Pester
Итоги
Часть II. Автоматизация повседневных задач
Работа со структурированными данными
Автоматизация задач Active Directory
Управление облаком
Создание сценария инвентаризации сервера
Итоги
10. Парсинг структурированных данных
CSV-файлы
Таблицы Excel
Данные в формате JSON
Итоги
11. Автоматизация Active Directory
Исходные требования
Установка модуля ActiveDirectory в PowerShell
Запросы и фильтрация объектов AD
Создание и изменение объектов AD
Синхронизация с другими источниками данных
Итоги
12. Работа с Azure
Исходные требования
Авторизация в Azure
Создание виртуальной машины Azure и всех зависимостей
Развертывание веб-приложения на Azure
Развертывание базы данных SQL Azure
Итоги
13. Работа с Amazon Web Services
Исходные требования
Авторизация в AWS
Создание экземпляра AWS EC2
Развертывание приложения Elastic Beanstalk
Создание базы данных SQL Server в AWS
Итоги
14. Создание сценария инвентаризации сервера
Исходные требования
Создание сценария проекта
Определение окончательного результата
Обнаружение и ввод сценария
Запрос всех серверов
Думаем наперед: объединение различных типов информации
Запрос файлов на удаленном расположении
Запрос инструментария управления Windows
Службы Windows
Очистка и оптимизация скрипта
Итоги
Часть III. Создаем свой модуль
PowerLab
Исходные требования
Настройка PowerLab
Демокод
Итоги
15. Создание виртуальной среды
Исходные требования для модуля PowerLab
Создание модуля
Автоматизация подготовки виртуальной среды
Тестирование новых функций с помощью Pester
Итоги
16. Установка операционной системы
Исходные требования
Развертывание ОС
Автоматизация развертывания ОС
Хранение зашифрованных учетных данных на диске
PowerShell Direct
Тестирование с помощью Pester
Итоги
17. Развертывание Active Directory
Исходные требования
Создание леса Active Directory
Создаем лес
Сборка и запуск тестов Pester
Итоги
18. Создание и настройка SQL-сервера
Исходные требования
Создание виртуальной машины
Установка операционной системы
Добавление файла автоматического ответа Windows
Добавление SQL-сервера в домен
Автоматизация SQL-сервера
Запуск тестов Pester
Итоги
19. Рефакторинг кода
Еще раз о функции New-PowerLabSqlServer
Использование наборов параметров
Итоги
20. Создание и настройка веб-сервера IIS
Исходные требования
Установка и настройка
Создание веб-сервера с нуля
Модуль веб-администрирования
Настройка SSL на веб-сайте
Итоги
Рекомендуем прочитать

Книга посвящается всем тем, кто ставит под сомнение статус-кво, противостоит корпоративной культуре в духе «мы всегда так поступали» и всегда предлагает лучшее решение задач.

Об авторе

Адам Бертрам (Adam Bertram) — опытный ИТ-специалист и эксперт в области интернет-бизнеса с 20-летним стажем. Предприниматель, ИТ-инфлюенсер, специалист Microsoft MVP, блогер, тренинг-менеджер и автор материалов по контент-маркетингу, сотрудничающий со многими ИТ-компаниями. Также Адам основал популярную платформу TechSnips для развития навыков ИТ-специалистов (techsnips.io).

О научном редакторе

Джеффри Хикс (Jeffry Hicks) — опытный ИТ-специалист с почти 30-летним стажем. Большую часть этого времени был консультантом по вопросам ИТ-инфраструктур и специализировался на серверных технологиях Microsoft с упором на автоматизацию и эффективность. Джеффри несколько раз получал награду Microsoft MVP. Он показал преимущества PowerShell и автоматизации ИТ-специалистам во всем мире, сейчас выступает в качестве независимого автора, преподавателя и консультанта.

Благодарности

Я не смог бы написать эту книгу и достичь всего того, что у меня есть, без поддержки моей жены Миранды. Время — это самый ценный ресурс, и благодаря ей у меня его больше, чем у многих других. Миранда — настоящий генеральный директор в нашей семье. Она каким-то образом справлялась с двумя дочерьми, поддерживала порядок в доме и кормила нас все те годы, пока я был с головой погружен в работу, стараясь обеспечивать семью. Я бы не смог добиться всего, что у меня есть, если бы она не поддерживала меня и наших детей.

Также хочу поблагодарить Джеффри Сновера (Jeffrey Snover) за создание языка сценариев PowerShell, который по-настоящему изменил мою жизнь. Благодарю Джеффа Хикса (Jeff Hicks), Дона Джонса (Don Jones) и Джейсона Хелмика (Jason Helmick) за то, что они вдохновили меня активно влиться в жизнь сообщества. Спасибо компании Microsoft за поддержку тех безумцев, которые стремятся достигнуть большего, с помощью программы MVP и других инициатив.

Введение

За время работы в сфере ИТ я занимал самые разные должности: находился на передовой в службе поддержки, выезжал к пользователям в качестве техника порой только для того, чтобы перезагрузить компьютер, обслуживал серверы в качестве системного администратора, разрабатывал решения будучи системным инженером, а также изучал разницу между маршрутизацией OSPF и RIP в качестве сетевого инженера.

И лишь открыв для себя PowerShell, я понял, как сильно могу увлечься определенной технологией. PowerShell изменил мою жизнь во многих отношениях и стал решающим этапом на моем карьерном пути. Этот язык помог мне стать незаменимым сотрудником на работе, знающим, как сэкономить бесчисленные рабочие часы моей команды, и принес мне мою первую шестизначную зарплату. Язык PowerShell настолько крут, что я решил поделиться им со всем миром. С тех пор в течение пяти лет подряд я получал престижную награду Microsoft MVP.

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

Почему именно PowerShell?

Язык Microsoft PowerShell, который когда-то назывался Monad (см. https://www.jsnover.com/Docs/MonadManifesto.pdf), в 2003 году позиционировался как более интуитивный способ автоматизации задач по сравнению с VBScript. Сейчас PowerShell представляет собой универсальный язык автоматизации, сценариев и разработки. Он был создан с целью стереть барьер между людьми, занимающимися сценариями, автоматизацией и операционной деятельностью. PowerShell должен был дать пользователям инструмент для автоматизации задач с помощью сценариев без необходимости изучать программирование. Это делает язык особенно полезным для системных администраторов, которым недостает опыта в разработке программного обес­печения. Если вы системный администратор, у которого не хватает времени на решение всех задач, то PowerShell может стать прекрасным союзником.

PowerShell сегодня — это повсеместно используемый кроссплатформенный язык написания сценариев и разработки с открытым исходным кодом. Вы можете использовать его не только для поддержки полностью настроенных ферм серверов, но и для создания текстового файла или настройки раздела реестра. Тысячи программных продуктов и сервисов используют PowerShell благодаря постоянно растущему уровню его внедрения среди ИТ-специалистов, разработчиков, инженеров DevOps, администраторов баз данных и системных инженеров.

Для кого эта книга

Эта книга предназначена для ИТ-специалистов и системных администраторов, которым надоело постоянно использовать один и тот же интерфейс и выполнять одну и ту же задачу в пятисотый раз за этот год. Также она будет полезна для инженеров DevOps, которые испытывают затруднения с автоматизацией новых серверных сред, выполнением автоматических тестов или автоматизацией конвейера непрерывной интеграции / непрерывной доставки (CI/CD).

Не получится назвать отрасль, для которой PowerShell был бы полезен больше всего. Традиционная должность пользователя PowerShell в «магазине Windows» — системный администратор Microsoft, однако PowerShell хорошо вписывается в набор инструментов любого сотрудника в сфере ИТ. Если вы работаете в ИТ, но не считаете себя разработчиком, эта книга для вас.

О книге

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

Я не буду разбирать PowerShell по частям и рассматривать каждый элемент по отдельности, поскольку в жизни вы так делать не будете. Например, я не ожидаю, что вы знаете определение функции или цикла for — вместо этого я буду при любой удобной возможности так комбинировать элементы, чтобы дать вам наиболее целостное представление о задаче и способах ее решения.

Книга разделена на три части. Часть I «Основы» дает знания, необходимые новичкам в PowerShell для общения с опытными специалистами разработки. Если вы владеете PowerShell на среднем или более высоком уровне, то можете сразу перейти к главе 8.

В главах 1–7 рассматривается непосредственно язык PowerShell. Вы изу­чите основы, например, как найти помощь и новые команды, а также некоторые понятия программирования, общие для других языков, — переменные, объекты, функции, модули и основы обработки ошибок.

В главе 8 объясняется, как использовать инструменты удаленной работы PowerShell для подключения и выполнения команд на других компьютерах.

В главе 9 мы познакомимся с популярной платформой тестирования PowerShell под названием Pester, которую вы будете использовать на протяжении всей книги.

В части II «Автоматизация повседневных задач» вы примените знания, полученные в части I, чтобы начать автоматизировать часто встречающиеся задачи.

В главах 10–13 рассказывается, как анализировать структурированные данные, а также обращаться с инструментами, с которыми работают многие ИТ-администраторы, например с Active Directory, Azure и Amazon Web Services (AWS).

В главе 14 показано, как создать инструмент для инвентаризации серверов, который можно использовать в собственной среде.

В части III «Создаем свой модуль» вы сконцентрируетесь на создании единого модуля PowerShell под названием PowerLab, чтобы продемонстрировать возможности языка. Мы рассмотрим, каким должен быть хороший дизайн модуля, а также изучим передовые методы работы с функциями. Даже если вы считаете себя опытным разработчиком сценариев PowerShell, вы наверняка узнаете что-то новое из третьей части.

В главах 15–20 объясняется, как использовать PowerShell для автоматизации всей лабораторной или тестовой серверной среды на примере настройки виртуальных машин Hyper-V, настраивать операционные системы, а также разворачивать и настраивать серверы IIS и SQL.

Хочу верить, что эта книга поможет вам освоить PowerShell. Если вы новичок, я надеюсь, она придаст вам смелости приступить к автоматизации, а если вы опытный сценарист — то, скорее всего, узнаете новые для себя приемы.

Пора писать сценарии!

От издательства

В локализированной версии PowerShell некоторые приведенные в книге строки вывода консоли переведены на русский язык. Однако большая часть пока что все равно существует только на английском, поэтому мы намеренно оставили оригинальные листинги. Если вы хотите узнать об истории выпусков модулей и командлетов PowerShell, ознакомьтесь с информацией по ссылке https://docs.microsoft.com/ru-ru/powershell/scripting/whats-new/cmdlet-versions?view=powershell-5.1.

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информа­цию о наших книгах.

Часть I. Основы

Как гласит старая пословица, прежде чем начать ходить, сперва нужно научиться ползать. Это же правило работает и с PowerShell. В частях II и III этой книги вы узнаете, как можно создать несколько мощных инструментов. Но прежде вам нужно изучить основы языка. Если вы уже опытный пользователь PowerShell, можете пропустить первую часть — возможно, вы узнаете из нее что-то новое, однако эти крупицы знаний не стоят потраченного времени.

Если же вы новичок в PowerShell, то эта часть для вас. Мы изучим язык PowerShell и некоторые его конструкции, которые вы будете постоянно использовать. Мы рассмотрим все основные моменты, начиная от базовых понятий программирования, таких как переменные и функции, и заканчивая написанием сценариев, их удаленным запуском и тестированием с помощью пока неизвестной вам системы Pester. Поскольку в этой части мы лишь рассматриваем основы, то пока что не будем создавать множество инструментов — для этого предназначены части II и III. Здесь же мы рассмотрим небольшие примеры, чтобы лучше понять язык. Вы получите первое представление о том, на что способен PowerShell. Давайте начнем!

1. Начало работы

Само название PowerShell отсылает к двум вещам. Одна из них — оболочка командной строки, установленная по умолчанию во всех последних версиях Windows начиная с Windows 7. Недавно она появилась и на операционных системах Linux и macOS с помощью PowerShell Core. Вторая — это язык сценариев. Вместе они относятся к единой структуре, которую можно использовать для автоматизации всего — от одновременной перезагрузки ста серверов до создания полной системы автоматизации, управляющей целым дата-центром.

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

В этой главе мы рассмотрим некоторые базовые команды, а также методы поиска и чтения справочной информации.

Открытие консоли PowerShell

В этой книге мы используем версию PowerShell v5.1, которая уже встроена в Windows 10. В новых версиях PowerShell есть больше функций и меньше багов, но базовый синтаксис и функции PowerShell не претерпели значительных изменений со времен версии 2.

Чтобы открыть PowerShell в Windows 10, введите команду PowerShell в меню «Пуск». Вы сразу же увидите нужный вариант. При открытии приложения должна появиться синяя консоль и мигающий курсор, как показано на рис. 1.1.

Рис. 1.1. Консоль PowerShell

Мигающий курсор означает, что PowerShell готов принимать от вас команды. Обратите внимание, что ваша строка — приглашение ввода, начинающаяся с PS, вероятно, будет отличаться от моей, так как в ней указано ваше текущее местоположение в системе. Как видно из заголовка моей консоли, я щелкнул по значку PowerShell правой кнопкой мыши и запустил его от имени администратора. Это дает мне полные права, а запуск происходит в каталоге C:\Windows\system32\WindowsPowerShell\v1.0.

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

После открытия PowerShell можно приступать к его изучению. Если вы когда-либо использовали командную строку Windows, cmd.exe, для вас станет приятным сюрпризом то, что все команды, к которым вы привыкли (например, cd, dir и cls), также работают в PowerShell. По сути, эти «команды» среды DOS на самом деле являются не командами, а их псевдонимами, благодаря которым PowerShell и понимает эти команды. Но пока не обязательно вникать в эту разницу — просто считайте их своими друзьями из среды DOS!

Давайте попробуем ввести некоторые из этих команд. Если вы находитесь в строке приглашения PS> и хотите проверить содержимое определенного каталога, сначала перейдите в этот каталог с помощью команды cd (сокращение от change directory). С помощью этой команды вы перейдете в каталог Windows:

PS> cd .\Windows\

PS C:\Windows>

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

Обратите внимание, что в этой команде я указал каталог Windows с точкой и обратной косой чертой по обе стороны: .\Windows\. На самом деле, вам не нужно вводить все это, потому что в консоли PowerShell есть отличная функция автозаполнения, которая позволяет вам с помощью клавиши Tab просмотреть доступные команды.

Например, если вы наберете Get-, а затем нажмете клавишу Tab, среда начнет предлагать вам все команды, которые начинаются с Get-. С помощью многократного нажатия этой клавиши можно перебрать все возможные команды, а Shift+Tab возвращает вас назад. Автозаполнение можно использовать и в параметрах, о чем мы с вами поговорим в разделе «Изучаем команды PowerShell» на примере команды Get-Content с последующим нажатием Tab. В этом случае вместо прокрутки команд PowerShell начнет предлагать возможные параметры для команды Get-Content.

Оказавшись в папке C:\Windows, можно использовать команду dir для вывода списка содержимого вашего текущего каталога, как показано в листинге 1.1.

Листинг 1.1. Вывод содержимого текущего каталога с помощью команды dir

PS C:\Windows> dir

    Directory: C:\Windows

Mode                LastWriteTime          Length Name

----                -------------          ------ ----

d-----         3/18/2019  4:03 PM                 addins

d-----          8/9/2019 10:28 AM                 ADFS

d-----         7/24/2019  5:39 PM                 appcompat

d-----         8/19/2019 12:33 AM                 AppPatch

d-----         9/16/2019 10:25 AM                 AppReadiness

--пропуск--

С помощью команды cls можно очистить окно консоли. Если вы знакомы с командной строкой cmd.exe, попробуйте другие известные вам команды и посмотрите, как они ведут себя в PowerShell. Большинство из них работает — но не все. Если вам любопытно, какие команды cmd.exe работают в этой консоли, то после ее запуска можно ввести команду Get-Alias: она выведет вам многие старомодные команды cmd.exe, к которым вы привыкли.

PS> Get-Alias

Таким образом вы сможете увидеть все встроенные псевдонимы и сопоставляемые с ними команды PowerShell.

Изучаем команды PowerShell

Как и почти во всех языках, в PowerShell есть команды — общий термин для именованных исполняемых выражений. Командой может быть что угодно — от устаревшего инструмента ping.exe до ранее упомянутой Get-Alias. Можно даже создавать собственные команды. Однако если вы попытаетесь использовать несуществующую команду, то получите печально известную ошибку с текстом красного цвета, как показано в листинге 1.2.

Листинг 1.2. При вводе неизвестной команды отображается ошибка

PS> foo

foo : The term 'foo' is not recognized as the name of a cmdlet, function,

script file, or operable program. Check the spelling of the name, or if a

path was included, verify that the path is correct and try again.

At line:1 char:1

+ foo

+ ~~~

    + CategoryInfo          : ObjectNotFound: (foo:String) [], CommandNotFoundException

    + FullyQualifiedErrorId : CommandNotFoundException

Чтобы увидеть список всех команд, которые PowerShell знает по умолчанию, можно выполнить команду Get-Command. Наверняка вы заметили общую закономерность: имена большинства команд сформированы по схеме глагол-существительное. Это уникальная черта PowerShell. Чтобы язык оставался как можно более интуитивно понятным, в Microsoft задали специальные правила образования имен команд. Хотя это не обязательный подход, его настоятельно рекомендуется соблюдать при создании собственных команд.

Команды PowerShell бывают нескольких видов: командлеты, функции, псевдонимы и иногда внешние сценарии. Большинство встроенных команд от Microsoft — это командлеты, которые обычно представляют собой команды из других языков, например C#. Выполнив команду Get-Command, как показано в листинге 1.3, вы увидите поле CommandType.

Листинг 1.3. Отображение типа команды Get-Alias

PS> Get-Command -Name Get-Alias

CommandType     Name              Version     Source

-----------     ----              -------     ------

Cmdlet          Get-Alias         3.1.0.0     Microsoft.PowerShell.Utility

Функции — это команды, напротив, написанные на PowerShell. Вы будете писать функции для выполнения задач, а командлеты оставьте на долю разработчиков программного обеспечения. Командлеты и функции — это наиболее распространенные типы команд, с которыми вы будете работать в PowerShell.

Вы будете использовать команду Get-Command, чтобы исследовать изобилие командлетов и функций, имеющихся в PowerShell. Однако как вы, возможно, уже убедились, ввод Get-Command без параметров заставит вас сидеть и ждать, пока консоль не переберет все возможные варианты.

У многих команд в PowerShell есть параметры — значения, которые вы задаете (или передаете) команде, чтобы задать ее поведение. Например, у Get-Command есть параметры, позволяющие возвращать только определенные команды вместо полного списка. В выводе Get-Command вы могли заметить такие распространенные глаголы, как Get, Set, Update и Remove. Если вы решили, что все команды Getполучают информацию, а другие ее изменяют, то вы совершенно правы. PowerShell работает по принципу «что видишь, то и получишь». Коман­ды имеют интуитивно понятные названия и обычно делают именно то, чего вы от них ожидаете.

Поскольку вы — новичок, вам точно не следует ничего менять в системе. Вам просто нужна информация из разных источников. С помощью параметра Verb в Get-Command можно сократить этот огромный список команд только до тех, которые, например, начинаются с Get. Для этого введите следующее в командной строке:

PS> Get-Command -Verb Get

Возможно, вы заметили, что команд все равно выводится многовато, поэтому можно сократить список результатов еще больше, добавив параметр Noun, и задать для него существительное Content, как показано в листинге 1.4.

Листинг 1.4. Вывод команд, содержащих глагол Get и существительное Content

PS> Get-Command -Verb Get -Noun Content

CommandType     Name              Version     Source

-----------     ----              -------     ------

Cmdlet          Get-Content       3.1.0.0     Microsoft.PowerShell.Management

Если теперь выбирать стало практически не из чего, можно использовать только параметр Noun без параметра Verb, как показано в листинге 1.5.

Листинг 1.5. Вывод команд, содержащих существительное Content

PS> Get-Command -Noun Content

CommandType     Name            Version   Source

-----------     ----            -------   ------

Cmdlet          Add-Content     3.1.0.0   Microsoft.PowerShell.Management

Cmdlet          Clear-Content   3.1.0.0   Microsoft.PowerShell.Management

Cmdlet          Get-Content     3.1.0.0   Microsoft.PowerShell.Management

Cmdlet          Set-Content     3.1.0.0   Microsoft.PowerShell.Management

Как видно из этих примеров, Get-Command позволяет разделять глаголы и существительные. Если вы предпочитаете определить всю команду как единое целое, вы можете использовать параметр Name и указать полное имя команды, как показано в листинге 1.6.

Листинг 1.6. Поиск командлета Get-Content по имени команды

PS> Get-Command -Name Get-Content

CommandType     Name             Version   Source

-----------     ----             -------   ------

Cmdlet          Get-Content      3.1.0.0   Microsoft.PowerShell.Management

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

Подсказки

Документация PowerShell ничуть не уникальна, но сам подход к интеграции документации и справочного содержимого в язык — это поистине произведение искусства. В этом разделе вы узнаете, как вывести в консоль справку по командам, получить больше информации о языке в разделах «О программе», а также обновлять документацию с помощью команды Update-Help.

Отображение документов

Подобно команде man в Linux, в PowerShell есть команда help и командлет Get-Help. Если вам интересно узнать, что делает один из этих командлетов Content, можно передать его имя команде Get-Help, чтобы вывести стандартные разделы справки: SYNOPSIS, SYNTAX, DESCRIPTION, RELATEDLINKS и REMARKS. В этих разделах описываются функции команды и способы найти дополнительную информацию о ней и о связанных командах. В листинге 1.7 представлена документация по команде Add-Content.

Листинг 1.7. Страница справки, выводимая командой Add-Content

PS> Get-Help Add-Content

NAME

    Add-Content

SYNOPSIS

    Appends content, such as words or data, to a file.

--пропуск--

Передача только имени команды в Get-Help — это, конечно, практично, но в параметре Examples можно найти самую ценную информацию. Тут выводятся примеры реального использования команды в различных сценариях. Попробуйте ввести Get-Help<ИмяКоманды>-Examples: вы заметите, что почти у всех встроенных команд есть примеры, объясняющие их действие.

Сделаем это, например, для командлета Add-Content, как показано в листинге 1.8.

Листинг 1.8. Вывод примеров использования команды Add-Content

PS> Get-Help Add-Content -Examples

NAME

    Add-Content

SYNOPSIS

    Appends content, such as words or data, to a file.

    -------------------------- EXAMPLE 1 --------------------------

    C:\PS>Add-Content -Path *.txt -Exclude help* -Value "END"

    Description

    -----------

    This command adds "END" to all text files in the current directory,

    except for those with file names that begin with "help."

--пропуск--

Если вам нужна дополнительная информация, то у командлета Get-Help также есть параметры Details и Full, которые дадут вам подробное описание действий команды.

Изучение общих аспектов

В системе PowerShell помимо информации об отдельных командах есть разделы About, представляющие собой фрагменты справки для более широких тем и конкретных команд. Например, в этой главе вы изучаете некоторые базовые команды PowerShell. В Microsoft создали раздел About, в котором дается общее объяснение этих команд. Чтобы открыть его, введите команду Get-Helpabout_Core_Commands, как показано в листинге 1.9.

Листинг 1.9. Справка по командам ядра PowerShell

PS> Get-Help about_Core_Commands

TOPIC

    about_Core_Commands

SHORT DESCRIPTION

    Lists the cmdlets that are designed for use with Windows PowerShell

    providers.

LONG DESCRIPTION

    Windows PowerShell includes a set of cmdlets that are specifically

    designed to manage the items in the data stores that are exposed by Windows

    PowerShell providers. You can use these cmdlets in the same ways to manage

    all the different types of data that the providers make available to you.

    For more information about providers, type "get-help about_providers".

    For example, you can use the Get-ChildItem cmdlet to list the files in a

    file system directory, the keys under a registry key, or the items that

    are exposed by a provider that you write or download.

    The following is a list of the Windows PowerShell cmdlets that are designed

    for use with providers:

--пропуск--

Чтобы получить полный список справок About, используйте подстановочный знак для параметра Name. Подстановочный знак в PowerShell — это звездочка (*). Она может использоваться в качестве заполнителя для нуля или более символов. Вы можете использовать подстановочный знак с параметром Name команды Get-Help, как показано в листинге 1.10.

Листинг 1.10. Использование подстановочного знака в параметре Name команды Get-Help

PS> Get-Help -Name About*

Добавляя подстановочный знак к команде About, вы просите PowerShell искать все возможные темы, которые начинаются с About. Если совпадений окажется несколько, PowerShell выведет список с краткой информацией о каждом. Чтобы получить полную информацию по одному из вариантов, необходимо передать его напрямую в Get-Help, как было показано ранее в листинге 1.9.

Хотя у Get-Help есть параметр Name, можно передать аргумент параметра непосредственно команде, введя -Name, как показано в листинге 1.10. Это действие известно как использование позиционного параметра, который определяет передаваемое значение на основе его (как вы уже догадались) позиции в коман­де. Позиционные параметры — это клише, имеющееся во многих командах PowerShell и позволяющее вам меньше нажимать на клавиши.

Запуск PowerShell от имени администратора

Иногда приходится запускать консоль PowerShell от имени администратора. Обычно это происходит, когда вам нужно изменить файлы, значения реестра или что-то еще, что находится за пределами вашего профиля пользователя. Например, упомянутая ранее команда Update-Help меняет файлы системного уровня и не может быть корректно выполнена пользователем, не являющимся администратором.

Вы можете запустить PowerShell от имени администратора, щелкнув правой кнопкой мыши в Windows PowerShell и выбрав пункт «Запуск от имени администратора», как показано на рис. 1.2.

Рис. 1.2. Запуск PowerShell от имени администратора

Обновление документов

Справочная система в PowerShell — отличная вещь для всех, кто хочет узнать больше о языке, но одно ключевое качество делает ее еще лучше: она динамична! Любая документация со временем устаревает. Она изначально поставляется с продуктом, в работе которого со временем появляются ошибки, выпускаются новые функции. При этом документация остается прежней. В PowerShell эта проблема решена с помощью обновляемой справки, которая позволяет встроенным и сторонним командлетам или функциям ссылаться на URI в интернете, где размещается актуальная документация. Просто введите команду Update-Help, и PowerShell начнет анализировать справку по вашей системе и сравнивать ее с различными онлайн-ресурсами.

Обратите внимание: хотя обновляемая справка включена во все встроенные командлеты PowerShell, для сторонних команд она не требуется. Кроме того, актуальность документации зависит от разработчика. PowerShell предоставляет разработчикам инструменты для создания более качественного справочного контента, но это не отменяет необходимости поддерживать актуальность репозитория, где хранятся файлы справки. Наконец, иногда при запуске команды Update-Help вы можете получать сообщение об ошибке, если расположение, в котором хранится справка, больше не доступно. Короче говоря, не стоит ожидать, что Update-Helpвсегда будет выдавать вам последнюю справку по каждой команде в PowerShell.

Итоги

Из этой главы вы узнали о нескольких командах, которые помогут вам начать работу с PowerShell. Начиная что-то новое, вы не знаете заранее, чего вам пока недостает. Для самостоятельного изучения темы вам нужна крупица знаний. Освоив основы команд PowerShell и то, как можно использовать Get-Command и Get-Help, вы получили инструменты, необходимые для начала изучения PowerShell. Впереди вас ждет большое увлекательное путешествие!