Опубликовано

Представляем новинку: “Современный PowerShell”

Современный PowerShell

Представляем новую книгу Андрея Попова “Современный 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

Добавить комментарий