2.1 Что такое PowerShell
PowerShell — это современная командная оболочка и язык сценариев от Microsoft, предназначенная для автоматизации и управления системами Windows, а также других платформ.
История развития PowerShell
- 2006 — PowerShell 1.0 для Windows XP/Server 2003
- 2009 — PowerShell 2.0 с поддержкой удаленного выполнения
- 2012 — PowerShell 3.0 с улучшенной производительностью
- 2016 — PowerShell Core 6.0 (кроссплатформенная версия)
- 2021 — PowerShell 7.x (современная версия)
Основные особенности PowerShell
Объектно-ориентированный подход: В отличие от традиционных командных оболочек, PowerShell работает с объектами .NET, а не только с текстом. Это делает его более мощным и гибким инструментом.
Преимущества PowerShell
По сравнению с командной строкой (CMD)
- Работа с объектами вместо текста
- Более мощные команды (cmdlets)
- Встроенная система помощи
- Поддержка .NET Framework
- Конвейеры для передачи данных
Версии PowerShell
Windows PowerShell 5.1
- Встроен в Windows 10/11
- Работает только на Windows
- Использует .NET Framework
- Полная совместимость с Windows
PowerShell 7.x
- Кроссплатформенная версия
- Работает на Windows, Linux, macOS
- Использует .NET Core/.NET 5+
- Улучшенная производительность
Области применения
Системное администрирование: PowerShell широко используется для автоматизации задач администрирования Windows Server, управления Active Directory, настройки служб и мониторинга системы.
Разработка и DevOps: PowerShell также применяется в разработке для автоматизации сборки, тестирования и развертывания приложений, особенно в экосистеме Microsoft.
2.2 Установка и настройка PowerShell
PowerShell доступен в нескольких вариантах установки в зависимости от ваших потребностей и версии Windows.
Проверка текущей версии
# Проверка версии PowerShell
$PSVersionTable
# Или более кратко:
$PSVersionTable.PSVersion
Windows PowerShell 5.1 (встроенный)
Автоматическая установка: Windows PowerShell 5.1 встроен в Windows 10 и Windows 11. Для его использования достаточно открыть PowerShell из меню "Пуск" или нажать Win + X и выбрать "Windows PowerShell".
Установка PowerShell 7.x
Способ 1: Microsoft Store
- Откройте Microsoft Store
- Найдите "PowerShell"
- Установите официальное приложение
Способ 2: Скачивание с GitHub
- Перейдите на GitHub releases
- Скачайте MSI пакет для Windows
- Запустите установщик от имени администратора
Способ 3: Через winget (Windows 10/11)
# Установка через winget
winget install Microsoft.PowerShell
Настройка профиля PowerShell
# Проверка существования профиля
Test-Path $PROFILE
# Создание профиля, если его нет
if (!(Test-Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
# Открытие профиля для редактирования
notepad $PROFILE
Полезные настройки профиля
# Пример настроек профиля PowerShell
# Установка алиасов
Set-Alias ll Get-ChildItem
Set-Alias grep Select-String
# Настройка цветов
$Host.UI.RawUI.ForegroundColor = "White"
$Host.UI.RawUI.BackgroundColor = "Black"
# Функция для быстрого перехода в папку
function Set-LocationHome { Set-Location $env:USERPROFILE }
Set-Alias home Set-LocationHome
# Приветственное сообщение
Write-Host "PowerShell загружен успешно!" -ForegroundColor Green
Настройка политики выполнения
Безопасность скриптов: По умолчанию PowerShell блокирует выполнение скриптов из соображений безопасности. Для работы со скриптами необходимо настроить политику выполнения.
# Проверка текущей политики
Get-ExecutionPolicy
# Установка политики для текущего пользователя
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Проверка всех политик
Get-ExecutionPolicy -List
Установка модулей
Модули PowerShell: Модули расширяют функциональность PowerShell. Многие модули устанавливаются автоматически, но некоторые нужно устанавливать вручную.
# Просмотр установленных модулей
Get-Module -ListAvailable
# Установка модуля из PowerShell Gallery
Install-Module -Name ModuleName -Force
# Обновление модуля
Update-Module -Name ModuleName
2.3 Первые команды PowerShell
Начнем изучение PowerShell с базовых команд, которые помогут вам ориентироваться в системе и выполнять основные задачи.
Навигация по файловой системе
# Показать текущее местоположение
Get-Location
# или сокращенно:
pwd
# Перейти в папку
Set-Location C:\Users
# или сокращенно:
cd C:\Users
# Перейти в домашнюю папку
Set-Location $env:USERPROFILE
# или:
cd ~
Работа с файлами и папками
# Показать содержимое папки
Get-ChildItem
# или сокращенно:
ls
# или:
dir
# Показать только папки
Get-ChildItem -Directory
# Показать только файлы
Get-ChildItem -File
# Показать скрытые файлы
Get-ChildItem -Force
Создание файлов и папок
# Создать папку
New-Item -ItemType Directory -Name "НоваяПапка"
# или сокращенно:
mkdir "НоваяПапка"
# Создать файл
New-Item -ItemType File -Name "новый_файл.txt"
# Создать файл с содержимым
"Привет, мир!" | Out-File -FilePath "привет.txt" -Encoding UTF8
Копирование и перемещение
# Копировать файл
Copy-Item "исходный_файл.txt" "копия_файла.txt"
# или сокращенно:
copy "исходный_файл.txt" "копия_файла.txt"
# Переместить файл
Move-Item "файл.txt" "папка\файл.txt"
# или сокращенно:
move "файл.txt" "папка\файл.txt"
# Переименовать файл
Rename-Item "старое_имя.txt" "новое_имя.txt"
Удаление файлов и папок
# Удалить файл
Remove-Item "файл.txt"
# или сокращенно:
del "файл.txt"
# Удалить папку с содержимым
Remove-Item "папка" -Recurse -Force
# Удалить все файлы с определенным расширением
Remove-Item "*.tmp" -Force
Получение информации о системе
# Информация о компьютере
Get-ComputerInfo
# Информация о процессоре
Get-WmiObject -Class Win32_Processor
# Информация о памяти
Get-WmiObject -Class Win32_PhysicalMemory
# Список запущенных процессов
Get-Process
# или сокращенно:
ps
Работа с переменными
# Создать переменную
$имя = "Иван"
$возраст = 25
# Показать значение переменной
Write-Host "Имя: $имя, Возраст: $возраст"
# Переменные окружения
$env:USERNAME
$env:COMPUTERNAME
$env:PATH
Конвейеры (Pipelines)
Конвейеры PowerShell: Одна из самых мощных возможностей PowerShell — это передача результатов одной команды в другую через символ | (вертикальная черта).
# Найти все .txt файлы и показать их размер
Get-ChildItem -Filter "*.txt" | Select-Object Name, Length
# Найти процессы, использующие больше 100MB памяти
Get-Process | Where-Object {$_.WorkingSet -gt 100MB} | Sort-Object WorkingSet -Descending
# Получить список служб, которые запущены
Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object Name, Status
Форматирование вывода
# Табличный формат
Get-Process | Format-Table Name, CPU, WorkingSet
# Список
Get-Service | Format-List Name, Status, StartType
# Широкий формат
Get-ChildItem | Format-Wide Name -Column 3
Совет: Используйте команду Get-Help для получения справки по любой команде PowerShell. Например: Get-Help Get-Process -Examples покажет примеры использования команды Get-Process.
2.4 Система помощи PowerShell
PowerShell имеет мощную встроенную систему помощи, которая является одним из главных преимуществ этой оболочки.
Основные команды помощи
# Общая справка по команде
Get-Help Get-Process
# или сокращенно:
help Get-Process
# Подробная справка
Get-Help Get-Process -Detailed
# Полная справка с примерами
Get-Help Get-Process -Full
# Только примеры
Get-Help Get-Process -Examples
Поиск команд
# Найти все команды, содержащие "process"
Get-Command *process*
# Найти команды для работы с файлами
Get-Command *item*
# Найти команды, начинающиеся с "Get-"
Get-Command Get-*
# Найти команды по глаголу
Get-Command -Verb Get
Get-Command -Verb Set
Get-Command -Verb New
Обновление справки
Важно: Справка PowerShell может быть устаревшей или отсутствовать. Рекомендуется обновить справку при первом использовании PowerShell.
# Обновить справку (требует прав администратора)
Update-Help
# Обновить справку для конкретного модуля
Update-Help -Module Microsoft.PowerShell.Management
# Проверить, доступна ли справка
Get-Help Get-Process -ErrorAction SilentlyContinue
Справка по модулям
# Показать все модули
Get-Module -ListAvailable
# Справка по модулю
Get-Help about_Modules
# Импортировать модуль
Import-Module ModuleName
# Справка по импортированному модулю
Get-Command -Module ModuleName
Концептуальная справка
О концептуальной справке: PowerShell содержит подробные объяснения концепций и принципов работы. Эти статьи начинаются с "about_".
# Список всех концептуальных статей
Get-Help about_*
# Справка по переменным
Get-Help about_Variables
# Справка по операторам
Get-Help about_Operators
# Справка по конвейерам
Get-Help about_Pipelines
# Справка по функциям
Get-Help about_Functions
Интерактивная справка
# Открыть справку в браузере
Get-Help Get-Process -Online
# Показать справку в отдельном окне
Get-Help Get-Process -ShowWindow
Справка по параметрам
# Показать только параметры команды
Get-Help Get-Process -Parameter *
# Справка по конкретному параметру
Get-Help Get-Process -Parameter Name
Полезные алиасы для справки
# Создание полезных алиасов для справки
Set-Alias ? Get-Help
Set-Alias h Get-Help
# Функция для быстрого поиска
function Find-Command {
param([string]$Pattern)
Get-Command *$Pattern* | Select-Object Name, CommandType
}
# Алиас для функции
Set-Alias fc Find-Command
Справка по синтаксису
# Синтаксис команды
Get-Command Get-Process -Syntax
# Справка по операторам сравнения
Get-Help about_Comparison_Operators
# Справка по регулярным выражениям
Get-Help about_Regular_Expressions
Совет: Если вы не знаете точное название команды, используйте Get-Command с подстановочными знаками (*) для поиска. Например: Get-Command *file* найдет все команды, содержащие слово "file".
Внешние ресурсы
Дополнительные ресурсы:
- Официальная документация Microsoft
- GitHub репозиторий PowerShell
- PowerShell Gallery — коллекция модулей и скриптов
- PowerShell.org — сообщество PowerShell