Освойте PowerShell: руководство для начинающих по мощному скриптингу
Начнем изучение уроков PowerShell. Сначала мы узнаем:
Что такое PowerShell?
Windows PowerShell — объектно-ориентированный движок автоматизации и язык скриптов. Он предназначен в основном для IT-профессионалов и системных администраторов для управления и автоматизации администрирования Windows OS и других приложений. Он предоставляет убедительные новые концепции для расширения знаний и скриптов, созданных в средах Windows Command Prompt и Windows Script Host.
Он объединяет гибкость скриптинга, скорость командной строки и мощь GUI-инструмента администрирования. Позволяет эффективно решать задачи, помогая системному администратору устранить будущие часы ручного труда. Мы пройдемся по всем важным аспектам, которые нужно знать для изучения PowerShell.
В этом руководстве по PowerShell для начинающих вы изучите основы PowerShell:
- Что такое PowerShell?
- Зачем использовать PowerShell?
- История PowerShell
- Особенности PowerShell
- Как запустить PowerShell
- PowerShell Cmdlet
- Cmdlet vs Command:
- Типы данных PowerShell:
- Специальные переменные
- Скрипты PowerShell
- Первый скрипт PowerShell
- Что такое PowerShell ISE?
- Концепции PowerShell
- PowerShell против Command Prompt
- Применение PowerShell
Это полное руководство по основам скриптинга PowerShell… начнем!
Зачем использовать PowerShell?
Вот важные причины для использования PowerShell:
- PowerShell предлагает хорошо интегрированный опыт командной строки для операционной системы
- PowerShell дает полный доступ ко всем типам в .NET framework
- Доверяется системными администраторами.
- PowerShell — простой способ манипулировать компонентами сервера и рабочей станции
- Он ориентирован на системных администраторов, создавая более простой синтаксис
- PowerShell безопаснее, чем запуск VBScript или других языков скриптинга
История PowerShell
Первая версия PowerShell 1.0 вышла в 2006 году. Сегодня PowerShell на версии 7.2. По мере прохождения лет и версий возможности и среды размещения PowerShell значительно выросли.
История версий PowerShell:
- PowerShell 1 поддерживал локальное администрирование Windows Server 2003
- PowerShell 2.0 интегрирован с Windows 7 и Windows Server 2008 R2. Эта версия поддерживает удаленное управление и расширяет возможности: транзакции, фоновые задания, события, отладка и т.д.
- PowerShell 3.0 выпущен как внутренняя часть Windows Management Framework. Установлен на Windows 8 и Windows Server 2012. Можно добавлять и планировать задания, подключение сессий, автоматическую загрузку модулей и т.д.
- PowerShell 4.0 поставлялся с Windows 8.1 и Windows Server 2012 R2. В этой версии добавлена поддержка желаемой конфигурации состояния, расширенная отладка, сетевая диагностика.
- PowerShell 5.0 выпущен как внутренняя часть Windows Management Framework 5. Функции: удаленная отладка, определения классов, перечисления .NET и т.д.
- PowerShell 7.2 выпущен. Он построен на .NET 6.0. Эта версия предлагает новые операторы, упрощенный и динамичный вид ошибок, автоматические уведомления о новых версиях и т.д.
Далее в этом уроке по скриптингу PowerShell мы узнаем о возможностях PowerShell.
Особенности PowerShell
- PowerShell Remoting: PowerShell позволяет вызывать скрипты и командлеты на удаленной машине.
- Background Jobs: Помогает вызывать скрипт или конвейер асинхронно. Можно запускать задания либо на локальной машине, либо на нескольких удаленно управляемых машинах.
- Transactions: Включает командлет и позволяет разработчикам выполнять...
- Events (События): Эта команда помогает слушать, пересылать и действовать на события управления и системы.
- Network File Transfer: PowerShell предлагает встроенную поддержку приоритетной, асинхронной, регулируемой передачи файлов между машинами с использованием технологии Background Intelligent Transfer Service (BITS).
Как запустить PowerShell
Теперь в этом уроке по скриптам PowerShell мы узнаем, как запустить PowerShell на Windows OS.
PowerShell предустановлен во всех последних версиях Windows. Нам нужно запустить PowerShell, для этого выполним данные шаги:
Шаг 1) Найдите PowerShell в Windows. Выберите и нажмите

Шаг 2) Открывается окно PowerShell

PowerShell Cmdlet
Командлет (cmdlet) — это легкая команда, используемая в среде PowerShell на базе Windows. PowerShell вызывает эти командлеты в командной строке. Вы можете создавать и вызывать командлеты с помощью PowerShell API.
Cmdlet vs Command:
Командлеты отличаются от команд в других средах командных оболочек следующим образом:
- Командлеты — объекты классов .NET Framework. Их нельзя выполнять отдельно
- Командлеты можно создать из всего нескольких десятков строк кода
- Парсинг, форматирование вывода и представление ошибок не обрабатываются командлетами
- Командлеты работают с объектами. Поэтому текстовые потоки и объекты не могут передаваться как вывод для конвейеризации
- Командлеты записны, поэтому обрабатывают один объект за раз
Большая часть функциональности PowerShell исходит от командлетов, которые всегда в формате глагол-существительное и не во множественном числе. Кроме того, командлеты возвращают объекты, а не текст. Командлет — это серия команд, более одной строки, сохраненная в текстовом файле с расширением .ps1.
Командлет всегда состоит из глагола и существительного, разделенных дефисом. Некоторые глаголы для изучения PowerShell:
- Get — Получить что-то
- Start — Запустить что-то
- Out — Вывести что-то
- Stop — Остановить то, что выполняется
- Set — Определить что-то
- New — Создать что-то
Команды PowerShell
Ниже приведен список важных команд PowerShell:
Get-Help: Справка о командах и темах PowerShell
Пример: Показать справку о команде Format-Table
Get-Help Format-Table

Get-Command: Получить информацию о чем угодно, что можно вызвать
Пример скрипта PowerShell: Сгенерировать список командлетов, функций, установленных на вашей машине
Get-Command

Get-Service: Находит все командлеты со словом «service»
Пример: Получить все службы, начинающиеся с «vm»
Get-Service "vm*"

Get-Member: Показывает, что можно сделать с объектом
Пример: Получить члены процессов vm.
Get-Service "vm*" | Get-Member

Другие команды:
- Get Module — показывает пакеты команд
- Get Content — этот командлет может взять файл, обработать его содержимое и сделать с ним что-то
- Get- — находит все командлеты, начинающиеся со слова «get-»
Пример: Создать папку
New-Item -Path 'X:\Guru99' -ItemType Directory
Вывод

Типы данных PowerShell:
Типы данных PowerShell
Специальные переменные
| Специальная переменная | Описание |
|---|---|
| $Error | Массив объектов ошибок, отображающий недавние ошибки |
| $Host | Отображает имя текущего хост-приложения |
| $Profile | Хранит полный путь профиля пользователя для оболочки по умолчанию |
| $PID | Хранит идентификатор процесса |
| $PSUICulture | Содержит имя текущей UI-культуры |
| $NULL | Содержит пустое или NULL значение |
| $False | Содержит значение FALSE |
| $True | Содержит значение TRUE |
Скрипты PowerShell
Скрипты PowerShell хранятся в файлах .ps1. По умолчанию вы не можете запустить скрипт просто двойным кликом по файлу. Это защищает вашу систему от случайного вреда. Для выполнения скрипта:
Шаг 1: нажмите правой кнопкой и выберите «Run with PowerShell».

Кроме того, существует политика, ограничивающая выполнение скриптов. Вы можете увидеть эту политику, выполнив команду Get-ExecutionPolicy.
Вы получите один из следующих выводов:
- Restricted — скрипты не разрешены. Это настройка по умолчанию, поэтому она отобразится при первом запуске команды.
- AllSigned — можно запускать скрипты, подписанные доверенным разработчиком. С помощью этого параметра скрипт будет запрашивать подтверждение перед выполнением.
- RemoteSigned — можно запускать свои скрипты или подписанные доверенным разработчиком.
- Unrestricted — можно запускать любой скрипт, который вы хотите
Шаги изменения политики выполнения
Шаг 1) Откройте PowerShell с повышенными привилегиями. Правый клик на PowerShell и «Run as Administrator»

Шаг 2) Введите следующие команды
- Get-ExecutionPolicy
- Set-executionpolicy unrestricted
- Введите Y в запросе
- Get-ExecutionPolicy

Первый скрипт PowerShell
В блокноте напишите следующую команду
Write-Host "Hello, Guru99!"
Скрипты PowerShell имеют расширение ps1. Сохраните файл как FirstScript.ps1

В PowerShell вызовите скрипт командой
& "X:\FirstScript.ps1"

Что такое PowerShell ISE?
Windows PowerShell Integrated Scripting Environment (ISE) — редактор по умолчанию для Windows PowerShell. В этой ISE вы можете запускать команды, писать тесты и отлаживать скрипты в оконном GUI-окружении. Вы можете делать многострочное редактирование, подсветку синтаксиса, автодополнение табуляции, выборочное выполнение и многое другое.
Windows PowerShell ISE также позволяет запускать команды в консольной панели. Однако она также поддерживает панели, которые можно использовать для одновременного просмотра исходного кода вашего скрипта и других инструментов, которые можно подключить к ISE.
Вы даже можете открыть несколько окон скриптов одновременно. Это особенно полезно, когда вы отлаживаете скрипт, использующий функции, определенные в других скриптах или модулях.
PowerShell ISE
Тот же скрипт, созданный в блокноте, можно создать в ISE
- Вставьте код в редактор
- Сохраните скрипт
- Используйте F5 для запуска скрипта
- Наблюдайте вывод в консоли

Пример 2:
Следующий код покажет свободную виртуальную память на вашей машине
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost | Select-Object -Property CSName,FreeVirtualMemory

Концепции PowerShell
Теперь в этом руководстве PowerShell для начинающих мы узнаем о важных концепциях PowerShell:
Cmdlets Командлеты — встроенные команды, написанные на языках .NET, таких как VB или C#. Позволяют разработчикам расширять набор командлетов, загружая и пиша PowerShell snap-ins. Functions Функции — команды, написанные на языке PowerShell. Можно разрабатывать без использования других IDE, таких как Visual Studio и devs. Scripts Скрипты — текстовые файлы на диске с расширением .ps1 Applications Приложения — существующие программы Windows. WhatIf Говорит командлету не выполнять, а сказать, что бы случилось, если бы командлет выполнился. Confirm Инструктирует командлет запрашивать подтверждение перед выполнением команды. Verbose Дает более высокий уровень детализации. Debug Инструктирует командлет предоставлять отладочную информацию. ErrorAction Инструктирует командлет выполнять конкретное действие при ошибке. Допустимые действия: continue, stop, silently-continue и inquire. ErrorVariable Указывает переменную, содержащую информацию об ошибке. OutVariable Говорит командлету использовать конкретную переменную для хранения информации вывода. OutBuffer Инструктирует командлет удерживать конкретное количество объектов перед вызовом следующего командлета в конвейере.Преимущества использования скриптов PowerShell
- Скрипты PowerShell действительно мощны и могут делать много вещей в меньшем количестве строк.
- Переменные объявляются в форме $<variable>
- Переменные могут использоваться для хранения вывода команды, объектов и значений.
- «Тип» переменной не нужно указывать.
PowerShell против Command Prompt
| PowerShell | Command Prompt |
|---|---|
| PowerShell глубоко интегрирован с Windows OS. Предлагает интерактивный интерфейс командной строки и язык скриптов. | Command Prompt — стандартный интерфейс командной строки от Microsoft. Простое win32-приложение, взаимодействующее с win32-объектами в Windows. |
| PowerShell использует командлеты. Их можно вызывать в среде выполнения или скриптах автоматизации. | Таких возможностей не предлагает command prompt. |
| PowerShell считает их объектами. Вывод можно передать как ввод другим командлетам через конвейер. | Command Prompt или даже *nix shell, вывод командлета — не просто поток текста, а коллекция объектов. |
| PowerShell очень продвинут по функциям, возможностям и внутренней работе. | Command prompt очень базовый. |
Применение PowerShell
Сегодня PowerShell стал идеальным выбором для IT-администраторов, так как он упрощает операции управления и усилия в крупных корпоративных сетях. Например, предположим, вы управляете большой сетью, содержащей более четырехсот серверов. Теперь вы хотите внедрить новое решение безопасности. Это решение зависит от определенной службы, которая должна работать на этих серверах.
Вы можете войти на каждый сервер и проверить, установлена ли и запущена ли у них эта служба. Однако это определенно займет много человеческих ошибок, так как вашему персоналу придется тратить много времени на этот непроизводительный процесс.
Однако, если вы используете PowerShell, то сможете выполнить эту задачу за считанные минуты. Потому что вся операция выполняется с помощью одного скрипта, собирающего информацию о службах, запущенных на серверах.
Резюме
- Windows PowerShell — объектно-ориентированный движок автоматизации и язык скриптов
- PowerShell предлагает хорошо интегрированный опыт командной строки для операционной системы
- PowerShell первая версия 1.0 выпущена в 2006 году
- PowerShell позволяет вызывать скрипты и командлеты на удаленной машине
- PowerShell предустановлен во всех последних версиях Windows
- Командлет — легкая команда, используемая в среде PowerShell на базе Windows
- Get, Start, Out, Stop, Set, New — важные команды PowerShell
- Boolean, Byte, Char, Decimal, Long — важные типы данных PowerShell
- $Error, $Host, $Profile, $PID, $PSUICulture, $NULL — некоторые специальные переменные в PowerShell
- Windows PowerShell Integrated Scripting Environment (ISE) — редактор по умолчанию для PowerShell
- PowerShell глубоко интегрирован с Windows OS, тогда как Command Prompt — стандартный интерфейс командной строки от Microsoft
- PowerShell стал идеальным выбором для IT-администраторов, так как упрощает операции управления в крупных корпоративных сетях
Язык C
- Установка Windows 10 IoT Core на Raspberry Pi 3 Model B+: Пошаговое руководство
- Создание робота, избегающего препятствия, на Raspberry Pi — руководство для начинающих
- ЧПУ-фрезеровки для начинающих: профессиональные результаты без лишних сложностей
- Установка Visual Studio 2019 Community Edition для C#-разработки на Windows
- Управление потоком в C#: IF, SWITCH, FOR, WHILE — практические примеры и объяснения
- Топ-10 IDE для C# на Windows, macOS и Linux — обзор 2021
- Лучшие IDE для C на Windows, macOS и Linux: подробный обзор (2021)
- Изучение C программирования: полное PDF-руководство для начинающих
- Мастерство ЧПУ-фрезерования: 4 ключевых совета для новичков
- Металлообработка 101: понятное руководство для начинающих