Программирование • 21 марта 2025 • 5 мин чтения

Как работать с PowerShell: большой гид для новичков

С помощью PowerShell можно обрабатывать файлы, управлять процессами на компьютерах и автоматизировать многие задачи. Рассказываем, как работать с этим инструментом.

Что такое PowerShell

PowerShell — это кросс-платформенный инструмент от Microsoft. Он предназначен для автоматизации задач, администрирования систем и работы с разными сервисами Windows. PowerShell сочетает возможности командной строки, скриптовых языков и объектно ориентированного программирования.

PowerShell предназначен для управления операционной системой и её компонентами с помощью команд и скриптов. Его ключевая особенность — работа с объектами, а не просто с текстом. В отличие от стандартной командной строки, PowerShell использует объекты .NET, за счёт чего можно извлекать, фильтровать и изменять данные.

Руслан Посевкин, frontend engineer
Для системного администратора владение PowerShell — это полезный навык. Он позволяет выполнять сложные операции с минимальными усилиями, автоматизировать повторяющиеся задачи и управлять сотнями машин одновременно. Например, с помощью PowerShell можно быстро собрать информацию о системе, настроить политики безопасности, обновить программное обеспечение на всех рабочих станциях или создать резервные копии данных. В результате администратор тратит меньше времени на рутинные операции, снижается вероятность ошибок и повышается общая эффективность работы.

Разобраться в информационных системах и инструментах администрирования можно на курсе «Системный администратор». Студенты проходят практику на основе реальных проектов компаний. После окончания учёбы им помогают с поиском работы.

Основные функции и возможности PowerShell

В PowerShell есть много возможностей для администраторов и разработчиков. 

  • Работа с командлетами (Cmdlets) — встроенными командами для выполнения конкретных задач (например, для управления файлами, службами и процессами).
  • Автоматизация задач. Возможность создавать сценарии для автоматизации рутинных процессов.
  • Управление Windows и облачными сервисами — например, Active Directory, Exchange и др.
  • Объектно ориентированная среда. Обработка данных в виде объектов, а не простого текста.
  • Совместимость с .NET. Возможность использовать библиотеки .NET в скриптах.
  • Удалённое администрирование. Управление удалёнными системами через Windows Remote Management.
  • Расширяемость. Создание собственных модулей и командлетов.

PowerShell можно найти в Windows через меню Пуск

PowerShell для управления задачами и их автоматизации

Одной из главных целей PowerShell является автоматизация рутинных задач. Например, администратор может написать сценарий, который: 

  • создаёт резервные копии файлов;
  • автоматически устанавливает программное обеспечение;
  • управляет учётными записями пользователей;
  • контролирует работу сервисов и процессов.
  • Зачем использовать PowerShell

    PowerShell — это инструмент автоматизации, он упрощает управление системами. Помогает сократить время на выполнение рядовых задач и минимизировать ошибки.

    Преимущества автоматизации с помощью PowerShell
  • Экономия времени. С помощью PowerShell можно выполнять много однотипных операций за секунды.
  • Снижение числа ошибок. При использовании PowerShell влияние человеческого фактора уменьшается.
  • Гибкость. Можно интегрировать PowerShell с другими сервисами и программным обеспечением.
  • Масштабируемость. Через PowerShell можно выполнять команды на большом количестве компьютеров одновременно.
  • Централизованное управление. Можно администрировать локальные и удалённые компьютеры из единой точки.
  • Примеры задач


    Автоматизированная установка программного обеспечения


    Install-Package -Name GoogleChrome

    Создание учетных записей пользователей и управление ими

    New-ADUser -Name "Иван Иванов" -GivenName Иван -Surname Иванов -SamAccountName i.ivanov -UserPrincipalName i.ivanov@domain.com -Path "OU=Users,DC=domain,DC=com" -Enabled $true

    Мониторинг состояния системы

    Get-Service | Where-Object {$_.Status -eq 'Stopped'}

    Резервное копирование данных

    Copy-Item -Path C:\Data -Destination D:\Backup -Recurse

    Очистка временных файлов и кэша

    Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force

    Установка и настройка PowerShell

    Существует несколько способов установки PowerShell в Windows, все они описаны в официальной документации. Разберём два из них.

    Через WinGet

    WinGet — это утилита командной строки для управления приложениями в Windows. Она позволяет искать, устанавливать, обновлять, удалять и настраивать программы. WinGet работает как клиентский интерфейс для Windows Package Manager. В Windows 11 и последних версиях Windows 10 этот инструмент предустановлен и доступен через Установщик приложений.

    Для установки PowerShell можно использовать команды:

    1. Найти последнюю версию PowerShell: winget search Microsoft.PowerShell

    2. Name Source

    Id

    Version

    PowerShell winget

    Microsoft.PowerShell

    7.5.0.0

    PowerShell Preview winget

    Microsoft.PowerShell.Preview

    7.6.0.2

    3. Установить PowerShell основной или предварительной версии с использованием параметра id:
    winget install --id Microsoft.PowerShell --source winget
    или
    winget install --id Microsoft.PowerShell.Preview --source winget

    С помощью пакета MSI

    Чтобы установить PowerShell в Windows, можно скачать пакет установки.

    После скачивания нужно дважды нажать на файл установщика и затем следовать инструкциям на экране. Программа установки создаст ярлык в меню Windows «Пуск».

    По умолчанию пакет устанавливается в каталог: $env:ProgramFiles\PowerShell\<version>.

    А вот как установить PowerShell на MacOS:

    1. Открыть терминал: Cmd + Space, ввести Terminal.
    2. Установить Homebrew, если он не установлен.
    3. Установить PowerShell: brew install --cask powershell
    4. Запустить PowerShell: pwsh

    После установки можно выполнить базовую настройку.

    ● Разрешить выполнение скриптов: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    ● Обновить модули: Install-Module PowerShellGet -Force -SkipPublisherCheck.
    Update-Module
    ● Проверить установленные модули: Get-Module -ListAvailable
    ● Добавить PowerShell в переменные окружения для удобного запуска из командной строки:
    ○ для Windows нужно добавить C:\Program Files\PowerShell\7\ в PATH.
    ○ для macOS — добавить export PATH="$PATH:/usr/bin/pwsh" в ~/.bashrc или ~/.zshrc

    Основные команды (командлеты) для начала работы

    PowerShell использует командлеты (cmdlets) — специальные команды, которые предназначены для выполнения разных задач. Командлеты имеют стандартный формат «глагол — существительное», поэтому можно быстро в них разобраться.

    Примеры использования команд и их описание


    Получение списка процессов


    Get-Process
    Отображает все активные процессы на компьютере

    Просмотр списка файлов в папке

    Get-ChildItem C:\Users
    Показывает файлы и папки в указанном каталоге

    Остановка определённого процесса

    Stop-Process -Name notepad
    Завершает процесс по его имени

    Создание нового файла

    New-Item -Path C:\TestFile.txt -ItemType File
    Создает новый текстовый файл в указанной директории

    Удаление файла

    Remove-Item C:\TestFile.txt
    Удаляет файл из системы

    Фоновое выполнение команд

    В PowerShell можно запускать команды в фоновом режиме, чтобы они не блокировали терминал. Вот несколько примеров:


    Запуск команды в фоновом режиме


    Start-Job -ScriptBlock { Get-Process }
    Выполняет команду Get-Process в фоне

    Просмотр активных фоновых задач

    Get-Job
    Показывает список всех фоновых заданий

    Получение результатов фоновой команды

    Receive-Job -Id 1
    Получает результаты выполнения фоновой задачи с указанным идентификатором

    Остановка фонового задания

    Stop-Job -Id 1
    Завершает выполнение задачи

    Удаление файла

    Remove-Item C:\TestFile.txt
    Удаляет файл из системы

    Работа в PowerShell ISE

    PowerShell ISE (Integrated Scripting Environment) — это встроенная в Windows среда для написания, тестирования и отладки скриптов PowerShell. У неё простой интерфейс, в котором можно выполнять команды в интерактивном режиме и писать многострочные сценарии. 

    Чтобы открыть PowerShell ISE, можно использовать один из способов: 

  • Нажать Win + R, ввести powershell_ise и нажать Enter.
  • В меню «Пуск» найти Windows PowerShell ISE и запустить его.
  • В командной строке PowerShell ввести команду: powershell_ise
  • Интерфейс PowerShell ISE состоит из нескольких основных элементов: 

  • Редактор скриптов. Верхняя часть окна, где можно писать, редактировать и сохранять скрипты PowerShell.
  • Консоль выполнения. Нижняя часть окна, в которой можно выполнять отдельные команды.
  • Окно вывода. Отображает ошибки, предупреждения и результаты выполнения команд.
  • Панель инструментов. Кнопки для запуска, отладки и сохранения скриптов. 
  • Чтобы создать и выполнить скрипт, нужно в редакторе написать код, например: Write-Host "Привет, PowerShell!". Затем нажать F5, чтобы запустить весь скрипт.

    У PowerShell ISE простой интерфейс: в основном окне можно вводить команды

    Точки останова

    В PowerShell ISE можно выполнять пошаговую отладку скриптов. Чтобы установить точку останова, нужно:

    1. В редакторе найти строку, с которой необходимо начать отладку.
    2. Нажать F9, чтобы установить точку останова. Она выделится красным цветом.
    3. Запустить скрипт через F5, выполнение остановится на точке останова.

    Использование автодополнения

    PowerShell ISE поддерживает автодополнение команд и параметров. Чтобы воспользоваться этой функцией, нужно:

    1. Ввести начало команды и нажать Ctrl + Space, чтобы увидеть доступные варианты.
    2. Использовать Tab, чтобы автоматически дописать команду.

    Выполнение части кода

    Можно запускать отдельные строки кода без выполнения всего скрипта:

    1. Выделить нужную часть кода.
    2. Нажать F8, чтобы выполнить выделенный фрагмент.

    Работа с объектами и данными

    PowerShell — это объектно ориентированная оболочка командной строки. В отличие от классической командной строки, которая работает с текстом, PowerShell оперирует объектами. Разберёмся на примерах, как с ними работать.

    Примеры работы с файлами и данными

    PowerShell позволяет читать данные из текстовых файлов, CSV, JSON и других форматов. Вот несколько команд:

    ● Чтение текстового файла:
    $content = Get-Content -Path "C:\example.txt"
    $content
    Команда Get-Content читает содержимое файла и возвращает его в виде массива строк.

    ● Чтение CSV-файла:
    $data = Import-Csv -Path "C:\example.csv"
    $data
    Команда Import-Csv преобразует CSV-файл в объекты, с которыми можно работать.

    ● Чтение JSON-файла:
    $jsonData = Get-Content -Path "C:\example.json" | ConvertFrom-Json
    $jsonData
    Команда ConvertFrom-Json преобразует JSON-строку в объект PowerShell.

    Также можно записывать данные в файл. Вот команды на примере тех же форматов:

    ● Запись в текстовый файл:
    "Hello, World!" | Out-File -FilePath "C:\output.txt"
    Команда Out-File записывает данные в файл.

    ● Запись в CSV-файл:
    $data = @(
    [PSCustomObject]@{ Name = "Alice"; Age = 25 }
    [PSCustomObject]@{ Name = "Bob"; Age = 30 }
    )
    $data | Export-Csv -Path "C:\output.csv" -NoTypeInformation
    Команда Export-Csv сохраняет объекты в CSV-файл.

    ● Запись в JSON-файл:
    $data = @{ Name = "Alice"; Age = 25 }
    $data | ConvertTo-Json | Out-File -FilePath "C:\output.json"
    Команда ConvertTo-Json преобразует объект в JSON-строку.

    Манипуляции данными и их обработка

    В PowerShell можно фильтровать данные с помощью команды Where-Object. Вот, например, скрипт, который создаёт список чисел от 1 до 10 и выводит только четные числа:

    $numbers = 1..10
    $evenNumbers = $numbers | Where-Object { $_ % 2 -eq 0 }
    $evenNumbers

    Для изменения данных можно использовать команду ForEach-Object или простую конструкцию с циклом foreach. Например, скрипт, который преобразует все строки в массиве в верхний регистр:

    $names = @("John", "Jane", "Doe")
    $upperNames = $names | ForEach-Object { $_.ToUpper() }
    $upperNames

    Для сортировки данных используется команда Sort-Object. Вот, к примеру, скрипт, который сортирует список чисел в порядке возрастания:

    $numbers = 5, 3, 9, 2, 8
    $sortedNumbers = $numbers | Sort-Object
    $sortedNumbers

    Для группировки данных по определенному критерию можно использовать команду Group-Object. Вот скрипт, который группирует людей по возрасту:

    $people = @(
    @{Name="John"; Age=25},
    @{Name="Jane"; Age=30},
    @{Name="Doe"; Age=25}
    )
    $groupedByAge = $people | Group-Object -Property Age
    $groupedByAge

    Ошибки при работе с PowerShell и способы их устранения

    Ошибки при работе с PowerShell могут возникать по разным причинам: например, из-за неправильных команд и синтаксиса, из-за неверного типа данных. Рассмотрим несколько примеров ошибок и варианты их устранения.


    Ошибка


    Как устранить

    Синтаксические ошибки. Возникают, если не соблюдать правильный порядок команд и их элементов

    Проверить, что все скобки и кавычки закрыты правильно. Это легко заметить в PowerShell ISE, так как редактор подсвечивает соответствующие символы

    Ошибка «CommandNotFoundException». Возникает, если PowerShell не может найти команду или командлет

    Убедиться, что команда написана правильно. Проверить, что командлет или функция существует и что нет опечатки в имени команды. Можно использовать Tab для автодополнения команд

    Ошибка «AccessDenied» или «UnauthorizedAccessException». Возникает, когда пользователь пытается выполнить команду или доступ к ресурсу, на который у него нет прав

    Для выполнения некоторых операций, например работы с системными файлами или сервисами, необходимо запустить PowerShell с правами администратора. Для этого:
    1. Щёлкнуть правой кнопкой мыши на PowerShell в меню «Пуск».
    2. Выбрать «Запуск от имени администратора»

    Ошибка «ArgumentException». Возникает, когда пользователь передаёт неправильные или неподходящие аргументы в команду

    Проверить, что аргументы правильные. Использовать только те параметры, которые соответствуют текущей команде

    Ошибка «NullReferenceException». Возникает, когда пользователь пытается работать с объектом, который не был инициализирован

    Перед тем как работать с объектами, проверить, что они не равны null

    Ошибка «PipelineInputMismatchException». Возникает, если командлет в конвейере ожидает тип данных, отличный от того, что был передан

    Проверить тип данных, с которыми работаете, и убедиться, что операции применимы к этим данным. Например, если нужно сравнить строку с числом, следует сначала преобразовать данные в нужный тип:
    Get-Process | Where-Object { [int]$_.Name -gt 100 }

    Ошибка «FileNotFoundException». Возникает, если файл или папка не найдены по указанному пути

    Убедиться, что файл существует и путь указан правильно. Можно использовать командлет Test-Path, чтобы проверить существование файла

    Ошибка «OutOfMemoryException». Возникает, если скрипт или команда пытаются загрузить слишком большой объём данных в память

    Для обработки больших данных использовать потоковую обработку или читать данные порциями

    Совет эксперта

    Руслан Посевкин
    Эффективность PowerShell зависит от правильного подхода к разработке скриптов. Начинающим пользователям важно освоить базовые командлеты и принципы работы с объектами. Это позволяет фильтровать, сортировать и изменять данные с высокой точностью. Рекомендую использовать встроенную справку Get-Help <команда> -Full, чтобы лучше понимать параметры командлетов и избегать распространённых ошибок. Также важно соблюдать принципы безопасности. Перед запуском сторонних скриптов всегда проверяйте их код и уровень разрешений (Get-ExecutionPolicy). Для работы с конфиденциальными данными используйте безопасные методы хранения, например ConvertTo-SecureString. При написании сложных сценариев старайтесь разделять код на функции и модули, чтобы повысить читаемость и удобство сопровождения. Регулярно тестируйте скрипты в изолированной среде
    Статью подготовили:
    Руслан Посевкин
    Яндекс Практикум
    Frontend engineer
    Надежда Низамова
    Яндекс Практикум
    Редактор
    Анастасия Павлова
    Яндекс Практикум
    Иллюстратор

    Дайджест блога: ежемесячная подборка лучших статей от редакции

    Поделиться
    Угадайте, где правда, а где фейк про IT, и получите скидку на курсы Практикума
    Fri Mar 21 2025 15:55:14 GMT+0300 (Moscow Standard Time)