
Представляем новую книгу Андрея Попова “Современный PowerShell”.
В книге рассматривается объектно-ориентированная оболочка командной строки Microsoft PowerShell и ее возможности для автоматизации повседневных задач пользователей и администраторов. Описываются основные элементы и конструкции языка PowerShell, инструменты для написания и отладки сценариев. Приведена информация о работе с файловой системой и структурированными данными (CSV, JSON). Рассмотрены приемы управления процессами, службами и серверами автоматизации. Обсуждаются вопросы взаимодействия с веб-ресурсами при помощи HTTP-запросов. Даны примеры построения GUI для сценариев PowerShell с помощью Windows Forms и Windows Presentation Foundation. Представлены кроссплатформенные возможности PowerShell в macOS и Linux.
Для начинающих системных администраторов и опытных пользователей
- Работа с оболочкой Windows PowerShell в Windows Terminal
- Продвинутая настройка командной строки
- Описание языка PowerShell
- Работа с файловой системой, структурированными данными и веб-ресурсами
- Управление процессами, службами и серверами автоматизации
- Построение GUI для сценариев Windows PowerShell
- Кроссплатформенные возможности PowerShell в macOS и Linux
Попов Андрей Владимирович, специалист ИТ-поддержки и преподаватель с 25-летним стажем, автор нескольких книг по технологиям сценариев Windows, в том числе «Введение в Windows PowerShell» о первой версии оболочки и среды выполнения Microsoft PowerShell.
Содержание
Введение………………………………………………………………………………………………… 10
Для кого предназначена эта книга…………………………………………………………………………………………… 11
Структура книги………………………………………………………………………………………………………………………… 11
Принятые в книге соглашения…………………………………………………………………………………………………… 13
Часть I. Знакомимся с PowerShell…………………………………………. 15
Глава 1. Командная строка и автоматизация работы…………………………….. 16
Зачем нужна командная строка и скрипты……………………………………………………………………………… 17
Особенности языков сценариев для операционной системы…………………………………………………. 17
Инструменты автоматизации в UNIX-подобных системах……………………………………………………. 19
Особенности автоматизации в Windows………………………………………………………………………………….. 21
Командный интерпретатор cmd.exe………………………………………………………………………………… 22
Сервер сценариев Windows Script Host…………………………………………………………………………….. 24
Оболочка и среда выполнения сценариев PowerShell…………………………………………………….. 28
Итоги…………………………………………………………………………………………………………………………………………… 31
Глава 2. Терминал, консоль и командная оболочка……………………………….. 32
Терминалы в Windows……………………………………………………………………………………………………………….. 34
Стандартная консоль Windows…………………………………………………………………………………………. 35
Windows Terminal……………………………………………………………………………………………………………….. 36
Установка и запуск…………………………………………………………………………………………………… 37
Работа с вкладками…………………………………………………………………………………………………… 38
Разделение окна на несколько панелей………………………………………………………………….. 39
Использование палитры команд……………………………………………………………………………… 40
Запуск терминала с аргументами командной строки……………………………………………. 40
Итоги…………………………………………………………………………………………………………………………………………… 41
Глава 3. Первые шаги в PowerShell. Основные понятия………………………… 42
Запуск оболочки PowerShell……………………………………………………………………………………………………… 42
Работают ли знакомые команды………………………………………………………………………………………………. 43
Вычисление выражений……………………………………………………………………………………………………………. 45
Типы команд PowerShell…………………………………………………………………………………………………………….. 46
Командлеты………………………………………………………………………………………………………………………… 47
Имена и структура командлетов……………………………………………………………………………… 47
Общие параметры командлетов………………………………………………………………………………. 50
Поиск командлетов…………………………………………………………………………………………………… 51
Функции………………………………………………………………………………………………………………………………. 52
Сценарии…………………………………………………………………………………………………………………………….. 53
Внешние исполняемые файлы…………………………………………………………………………………………… 53
Псевдонимы команд…………………………………………………………………………………………………………………… 53
Диски PowerShell………………………………………………………………………………………………………………………… 57
Провайдеры PowerShell……………………………………………………………………………………………………… 58
Навигация по дискам PowerShell………………………………………………………………………………………. 59
Просмотр содержимого дисков и каталогов……………………………………………………………………. 60
Создание дисков…………………………………………………………………………………………………………………. 62
Итоги…………………………………………………………………………………………………………………………………………… 63
Глава 4. Работа в оболочке PowerShell……………………………………………………. 65
Редактирование в командной строке PowerShell…………………………………………………………………….. 65
Автоматическое завершение команд……………………………………………………………………………………….. 68
Ввод команды в несколько строках…………………………………………………………………………………………. 70
Справочная система PowerShell……………………………………………………………………………………………….. 70
Получение справки о командлетах………………………………………………………………………………….. 71
Справочная информация, не связанная с командлетами……………………………………………….. 76
История команд в сеансе работы……………………………………………………………………………………………… 78
Протоколирование действий в сеансе работы………………………………………………………………………… 80
Настройка оформления командной строки PowerShell…………………………………………………………… 82
Заголовок командного окна………………………………………………………………………………………………. 83
Приглашение командной строки………………………………………………………………………………………. 85
Настройка пользовательских профилей………………………………………………………………………………….. 86
Политики выполнения сценариев…………………………………………………………………………………………….. 88
Итоги…………………………………………………………………………………………………………………………………………… 90
Глава 5. Работа с объектами………………………………………………………………….. 91
Конвейеризация объектов в PowerShell……………………………………………………………………………………. 91
Просмотр структуры объектов (командлет Get-Member)……………………………………………………….. 93
Фильтрация объектов (командлет Where-Object)……………………………………………………………………. 95
Использование блока кода………………………………………………………………………………………………… 95
Использование оператора сравнения………………………………………………………………………………. 97
Сортировка объектов (командлет Sort-Object)……………………………………………………………………….. 98
Выделение объектов и свойств (командлет Select-Object)…………………………………………………… 100
Выполнение произвольных действий над объектами в конвейере
(командлет ForEach-Object)……………………………………………………………………………………………………. 103
Группировка объектов (командлет Group-Object)………………………………………………………………… 104
Измерение характеристик объектов (командлет Measure-Object)………………………………………. 105
Обращение к статическим методам и полям…………………………………………………………………………. 106
Итоги…………………………………………………………………………………………………………………………………………. 108
Глава 6. Управление выводом команд…………………………………………………. 109
Форматирование выводимой информации……………………………………………………………………………. 110
Перенаправление выводимой информации…………………………………………………………………………… 112
Сохранение данных в файл…………………………………………………………………………………………….. 113
Печать данных…………………………………………………………………………………………………………………. 114
Подавление вывода………………………………………………………………………………………………………….. 115
Табличный вывод данных в графическое окно…………………………………………………………….. 115
Вывод в формате HTML………………………………………………………………………………………………………….. 117
Дополнительные потоки в PowerShell…………………………………………………………………………………….. 120
Перенаправление в файл…………………………………………………………………………………………………. 121
Перенаправление в выходной поток Output………………………………………………………………….. 122
Итоги…………………………………………………………………………………………………………………………………………. 123
Часть II. PowerShell как язык программирования………… 125
Глава 7. Переменные, массивы и хэш-таблицы……………………………………. 126
Числовые и символьные литералы…………………………………………………………………………………………. 126
Числовые литералы…………………………………………………………………………………………………………. 126
Символьные строки………………………………………………………………………………………………………….. 127
Строки в одинарных и двойных кавычках…………………………………………………………… 127
Строки типа here-string……………………………………………………………………………………………. 129
Переменные PowerShell……………………………………………………………………………………………………………. 130
Переменные оболочки PowerShell…………………………………………………………………………………… 131
Пользовательские переменные……………………………………………………………………………………….. 133
Типы переменных……………………………………………………………………………………………………. 133
Приведение типов……………………………………………………………………………………………………. 135
Дополнительные атрибуты переменных………………………………………………………………. 136
Константы……………………………………………………………………………………………………………….. 136
Переменные среды Windows……………………………………………………………………………………………. 137
Массивы в PowerShell………………………………………………………………………………………………………………. 138
Обращение к элементам массива……………………………………………………………………………………. 139
Операции с массивом………………………………………………………………………………………………………. 140
Увеличение длины массива. Объединение массивов…………………………………………… 141
Удаление элементов……………………………………………………………………………………………….. 142
Действие оператора присваивания……………………………………………………………………….. 142
Сохранение в массиве вывода командлетов………………………………………………………… 143
Удаление массива…………………………………………………………………………………………………… 143
Хэш-таблицы (ассоциативные массивы)……………………………………………………………………………….. 144
Операции с хэш-таблицей……………………………………………………………………………………………….. 145
Итоги…………………………………………………………………………………………………………………………………………. 147
Глава 8. Операторы и управляющие инструкции………………………………… 149
Арифметические операторы…………………………………………………………………………………………………… 149
Оператор сложения………………………………………………………………………………………………………….. 150
Оператор умножения……………………………………………………………………………………………………….. 152
Операторы вычитания, деления и остатка от деления…………………………………………………. 153
Операторы присваивания……………………………………………………………………………………………………….. 154
Операторы сравнения……………………………………………………………………………………………………………… 155
Сравнения с использованием массивов…………………………………………………………………………. 156
Операторы проверки на соответствие шаблону…………………………………………………………… 157
Шаблоны с подстановочными символами…………………………………………………………… 157
Шаблоны с регулярными выражениями……………………………………………………………….. 158
Логические операторы…………………………………………………………………………………………………….. 159
Управляющие инструкции языка PowerShell…………………………………………………………………………. 160
Инструкция If … Elseif … Else…………………………………………………………………………………………… 160
Цикл While………………………………………………………………………………………………………………………… 161
Цикл Do … While……………………………………………………………………………………………………………….. 162
Цикл For……………………………………………………………………………………………………………………………. 162
Цикл Foreach…………………………………………………………………………………………………………………….. 163
Инструкция Foreach вне конвейера команд…………………………………………………………. 163
Инструкция Foreach внутри конвейера команд…………………………………………………… 164
Вопросы производительности……………………………………………………………………………….. 165
Метки циклов, инструкции Break и Continue…………………………………………………………………. 165
Инструкция Switch……………………………………………………………………………………………………………. 166
Виды проверок внутри Switch……………………………………………………………………………….. 166
Проверка массива значений…………………………………………………………………………………… 169
Итоги…………………………………………………………………………………………………………………………………………. 171
Глава 9. Функции, фильтры, сценарии и модули…………………………………. 172
Функции в PowerShell……………………………………………………………………………………………………………….. 172
Обработка аргументов с помощью переменной $args…………………………………………………. 173
Формальные параметры функций………………………………………………………………………………….. 175
Позиционные и именованные параметры…………………………………………………………….. 175
Ограничение параметров по типу…………………………………………………………………………. 177
Значения по умолчанию для параметров…………………………………………………………….. 178
Дополнительные атрибуты и валидация параметров…………………………………………. 179
Параметры-переключатели…………………………………………………………………………………… 181
Описание параметров в операторе Param()…………………………………………………………. 182
Передача параметров с помощью сплаттинга переменных………………………………………… 183
Возвращаемые значения…………………………………………………………………………………………………. 184
Функции внутри конвейера команд………………………………………………………………………………… 186
Функции в качестве командлетов. Расширенные функции…………………………………………… 187
Три фазы работы функции в конвейере………………………………………………………………… 187
Доступ к общим параметрам и дополнительным потокам.
Расширенные функции……………………………………………………………………………………………. 189
Сценарии PowerShell………………………………………………………………………………………………………………… 191
Создание сценария…………………………………………………………………………………………………………… 191
Запуск сценария из PowerShell………………………………………………………………………………………… 192
Запуск сценария из внешней программы……………………………………………………………………….. 193
Передача аргументов в сценарии…………………………………………………………………………………… 194
Выход из сценариев. Код возврата………………………………………………………………………………… 195
Области видимости функций………………………………………………………………………………………………….. 195
Глобальная область видимости……………………………………………………………………………………… 196
Оператор Dot-Source……………………………………………………………………………………………………….. 196
Области видимости переменных……………………………………………………………………………………………. 197
Модули PowerShell…………………………………………………………………………………………………………………… 199
Модули-сценарии…………………………………………………………………………………………………………….. 199
Репозиторий сценариев PowerShell Gallery…………………………………………………………………….. 201
Итоги…………………………………………………………………………………………………………………………………………. 204
Глава 10. Обработка ошибок при выполнении команд………………………… 206
Объект ErrorRecord и поток ошибок………………………………………………………………………………………. 207
Сохранение объектов, соответствующих ошибкам……………………………………………………………… 210
Мониторинг возникновения ошибок………………………………………………………………………………………. 213
Режимы обработок ошибок…………………………………………………………………………………………………….. 214
Обработка критических ошибок (исключений)…………………………………………………………………….. 215
Инструкция Trap………………………………………………………………………………………………………………. 216
Инструкция Try/Catch/Finally…………………………………………………………………………………………. 218
Итоги…………………………………………………………………………………………………………………………………………. 218
Часть III. Автоматизируем рутину…………………………………………. 221
Глава 11. Работа с файловой системой и оболочкой Windows………………. 222
Навигация в файловой системе………………………………………………………………………………………………. 222
Получение списка файлов и каталогов………………………………………………………………………………….. 222
Определение размера каталогов……………………………………………………………………………………………. 226
Создание файлов и каталогов………………………………………………………………………………………………… 226
Создание нескольких файлов………………………………………………………………………………………….. 227
Пересоздание файла………………………………………………………………………………………………………… 228
Создание файла в несуществующем каталоге………………………………………………………………. 228
Чтение содержимого файлов…………………………………………………………………………………………………… 229
Запись файлов………………………………………………………………………………………………………………………….. 230
Копирование файлов и каталогов………………………………………………………………………………………….. 231
Копирование каталога с файлами………………………………………………………………………………….. 232
Копирование вложенных каталогов………………………………………………………………………………. 232
Копирование файлов по маске……………………………………………………………………………………….. 233
Конкатенация файлов……………………………………………………………………………………………………… 234
Переименование и перемещение файлов и каталогов………………………………………………………….. 235
Переименование группы файлов…………………………………………………………………………………….. 235
Перемещение файлов……………………………………………………………………………………………………….. 235
Удаление файлов и каталогов………………………………………………………………………………………………… 236
Поиск текста в файлах…………………………………………………………………………………………………………….. 237
Замена текста в файлах…………………………………………………………………………………………………………… 239
Работа с файлами-ярлыками………………………………………………………………………………………………….. 240
Доступ к COM-объектам из PowerShell…………………………………………………………………………… 240
Объект WScript.Shell………………………………………………………………………………………………………… 241
Создание ярлыка на рабочем столе……………………………………………………………………………….. 242
Удаление некорректных ярлыков…………………………………………………………………………………… 243
Итоги…………………………………………………………………………………………………………………………………………. 244
Глава 12. Обработка структурированных данных……………………………….. 245
Работа с данными в формате CSV………………………………………………………………………………………….. 245
Чтение из CSV-файла……………………………………………………………………………………………………….. 245
Запись в CSV-файл…………………………………………………………………………………………………………… 248
Обработка данных без обращения к файлу…………………………………………………………………… 249
Обработка данных в JSON-формате………………………………………………………………………………………. 250
Итоги…………………………………………………………………………………………………………………………………………. 252
Глава 13. Управление процессами, службами и серверами автоматизации 253
Управление процессами………………………………………………………………………………………………………….. 253
Просмотр списка процессов……………………………………………………………………………………………. 254
Определение библиотек, используемых процессом……………………………………………………… 257
Остановка процессов……………………………………………………………………………………………………….. 258
Запуск процессов……………………………………………………………………………………………………………… 259
Изменение приоритетов выполнения процесса…………………………………………………………….. 261
Завершение неотвечающих процессов………………………………………………………………………….. 261
Управление службами…………………………………………………………………………………………………………….. 261
Просмотр списка служб…………………………………………………………………………………………………… 262
Остановка и приостановка служб………………………………………………………………………………….. 263
Запуск и перезапуск служб……………………………………………………………………………………………… 264
Изменение параметров службы………………………………………………………………………………………. 265
Работа с серверами автоматизации……………………………………………………………………………………….. 266
Объектные модели Microsoft Word и Excel…………………………………………………………………….. 266
Взаимодействие с Microsoft Word…………………………………………………………………………………… 268
Взаимодействие с Microsoft Excel…………………………………………………………………………………… 268
Итоги…………………………………………………………………………………………………………………………………………. 269
Глава 14. HTTP-запросы к веб-ресурсам………………………………………………. 270
Командлет Invoke-WebRequest……………………………………………………………………………………………….. 270
Анализ HTML-страниц……………………………………………………………………………………………………. 270
Содержимое ответа от сервера и HTTP-заголовки……………………………………………… 272
Сохранение веб-ресурсов………………………………………………………………………………………. 274
Поиск HTML-элементов на странице……………………………………………………………………. 275
Выполнение POST-запросов……………………………………………………………………………………………. 277
Командлет Invoke-RestMethod………………………………………………………………………………………………… 279
Итоги…………………………………………………………………………………………………………………………………………. 281
Часть IV. Пишем сценарии……………………………………………………….. 283
Глава 15. Разработка сценариев PowerShell………………………………………….. 284
Переход от команд к сценариям…………………………………………………………………………………………….. 284
Среды для разработки сценариев………………………………………………………………………………………….. 285
PowerShell ISE…………………………………………………………………………………………………………………… 285
Запуск сценариев и фрагментов…………………………………………………………………………….. 285
Справочная система……………………………………………………………………………………………….. 287
Редактирование текста…………………………………………………………………………………………… 289
Отладка сценариев…………………………………………………………………………………………………. 292
Visual Studio Code…………………………………………………………………………………………………………….. 294
Другие редакторы и среды разработки…………………………………………………………………………. 299
Рекомендации по разработке сценариев……………………………………………………………………………….. 300
Общая структура сценария…………………………………………………………………………………………….. 300
Имена и псевдонимы команд и параметров…………………………………………………………………… 301
Расширенные и базовые функции…………………………………………………………………………………… 303
Комментарии……………………………………………………………………………………………………………………. 303
Справка, основанная на комментариях…………………………………………………………………………. 304
Расположение и форматирование кода…………………………………………………………………………. 306
Регистр символов в именах…………………………………………………………………………………….. 306
Скобки в коде…………………………………………………………………………………………………………… 307
Отступы, пробелы и пустые строки………………………………………………………………………. 307
Точка с запятой как разделитель строк и значений…………………………………………….. 309
Обратный апостроф для многострочных команд………………………………………………… 309
Производительность сценариев и продуктивность разработчика……………………………………… 310
Пример. Статистика по объектам файловой системы (cmd и PowerShell)…………………… 311
Итоги…………………………………………………………………………………………………………………………………………. 312
Глава 16. Отладка функций и сценариев……………………………………………… 313
Вывод диагностических сообщений………………………………………………………………………………………. 313
Командлет Set-PSDebug………………………………………………………………………………………………………….. 315
Трассировка выполнения команд…………………………………………………………………………………… 316
Пошаговое выполнение команд……………………………………………………………………………………… 318
Вложенная командная строка………………………………………………………………………………………… 319
Управление точками останова (командлеты *-PSBreakPoint)……………………………………………. 321
Создание точки останова для сценария………………………………………………………………………… 322
Создание точки останова для команды…………………………………………………………………………. 326
Создание точки останова для переменной……………………………………………………………………. 326
Просмотр точек останова……………………………………………………………………………………………….. 327
Удаление точек останова………………………………………………………………………………………………… 329
Итоги…………………………………………………………………………………………………………………………………………. 330
Глава 17. Графический интерфейс для сценариев………………………………… 331
Построение GUI с помощью Windows Forms…………………………………………………………………………. 331
Построение GUI с помощью Windows Presentation Foundation……………………………………………. 335
Итоги…………………………………………………………………………………………………………………………………………. 341
Что дальше? PowerShell для профессионалов……………………………………….. 342
Приложения…………………………………………………………………………………… 343
Приложение 1. Что значат эти символы……………………………………………….. 344
Приложение 2. PowerShell в macOS и Linux…………………………………………… 348
Установка и запуск оболочки…………………………………………………………………………………………………. 348
Отличия от Windows PowerShell……………………………………………………………………………………………… 350
Приложение 3. Дополнительная настройка командной строки…………….. 352
Модуль PSReadLine…………………………………………………………………………………………………………………. 352
Интеграция с Git. Модуль posh-git………………………………………………………………………………………….. 355
Оформление приглашения командной строки………………………………………………………………………. 358
Установка шрифтов Powerline…………………………………………………………………………………………. 358
Модуль Oh My Posh…………………………………………………………………………………………………………. 359
Оформление списков файлов и каталогов. Модуль Terminal-Icons…………………………………….. 362
Предметный указатель…………………………………………………………………………. 364
-
Современный PowerShell
875 ₽
744 ₽