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

Встречайте второе издание: “Современный PowerShell”

Современный PowerShell. 2-е издание

Рассматривается объектно-ориентированная оболочка командной строки Microsoft PowerShell и ее возможности для автоматизации повседневных задач пользователей и администраторов. Описываются основные элементы и конструкции языка PowerShell, инструменты для написания и отладки сценариев. Приведена информация о работе с файловой системой и структурированными данными (CSV, JSON). Рассмотрены приемы управления процессами, службами и серверами автоматизации. Обсуждаются вопросы взаимодействия с веб-ресурсами при помощи HTTP-запросов. Даны примеры построения GUI для сценариев PowerShell с помощью Windows Forms и Windows Presentation Foundation. Представлены кроссплатформенные возможности PowerShell в macOS и Linux.

Во втором издании детально описаны кроссплатформенные возможности PowerShell и использование этой технологии в Linux.

Для начинающих системных администраторов и опытных пользователей

  • Работа с оболочкой Windows PowerShell в Windows Terminal
  • Продвинутая настройка командной строки
  • Описание языка PowerShell
  • Работа с файловой системой, структурированными данными и веб-ресурсами
  • Управление процессами, службами и серверами автоматизации
  • Построение GUI для сценариев Windows PowerShell
  • Кроссплатформенные возможности PowerShell в macOS и Linux

Книгу “Современный PowerShell. 2-е издание” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………… 11

Для кого предназначена эта книга?…………………………………………………………………………………………. 12

Структура книги………………………………………………………………………………………………………………………… 12

Принятые в книге соглашения…………………………………………………………………………………………………… 14

Часть I. Знакомимся с PowerShell…………………………………………. 17

Глава 1. Командная строка и автоматизация работы…………………………….. 19

Зачем нужна командная строка и скрипты?……………………………………………………………………………. 20

Особенности языков сценариев для операционной системы…………………………………………………. 20

Инструменты автоматизации в UNIX-подобных системах……………………………………………………. 22

Особенности автоматизации в Windows………………………………………………………………………………….. 23

Командный интерпретатор cmd.exe…………………………………………………………………………………. 25

Сервер сценариев Windows Script Host…………………………………………………………………………….. 26

Оболочка и среда выполнения сценариев PowerShell…………………………………………………….. 30

Итоги…………………………………………………………………………………………………………………………………………… 34

Глава 2. Терминал, консоль и командная оболочка……………………………….. 35

Терминалы в Windows……………………………………………………………………………………………………………….. 37

Стандартная консоль Windows…………………………………………………………………………………………. 38

Windows Terminal……………………………………………………………………………………………………………….. 39

Установка и запуск…………………………………………………………………………………………………… 40

Работа с вкладками…………………………………………………………………………………………………… 41

Разделение окна на несколько панелей………………………………………………………………….. 42

Палитра команд………………………………………………………………………………………………………… 43

Запуск терминала с аргументами командной строки……………………………………………. 43

Итоги…………………………………………………………………………………………………………………………………………… 44

Глава 3. Первые шаги в PowerShell. Основные понятия………………………… 45

Запуск оболочки PowerShell……………………………………………………………………………………………………… 45

Работают ли знакомые команды?…………………………………………………………………………………………….. 46

Вычисление выражений……………………………………………………………………………………………………………. 48

Типы команд PowerShell…………………………………………………………………………………………………………….. 49

Командлеты………………………………………………………………………………………………………………………… 50

Имена и структура командлетов……………………………………………………………………………… 50

Общие параметры командлетов………………………………………………………………………………. 53

Поиск командлетов…………………………………………………………………………………………………… 54

Функции………………………………………………………………………………………………………………………………. 55

Сценарии…………………………………………………………………………………………………………………………….. 56

Внешние исполняемые файлы…………………………………………………………………………………………… 56

Псевдонимы команд…………………………………………………………………………………………………………………… 56

Диски PowerShell………………………………………………………………………………………………………………………… 60

Провайдеры PowerShell……………………………………………………………………………………………………… 61

Навигация по дискам PowerShell………………………………………………………………………………………. 62

Просмотр содержимого дисков и каталогов……………………………………………………………………. 64

Создание дисков…………………………………………………………………………………………………………………. 65

Итоги…………………………………………………………………………………………………………………………………………… 66

Глава 4. Работа в оболочке PowerShell……………………………………………………. 68

Редактирование в командной строке PowerShell…………………………………………………………………….. 68

Автоматическое завершение команд……………………………………………………………………………………….. 71

Ввод команды в нескольких строках……………………………………………………………………………………….. 73

Справочная система PowerShell……………………………………………………………………………………………….. 73

Получение справки о командлетах………………………………………………………………………………….. 74

Справочная информация, не связанная с командлетами……………………………………………….. 79

История команд в сеансе работы……………………………………………………………………………………………… 81

Протоколирование действий в сеансе работы………………………………………………………………………… 83

Настройка оформления командной строки PowerShell…………………………………………………………… 85

Заголовок командного окна………………………………………………………………………………………………. 86

Приглашение командной строки………………………………………………………………………………………. 88

Настройка пользовательских профилей………………………………………………………………………………….. 89

Политики выполнения сценариев…………………………………………………………………………………………….. 91

Итоги…………………………………………………………………………………………………………………………………………… 93

Глава 5. Работа с объектами………………………………………………………………….. 94

Конвейеризация объектов в PowerShell……………………………………………………………………………………. 94

Просмотр структуры объектов (командлет Get-Member)……………………………………………………….. 96

Фильтрация объектов (командлет Where-Object)……………………………………………………………………. 98

Использование блока кода………………………………………………………………………………………………… 98

Использование оператора сравнения…………………………………………………………………………….. 100

Сортировка объектов (командлет Sort-Object)……………………………………………………………………… 101

Выделение объектов и свойств (командлет Select-Object)…………………………………………………… 103

Выполнение произвольных действий над объектами в конвейере
(командлет ForEach-Object)……………………………………………………………………………………………………. 106

Группировка объектов (командлет Group-Object)………………………………………………………………… 107

Измерение характеристик объектов (командлет Measure-Object)………………………………………. 108

Обращение к статическим методам и полям…………………………………………………………………………. 109

Итоги…………………………………………………………………………………………………………………………………………. 111

Глава 6. Управление выводом команд…………………………………………………. 112

Форматирование выводимой информации……………………………………………………………………………. 113

Перенаправление выводимой информации…………………………………………………………………………… 115

Сохранение данных в файл…………………………………………………………………………………………….. 116

Печать данных…………………………………………………………………………………………………………………. 117

Подавление вывода………………………………………………………………………………………………………….. 118

Табличный вывод данных в графическое окно…………………………………………………………….. 118

Вывод в формате HTML………………………………………………………………………………………………………….. 120

Дополнительные потоки в PowerShell…………………………………………………………………………………….. 123

Перенаправление в файл…………………………………………………………………………………………………. 124

Перенаправление в выходной поток Output………………………………………………………………….. 125

Итоги…………………………………………………………………………………………………………………………………………. 126

Часть II. PowerShell как язык программирования………… 127

Глава 7. Переменные, массивы и хеш-таблицы……………………………………. 129

Числовые и символьные литералы…………………………………………………………………………………………. 129

Числовые литералы…………………………………………………………………………………………………………. 129

Символьные строки………………………………………………………………………………………………………….. 130

Строки в одинарных и двойных кавычках…………………………………………………………… 130

Строки типа here-string……………………………………………………………………………………………. 132

Переменные PowerShell……………………………………………………………………………………………………………. 133

Переменные оболочки PowerShell…………………………………………………………………………………… 134

Пользовательские переменные……………………………………………………………………………………….. 136

Типы переменных……………………………………………………………………………………………………. 136

Приведение типов……………………………………………………………………………………………………. 138

Дополнительные атрибуты переменных………………………………………………………………. 139

Константы……………………………………………………………………………………………………………….. 139

Переменные среды Windows……………………………………………………………………………………………. 140

Массивы в PowerShell………………………………………………………………………………………………………………. 141

Обращение к элементам массива……………………………………………………………………………………. 142

Операции с массивом………………………………………………………………………………………………………. 143

Увеличение длины массива. Объединение массивов…………………………………………… 144

Удаление элементов……………………………………………………………………………………………….. 145

Действие оператора присваивания……………………………………………………………………….. 145

Сохранение в массиве вывода командлетов………………………………………………………… 146

Удаление массива…………………………………………………………………………………………………… 146

Хеш-таблицы (ассоциативные массивы)……………………………………………………………………………….. 147

Операции с хеш-таблицей……………………………………………………………………………………………….. 148

Итоги…………………………………………………………………………………………………………………………………………. 150

Глава 8. Операторы и управляющие инструкции………………………………… 152

Арифметические операторы…………………………………………………………………………………………………… 152

Оператор сложения………………………………………………………………………………………………………….. 153

Оператор умножения……………………………………………………………………………………………………….. 155

Операторы вычитания, деления и остатка от деления…………………………………………………. 156

Операторы присваивания……………………………………………………………………………………………………….. 157

Операторы сравнения……………………………………………………………………………………………………………… 158

Сравнения с использованием массивов…………………………………………………………………………. 159

Операторы проверки на соответствие шаблону…………………………………………………………… 160

Шаблоны с подстановочными символами…………………………………………………………… 160

Шаблоны с регулярными выражениями……………………………………………………………….. 161

Логические операторы…………………………………………………………………………………………………….. 162

Управляющие инструкции языка PowerShell…………………………………………………………………………. 163

Инструкция If … Elseif … Else…………………………………………………………………………………………… 163

Цикл While………………………………………………………………………………………………………………………… 164

Цикл Do … While……………………………………………………………………………………………………………….. 165

Цикл For……………………………………………………………………………………………………………………………. 165

Цикл Foreach…………………………………………………………………………………………………………………….. 166

Инструкция Foreach вне конвейера команд…………………………………………………………. 166

Инструкция Foreach внутри конвейера команд…………………………………………………… 167

Вопросы производительности……………………………………………………………………………….. 168

Метки циклов, инструкции Break и Continue…………………………………………………………………. 168

Инструкция Switch……………………………………………………………………………………………………………. 169

Виды проверок внутри Switch……………………………………………………………………………….. 169

Проверка массива значений…………………………………………………………………………………… 172

Итоги…………………………………………………………………………………………………………………………………………. 174

Глава 9. Функции, фильтры, сценарии и модули…………………………………. 175

Функции в PowerShell……………………………………………………………………………………………………………….. 175

Обработка аргументов с помощью переменной $args…………………………………………………. 176

Формальные параметры функций………………………………………………………………………………….. 178

Позиционные и именованные параметры…………………………………………………………….. 178

Ограничение параметров по типу…………………………………………………………………………. 180

Значения по умолчанию для параметров…………………………………………………………….. 181

Дополнительные атрибуты и валидация параметров…………………………………………. 182

Параметры-переключатели…………………………………………………………………………………… 184

Описание параметров в операторе Param()…………………………………………………………. 185

Передача параметров с помощью сплаттинга переменных………………………………………… 186

Возвращаемые значения…………………………………………………………………………………………………. 187

Функции внутри конвейера команд………………………………………………………………………………… 189

Функции в качестве командлетов. Расширенные функции…………………………………………… 190

Три фазы работы функции в конвейере………………………………………………………………… 190

Доступ к общим параметрам и дополнительным потокам.
Расширенные функции……………………………………………………………………………………………. 192

Сценарии PowerShell………………………………………………………………………………………………………………… 194

Создание сценария…………………………………………………………………………………………………………… 194

Запуск сценария из PowerShell………………………………………………………………………………………… 195

Запуск сценария из внешней программы……………………………………………………………………….. 196

Передача аргументов в сценарии…………………………………………………………………………………… 197

Выход из сценариев. Код возврата………………………………………………………………………………… 198

Области видимости функций………………………………………………………………………………………………….. 198

Глобальная область видимости……………………………………………………………………………………… 199

Оператор Dot-Source……………………………………………………………………………………………………….. 199

Области видимости переменных……………………………………………………………………………………………. 200

Модули PowerShell…………………………………………………………………………………………………………………… 202

Модули-сценарии…………………………………………………………………………………………………………….. 202

Репозиторий сценариев PowerShell Gallery…………………………………………………………………….. 204

Итоги…………………………………………………………………………………………………………………………………………. 207

Глава 10. Обработка ошибок при выполнении команд………………………… 209

Объект ErrorRecord и поток ошибок………………………………………………………………………………………. 210

Сохранение объектов, соответствующих ошибкам……………………………………………………………… 213

Мониторинг возникновения ошибок………………………………………………………………………………………. 216

Режимы обработок ошибок…………………………………………………………………………………………………….. 217

Обработка критических ошибок (исключений)…………………………………………………………………….. 218

Инструкция Trap………………………………………………………………………………………………………………. 219

Инструкция Try/Catch/Finally…………………………………………………………………………………………. 221

Итоги…………………………………………………………………………………………………………………………………………. 221

Часть III. Автоматизируем рутину…………………………………………. 223

Глава 11. Работа с файловой системой и оболочкой Windows………………. 225

Навигация в файловой системе………………………………………………………………………………………………. 225

Получение списка файлов и каталогов………………………………………………………………………………….. 225

Определение размера каталогов……………………………………………………………………………………………. 229

Создание файлов и каталогов………………………………………………………………………………………………… 229

Создание нескольких файлов………………………………………………………………………………………….. 230

Пересоздание файла………………………………………………………………………………………………………… 231

Создание файла в несуществующем каталоге………………………………………………………………. 231

Чтение содержимого файлов…………………………………………………………………………………………………… 232

Запись файлов………………………………………………………………………………………………………………………….. 233

Копирование файлов и каталогов………………………………………………………………………………………….. 234

Копирование каталога с файлами………………………………………………………………………………….. 235

Копирование вложенных каталогов………………………………………………………………………………. 235

Копирование файлов по маске……………………………………………………………………………………….. 236

Конкатенация файлов……………………………………………………………………………………………………… 237

Переименование и перемещение файлов и каталогов………………………………………………………….. 238

Переименование группы файлов…………………………………………………………………………………….. 238

Перемещение файлов……………………………………………………………………………………………………….. 238

Удаление файлов и каталогов………………………………………………………………………………………………… 239

Поиск текста в файлах…………………………………………………………………………………………………………….. 240

Замена текста в файлах…………………………………………………………………………………………………………… 242

Работа с файлами-ярлыками………………………………………………………………………………………………….. 243

Доступ к COM-объектам из PowerShell…………………………………………………………………………… 243

Объект WScript.Shell………………………………………………………………………………………………………… 244

Создание ярлыка на рабочем столе……………………………………………………………………………….. 245

Удаление некорректных ярлыков…………………………………………………………………………………… 246

Итоги…………………………………………………………………………………………………………………………………………. 247

Глава 12. Обработка структурированных данных……………………………….. 248

Работа с данными в формате CSV………………………………………………………………………………………….. 248

Чтение из CSV-файла……………………………………………………………………………………………………….. 248

Запись в CSV-файл…………………………………………………………………………………………………………… 251

Обработка данных без обращения к файлу…………………………………………………………………… 252

Обработка данных в JSON-формате………………………………………………………………………………………. 253

Итоги…………………………………………………………………………………………………………………………………………. 255

Глава 13. Управление процессами, службами и серверами автоматизации 256

Управление процессами………………………………………………………………………………………………………….. 256

Просмотр списка процессов……………………………………………………………………………………………. 257

Определение библиотек, используемых процессом……………………………………………………… 260

Остановка процессов……………………………………………………………………………………………………….. 261

Запуск процессов……………………………………………………………………………………………………………… 262

Изменение приоритетов выполнения процесса…………………………………………………………….. 264

Завершение не отвечающих процессов…………………………………………………………………………. 264

Управление службами…………………………………………………………………………………………………………….. 264

Просмотр списка служб…………………………………………………………………………………………………… 265

Остановка и приостановка служб………………………………………………………………………………….. 266

Запуск и перезапуск служб……………………………………………………………………………………………… 267

Изменение параметров службы………………………………………………………………………………………. 268

Работа с серверами автоматизации……………………………………………………………………………………….. 269

Объектные модели Microsoft Word и Excel…………………………………………………………………….. 269

Взаимодействие с Microsoft Word…………………………………………………………………………………… 271

Взаимодействие с Microsoft Excel…………………………………………………………………………………… 271

Итоги…………………………………………………………………………………………………………………………………………. 272

Глава 14. HTTP-запросы к веб-ресурсам………………………………………………. 273

Командлет Invoke-WebRequest……………………………………………………………………………………………….. 273

Анализ HTML-страниц……………………………………………………………………………………………………. 273

Содержимое ответа от сервера и HTTP-заголовки……………………………………………… 275

Сохранение веб-ресурсов………………………………………………………………………………………. 277

Поиск HTML-элементов на странице……………………………………………………………………. 278

Выполнение POST-запросов……………………………………………………………………………………………. 280

Командлет Invoke-RestMethod………………………………………………………………………………………………… 282

Итоги…………………………………………………………………………………………………………………………………………. 284

Часть IV. Пишем сценарии……………………………………………………….. 285

Глава 15. Разработка сценариев PowerShell………………………………………….. 287

Переход от команд к сценариям…………………………………………………………………………………………….. 287

Среды для разработки сценариев………………………………………………………………………………………….. 288

PowerShell ISE…………………………………………………………………………………………………………………… 288

Запуск сценариев и фрагментов…………………………………………………………………………….. 288

Справочная система……………………………………………………………………………………………….. 290

Редактирование текста…………………………………………………………………………………………… 292

Отладка сценариев…………………………………………………………………………………………………. 295

Visual Studio Code…………………………………………………………………………………………………………….. 297

Другие редакторы и среды разработки…………………………………………………………………………. 302

Рекомендации по разработке сценариев……………………………………………………………………………….. 303

Общая структура сценария…………………………………………………………………………………………….. 303

Имена и псевдонимы команд и параметров…………………………………………………………………… 305

Расширенные и базовые функции…………………………………………………………………………………… 306

Комментарии……………………………………………………………………………………………………………………. 307

Справка, основанная на комментариях…………………………………………………………………………. 307

Расположение и форматирование кода…………………………………………………………………………. 309

Регистр символов в именах…………………………………………………………………………………….. 310

Скобки в коде…………………………………………………………………………………………………………… 310

Отступы, пробелы и пустые строки………………………………………………………………………. 311

Точка с запятой как разделитель строк и значений…………………………………………….. 312

Обратный апостроф для многострочных команд………………………………………………… 312

Производительность сценариев и продуктивность разработчика……………………………………… 313

Пример: статистика по объектам файловой системы (cmd и PowerShell)…………………… 314

Итоги…………………………………………………………………………………………………………………………………………. 315

Глава 16. Отладка функций и сценариев……………………………………………… 316

Вывод диагностических сообщений………………………………………………………………………………………. 316

Командлет Set-PSDebug………………………………………………………………………………………………………….. 318

Трассировка выполнения команд…………………………………………………………………………………… 319

Пошаговое выполнение команд……………………………………………………………………………………… 321

Вложенная командная строка………………………………………………………………………………………… 322

Управление точками останова (командлеты *-PSBreakPoint)……………………………………………. 324

Создание точки останова для сценария………………………………………………………………………… 325

Создание точки останова для команды…………………………………………………………………………. 329

Создание точки останова для переменной……………………………………………………………………. 329

Просмотр точек останова……………………………………………………………………………………………….. 330

Удаление точек останова………………………………………………………………………………………………… 332

Итоги…………………………………………………………………………………………………………………………………………. 333

Глава 17. Графический интерфейс для сценариев………………………………… 334

Построение GUI с помощью Windows Forms…………………………………………………………………………. 334

Построение GUI с помощью Windows Presentation Foundation……………………………………………. 338

Итоги…………………………………………………………………………………………………………………………………………. 344

Часть V. Выходим за пределы мира Windows…………………….. 345

Глава 18. Работа командных оболочек в Windows и Linux……………………. 347

Универсальные механизмы командной строки…………………………………………………………………….. 348

Исполняемые файлы в Windows……………………………………………………………………………………………… 349

Поиск файла, соответствующего команде…………………………………………………………………….. 350

Исполняемые файлы в Linux…………………………………………………………………………………………………… 351

Поиск файла, соответствующего команде…………………………………………………………………….. 352

Стандартные команды в Windows и Linux…………………………………………………………………………….. 353

Итоги…………………………………………………………………………………………………………………………………………. 355

Глава 19. История и традиции интерфейса командной строки
в Windows и Linux…………………………………………………………………………………. 356

Мейнфреймы и команды в системах пакетной обработки…………………………………………………… 357

Командная оболочка в UNIX и Linux…………………………………………………………………………………….. 359

Мини-компьютеры и UNIX……………………………………………………………………………………………… 360

Распространение UNIX……………………………………………………………………………………………………. 363

Первые свободные UNIX-подобные системы………………………………………………………………… 364

Появление и распространение Linux……………………………………………………………………………… 365

Командная оболочка в Microsoft DOS и Windows………………………………………………………………… 367

CP/M — первая операционная система для микрокомпьютеров………………………………… 367

Командный интерпретатор CCP…………………………………………………………………………………….. 369

Микрокомпьютеры, язык BASIC и фирма Microsoft……………………………………………………… 370

IBM, Microsoft и операционная система DOS……………………………………………………………….. 372

Командный интерпретатор command.com……………………………………………………………………. 375

Windows на базе MS-DOS………………………………………………………………………………………………… 376

Windows NT и командный интерпретатор cmd.exe………………………………………………………. 377

Культура командной строки в Linux и Windows…………………………………………………………………… 380

Итоги…………………………………………………………………………………………………………………………………………. 381

Глава 20. Linux-оболочки в Windows. Кросс-платформенный PowerShell 382

Linux внутри Windows……………………………………………………………………………………………………………… 382

UNIX от Microsoft — операционная система Xenix……………………………………………………… 382

Поддержка POSIX внутри Windows NT………………………………………………………………………….. 383

«Microsoft любит Linux» — новый девиз Microsoft……………………………………………………….. 384

Подсистема WSL — Linux, встроенный в Windows………………………………………………………. 384

Инициализация WSL и установка дистрибутива Linux………………………………………. 384

Запуск командной оболочки Linux и отдельных команд……………………………………. 385

Кросс-платформенная оболочка PowerShell в Linux…………………………………………………………….. 387

Установка и запуск оболочки…………………………………………………………………………………………. 387

Отличия от Windows PowerShell………………………………………………………………………………………. 389

PowerShell — универсальный инструмент автоматизации?………………………………………………… 391

Работа в режиме интерактивной командной строки…………………………………………………….. 391

PowerShell как среда выполнения сценариев…………………………………………………………………. 393

Итоги…………………………………………………………………………………………………………………………………………. 394

Что дальше? PowerShell для профессионалов……………………………………….. 395

Приложение 1. Что означают эти символы?…………………………………………. 397

Приложение 2. Дополнительная настройка командной строки…………….. 401

Модуль PSReadLine…………………………………………………………………………………………………………………. 401

Интеграция с Git: модуль posh-git…………………………………………………………………………………………… 404

Оформление приглашения командной строки: модуль Oh My Posh…………………………………… 407

Установка шрифтов Powerline…………………………………………………………………………………………. 407

Установка модуля Oh My Posh……………………………………………………………………………………….. 408

Оформление списков файлов и каталогов: модуль Terminal-Icons……………………………………… 411

Предметный указатель…………………………………………………………………………. 413

Попов Андрей Владимирович, специалист ИТ-поддержки и преподаватель с 25-летним стажем, автор нескольких книг по технологиям сценариев Windows, в том числе «Введение в Windows PowerShell» о первой версии оболочки и среды выполнения Microsoft PowerShell.

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