Учебное пособие по Powershell для начинающих
⚡ Умное резюме
PowerShell Scripting — это объектно-ориентированный механизм автоматизации, построенный на платформе .NET. Он объединяет командлеты, скрипты и язык сценариев, чтобы помочь ИТ-администраторам автоматизировать процессы. WindowsУправляйте службами и подключайте удаленные машины из одной командной строки.

Что такое PowerShell?
Windows PowerShell Это объектно-ориентированный механизм автоматизации и язык сценариев. Он предназначен для ИТ-специалистов и системных администраторов, которым необходимо контролировать и автоматизировать администрирование. Windows и других приложений. PowerShell расширяет концепции, изученные в Windows Командная строка и Windows Script Host с новыми объектами, командлетами и мощным конвейером обработки скриптов.
Он сочетает в себе гибкость написания скриптов, скорость командной строки и функциональность графического административного инструмента. С его помощью администраторы могут эффективно решать проблемы и экономить часы ручной работы. В этом руководстве рассматриваются основы, необходимые для изучения PowerShell с нуля.
Почему стоит использовать PowerShell?
Наиболее важные причины для использования PowerShell:
- Предлагает хорошо интегрированный интерфейс командной строки для операционной системы.
- Обеспечивает полный доступ ко всем типам объектов в платформе .NET.
- Пользуется доверием системных администраторов в масштабах крупных предприятий.
- Позволяет управлять компонентами сервера и рабочей станции всего несколькими строками кода.
- Предназначен для системных администраторов и имеет понятный синтаксис «глагол-существительное».
- Безопаснее, чем бег VBScript или других устаревших скриптовых языков.
История PowerShell
PowerShell 1.0 был впервые выпущен в 2006 году. В настоящее время PowerShell находится в версии 7.2 и выше. С выходом новых версий его возможности и среды развертывания значительно расширялись.
История версий PowerShell:
- PowerShell 1.0 — поддерживал местную администрацию Windows Сервер 2003.
- PowerShell 2.0 — интегрирован с Windows 7 и Windows Сервер 2008 R2. Добавлены удаленный доступ, транзакции, фоновые задания, события и отладка.
- PowerShell 3.0 — отправлено с Windows 8 и Windows Сервер 2012 как часть Windows Структура управления. Добавлены запланированные задания, возможность подключения к сессиям и автоматическая загрузка модулей.
- 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: Вызов скриптов и командлетов на удалённой машине.
- Вакансии для работы с фоновыми данными: Запускать скрипты или конвейеры асинхронно на локальном компьютере или на множестве удаленных машин.
- Сделки: Это позволит командлетам и разработчикам выполнять групповые операции, которые можно будет зафиксировать или отменить одновременно.
- Троеборье: Отслеживать, пересылать и реагировать на события управления и системы.
- Передача файлов по сети: Встроенная поддержка приоритетной, асинхронной, контролируемой передачи файлов между машинами через службу интеллектуальной фоновой передачи (BITS).
Как запустить PowerShell
PowerShell предустановлен во всех последних версиях WindowsЗапустите его следующим образом.
Шаг 1) Найдите PowerShell в WindowsЗатем выберите и щелкните по нему.
Шаг 2) Откроется окно PowerShell.
Командлет против команды
A командлет Командлеты (произносится как «командлет») — это легковесная команда, используемая в среде PowerShell. PowerShell вызывает командлеты в командной строке, и вы можете создавать свои собственные, используя API PowerShell. Командлеты отличаются от традиционных команд оболочки следующим образом:
- Командлеты . NET Framework Объекты классов; их нельзя запустить как отдельные исполняемые файлы.
- Командлеты можно написать всего лишь из десятка строк кода.
- Анализ данных, форматирование вывода и отображение ошибок обрабатываются средой выполнения, а не самим командлетом.
- Командлеты работают с объектами, поэтому как текстовые потоки, так и объекты могут проходить через конвейеры обработки данных.
- Командлеты работают на основе записей и обрабатывают только один объект за раз.
Большая часть функциональности PowerShell реализуется с помощью командлетов, которые всегда используют схему именования «глагол-существительное» (всегда в единственном числе). Командлеты возвращают объекты, а не текст. скрипт — в отличие от командлета — это последовательность команд, хранящихся в текстовом файле. .ps1 расширение.
К числу распространенных глаголов, которые вы будете использовать при изучении PowerShell, относятся:
- Получите — достать что-либо.
- Начать — запустить что-нибудь.
- Вне — вывести что-нибудь.
- Stop — остановить что-либо работающее.
- Поставьте — дать определение чему-либо.
- Новое — создать что-нибудь.
Важные команды PowerShell
Получить помощь: Просмотрите справку по командам и темам PowerShell.
Пример: отобразить справку для Format-Table команда.
Get-Help Format-Table
Команда Get: Получить информацию обо всем, что может быть вызвано.
Пример: сгенерировать список командлетов и функций, установленных на компьютере.
Get-Command
Получить-Сервис: Находит все службы на машине.
Пример: получить все сервисы, имя которых начинается с «vm».
Get-Service "vm*"
Get-Member: показать, что можно сделать с объектом.
Пример: список участников служб виртуальных машин, возвращаемых командой Get-Service.
Get-Service "vm*" | Get-Member
Другие полезные командлеты:
Get-Module— показать установленные пакеты команд.Get-Content— прочитать файл и обработать его содержимое.Get-*Подстановочный знак — вывести список всех командлетов, начинающихся с «Get-».
Пример: создать папку.
New-Item -Path 'X:\Guru99' -ItemType Directory
Выход:
Типы данных PowerShell
PowerShell поддерживает стандартные типы данных .NET, поэтому вы можете корректно сохранять любое значение в переменной.
Специальные переменные
PowerShell предоставляет ряд встроенных специальных переменных. Наиболее полезные из них перечислены ниже.
| Специальная переменная | Описание |
|---|---|
| $Ошибка | Массив объектов ошибок, представляющих самые последние ошибки. |
| $Хост | Отображает название текущего размещенного приложения. |
| $Профиль | Сохраняет полный путь к профилю пользователя для оболочки по умолчанию. |
| $ PID | Сохраняет идентификатор процесса. |
| $PSUICulture | Содержит название текущей культуры пользовательского интерфейса. |
| $НУЛЬ | Содержит пустое или нулевое значение. |
| $False | Содержит логическое значение FALSE. |
| $Истина | Содержит логическое значение TRUE. |
Скрипты PowerShell
Сценарии PowerShell хранятся в .ps1 файлы. По умолчанию запуск скрипта двойным щелчком мыши невозможен — эта мера предосторожности защищает систему от случайного повреждения. Чтобы выполнить скрипт, щелкните по нему правой кнопкой мыши и выберите «Запустить с помощью PowerShell».
Политика выполнения определяет, каким скриптам разрешено запускаться. Текущую политику можно просмотреть с помощью команды: Get-ExecutionPolicyВозможные значения:
- ограниченный — Использование скриптов запрещено. Это значение по умолчанию.
- AllSigned — Запускаются только скрипты, подписанные доверенным разработчиком, и для каждого требуется подтверждение.
- RemoteSigned — Запускаются ваши собственные скрипты, а также скрипты с подписями из надежных источников.
- Неограниченный — Любой скрипт может быть запущен (используйте его с осторожностью).
Шаги для изменения политики исполнения:
Шаг 1) Откройте командную строку PowerShell с правами администратора, щелкнув правой кнопкой мыши по значку PowerShell и выбрав соответствующий пункт. Запуск от имени администратора.
Шаг 2) Выполните следующие действия.
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- Enter
Yв запросе подтверждения. Get-ExecutionPolicy
Первый скрипт PowerShell
Откройте Блокнот и введите:
Write-Host "Hello, Guru99!"
Сохраните файл с .ps1 расширение — например, FirstScript.ps1.
В PowerShell запустите скрипт следующим образом:
& "X:\FirstScript.ps1"
Что такое PowerShell ISE?
Windows Интегрированная среда сценариев PowerShell (ISE) ISE — это редактор по умолчанию для PowerShell. В ISE вы можете запускать команды, писать тесты и отлаживать скрипты в графической оконной среде. Он поддерживает многострочное редактирование, подсветку синтаксиса, автодополнение по клавише Tab, выборочное выполнение и многое другое.
PowerShell ISE также предлагает консольную панель, которая выполняет команды напрямую, а боковые панели отображают исходный код ваших скриптов и любые инструменты, подключенные к ISE. Вы можете открыть несколько окон скриптов одновременно — это полезно при отладке скриптов, зависящих от функций, определенных в других скриптах или модулях.
Воссоздайте ранее созданный скрипт в ISE:
- Вставьте код в редактор.
- Сохраните сценарий.
- Нажмите F5, чтобы запустить его.
- Обратите внимание на вывод в консоль.
Образец 2: Следующий скрипт отображает бесплатно виртуальная память на автомате.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
Следующие понятия составляют словарь повседневной работы с PowerShell.
| Концепция | Описание |
|---|---|
| Командлеты | Встроенные команды, написанные на языках .NET, таких как VB или C#. Разработчики расширяют этот набор, загружая или создавая оснастки PowerShell. |
| функции | Команды, написанные непосредственно на языке PowerShell, без необходимости использования IDE, например... Visual Studio. |
| Сценарии | Текстовые файлы на диске с .ps1 расширение. |
| Области применения | Существующий Windows программы, запускаемые из командной оболочки. |
| Что, если | Указывает командлету не выполнять команду, а описать, что произойдет, если она будет выполнена. |
| подтвердить | Указывает командлету запросить подтверждение перед выполнением. |
| Подробный | Обеспечивает более высокий уровень детализации оперативной информации. |
| Отлаживать | Указывает командлету выводить отладочную информацию. |
| ОшибкаДействие | Определяет, что делает командлет в случае ошибки. Допустимые значения: continue, stop, silentlycontinue, inquire. |
| ОшибкаПеременная | Указывает имя переменной, которая хранит информацию об ошибке. |
| OutVariable | Указывает командлету сохранять свой вывод в определённой переменной. |
| ВнеBuffer | Удерживает определенное количество объектов перед отправкой их дальше по конвейеру. |
Преимущества использования скриптов PowerShell
- Скрипты PowerShell — мощные и лаконичные инструменты, позволяющие добиться многого всего несколькими строками кода.
- Переменные объявляются с помощью
$<variable>синтаксис. - Переменные могут содержать выходные данные команд, объекты и примитивные значения.
- Тип переменной указывать явно не нужно.
PowerShell против командной строки
| PowerShell | Командная строка |
|---|---|
| Глубоко интегрирован с WindowsПредлагает интерактивную командную строку и полноценный язык сценариев. | Интерфейс командной строки по умолчанию, предоставляемый MicrosoftПростое Win32-приложение, взаимодействующее с другими Win32-объектами. |
| Использует командлеты, которые можно вызывать в интерактивном режиме или с помощью сценариев автоматизации. | Командлеты отсутствуют. |
| Обрабатывает выходные данные как объекты, чтобы они могли передаваться в другой командлет через конвейер. | В результате выводится обычный текстовый поток, а не объекты. |
| Обладает расширенными функциями, возможностями и внутренней архитектурой. | Базовая оболочка, подходящая для выполнения устаревших пакетных задач. |
Применение PowerShell
PowerShell стал стандартным выбором для ИТ-администраторов, поскольку он значительно упрощает работу в крупных корпоративных сетях. Представьте себе управление более чем четырьмястами серверами и внедрение нового решения по безопасности, которое зависит от определенной службы, работающей на каждом хосте.
Ручной вход на каждый сервер — медленный и чреватый ошибками процесс. Один-единственный скрипт PowerShell может за считанные минуты проверить каждый сервер, сообщить, на каких хостах уже запущена служба, и даже включить её на остальных. Скрипт считывает намерение один раз и надёжно применяет его ко всей инфраструктуре.
















