PowerShell для начинающих: полное руководство по созданию и запуску скриптов

PowerShell для начинающих: полное руководство по созданию и запуску скриптов

PowerShell — это мощный язык сценариев и оболочка командной строки, встроенная в Windows. Он позволяет автоматизировать рутинные задачи, управлять системой, работать с Active Directory и выполнять тысячи операций, которые вручную заняли бы часы. В этом руководстве для начинающих вы узнаете: как создать и запустить скрипт PowerShell, как разрешить выполнение скриптов, как писать простые и полезные скрипты, а также как автоматизировать повседневные задачи.


Краткий чек-лист: что нужно знать перед началом работы с PowerShell

  • Что такое PowerShell? — командная оболочка и язык сценариев для автоматизации.
  • Какое расширение у PowerShell скрипта?.ps1.
  • Как запустить скрипт PowerShell? — через консоль PowerShell или PowerShell ISE.
  • Почему PowerShell не запускает скрипт? — по умолчанию выполнение скриптов запрещено. Нужно изменить политику выполнения.
  • Как разрешить выполнение скриптов? — командой Set-ExecutionPolicy RemoteSigned.
  • Как создать скрипт? — сохраните команды в файл с расширением .ps1.

Часть 1: Что такое PowerShell и зачем он нужен

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

Где используется PowerShell?

  • Администрирование Windows — управление пользователями, дисками, службами, реестром.
  • Active Directory — создание пользователей, групп, изменение атрибутов.
  • Exchange, SharePoint, Azure — управление облачными и корпоративными сервисами.
  • Автоматизация рутинных задач — резервное копирование, очистка дисков, мониторинг.
  • Работа с файлами и папками — массовое переименование, копирование, удаление.

Часть 2: Первые шаги — запуск PowerShell

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

  • Пуск → Windows PowerShell → Windows PowerShell (обычный режим).
  • Пуск → Windows PowerShell → Windows PowerShell (Администратор) — для выполнения команд, требующих прав администратора.
  • Win + R → введите powershell → Enter.
  • В проводнике Shift + ПКМ по папке → «Открыть окно PowerShell здесь».

После запуска вы увидите окно с синим фоном (по умолчанию) и приглашение командной строки: PS C:\Users\ИмяПользователя>.


Часть 3: Синтаксис PowerShell — основные команды и понятия

PowerShell использует командлеты (cmdlet) — глаголы-существительные, разделенные дефисом. Например: Get-Process, Stop-Service, Set-Location.

Базовые командлеты для знакомства

КомандаОписание
Get-HelpПолучить справку по команде (например, Get-Help Get-Process).
Get-CommandПоказать все доступные команды.
Get-ProcessСписок запущенных процессов.
Get-ServiceСписок служб Windows.
Get-ChildItemСодержимое папки (аналог dir или ls).
Set-LocationСменить текущую папку (аналог cd).
Copy-ItemКопирование файлов и папок.
Remove-ItemУдаление файлов и папок.
Get-ContentПросмотр содержимого текстового файла.
Out-FileСохранить вывод в файл.

Примеры простых команд

# Показать все процессы, отсортированные по использованию памяти
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

# Показать все службы, которые остановлены
Get-Service | Where-Object {$_.Status -eq "Stopped"}

# Найти все файлы больше 1 ГБ в папке C:\Users
Get-ChildItem -Path C:\Users -Recurse -File | Where-Object {$_.Length -gt 1GB}

Часть 4: Создание первого скрипта PowerShell

Скрипт PowerShell — это текстовый файл с расширением .ps1, содержащий последовательность команд.

Шаг 1. Создайте файл скрипта

Самый простой способ — использовать PowerShell ISE (Integrated Scripting Environment) или любой текстовый редактор (Блокнот, VS Code).

  • Нажмите Пуск, найдите Windows PowerShell ISE.
  • Введите команды в верхней части окна (редактор скриптов).
  • Нажмите Файл → Сохранить как.
  • Укажите имя файла, например first-script.ps1.

Шаг 2. Напишите простой скрипт

# Мой первый скрипт PowerShell
Write-Host "Привет, мир!" -ForegroundColor Green

# Получить текущую дату и время
$currentDate = Get-Date
Write-Host "Текущая дата и время: $currentDate"

# Показать свободное место на диске C:
$drive = Get-PSDrive -Name C
Write-Host "Свободно на диске C: $([math]::Round($drive.Free/1GB, 2)) ГБ"

Шаг 3. Сохраните скрипт

Сохраните файл с расширением .ps1. Например: C:\Scripts\first-script.ps1.


Часть 5: Как запустить скрипт PowerShell

После создания скрипта возникает главный вопрос: как запустить скрипт PowerShell?

Способ 1. Запуск из консоли PowerShell

  1. Откройте PowerShell.
  2. Перейдите в папку со скриптом: cd C:\Scripts.
  3. Запустите скрипт: .\first-script.ps1.

Обратите внимание: .\ перед именем файла обязателен. Это указывает PowerShell на текущую папку.

Способ 2. Запуск скрипта из командной строки (cmd)

powershell -ExecutionPolicy Bypass -File "C:\Scripts\first-script.ps1"

Способ 3. Запуск из PowerShell ISE

Откройте файл в PowerShell ISE и нажмите F5 или зеленую кнопку «Выполнить скрипт».

Способ 4. Запуск скрипта от имени администратора

Для многих операций требуются права администратора. Чтобы запустить скрипт PowerShell от имени администратора:

  • Нажмите правой кнопкой мыши на PowerShell → «Запуск от имени администратора».
  • Затем выполните .\first-script.ps1.

Часть 6: Политика выполнения скриптов — почему PowerShell не запускает скрипты

Если при запуске скрипта вы видите ошибку:

File C:\Scripts\first-script.ps1 cannot be loaded because running scripts is disabled on this system.

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

Какие бывают политики выполнения

ПолитикаОписание
RestrictedВыполнение скриптов запрещено (значение по умолчанию).
AllSignedРазрешены только подписанные скрипты.
RemoteSignedРазрешены локальные скрипты; удаленные скрипты должны быть подписаны.
UnrestrictedРазрешены все скрипты, но перед запуском удаленных выдается предупреждение.
BypassНикаких ограничений — всё выполняется без предупреждений.

Как разрешить выполнение скриптов PowerShell

Чтобы разрешить скрипты PowerShell, выполните в консоли (от имени администратора):

Set-ExecutionPolicy RemoteSigned

Подтвердите изменение, нажав Y (Yes). После этого выполнение скриптов PowerShell станет возможным.

Если нужно временно разрешить выполнение скриптов PowerShell только для одного запуска:

powershell -ExecutionPolicy Bypass -File "C:\Scripts\script.ps1"

Чтобы проверить текущую политику выполнения:

Get-ExecutionPolicy

Часть 7: Переменные, условия и циклы в PowerShell

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

Переменные

Переменные в PowerShell начинаются с символа $.

$name = "Иван"
$age = 30
$currentDate = Get-Date

# Вывод переменных
Write-Host "Имя: $name, Возраст: $age"
Write-Host "Сегодня: $currentDate"

Условия (if/else)

$diskFree = (Get-PSDrive -Name C).Free / 1GB

if ($diskFree -lt 10) {
    Write-Host "Внимание! На диске C: осталось менее 10 ГБ" -ForegroundColor Red
} elseif ($diskFree -lt 20) {
    Write-Host "На диске C: осталось менее 20 ГБ" -ForegroundColor Yellow
} else {
    Write-Host "На диске C: достаточно свободного места" -ForegroundColor Green
}

Циклы

# Цикл for
for ($i = 1; $i -le 5; $i++) {
    Write-Host "Итерация номер $i"
}

# Цикл foreach (обработка списка процессов)
$processes = Get-Process | Select-Object -First 5
foreach ($proc in $processes) {
    Write-Host "Процесс: $($proc.Name), Память: $($proc.WorkingSet)"
}

# Цикл while
$count = 0
while ($count -lt 3) {
    Write-Host "Счетчик: $count"
    $count++
}

Часть 8: Полезные скрипты PowerShell для начинающих

Скрипт 1: Очистка временных файлов

# Очистка временных файлов Windows
Write-Host "Начинаю очистку временных файлов..." -ForegroundColor Yellow

# Удаление временных файлов пользователя
$tempFolders = @(
    "$env:TEMP",
    "$env:WINDIR\Temp",
    "$env:WINDIR\Prefetch"
)

foreach ($folder in $tempFolders) {
    if (Test-Path $folder) {
        Write-Host "Очищаю: $folder"
        Remove-Item "$folder\*" -Recurse -Force -ErrorAction SilentlyContinue
    }
}

Write-Host "Очистка завершена!" -ForegroundColor Green

Скрипт 2: Резервное копирование папки

# Скрипт резервного копирования
$source = "C:\Users\$env:USERNAME\Documents"
$destination = "D:\Backup\Documents_$(Get-Date -Format 'yyyy-MM-dd')"

# Создаем папку назначения, если её нет
if (-not (Test-Path $destination)) {
    New-Item -ItemType Directory -Path $destination -Force | Out-Null
}

# Копируем файлы
Write-Host "Копирование из $source в $destination" -ForegroundColor Yellow
Copy-Item -Path $source\* -Destination $destination -Recurse -Force

Write-Host "Резервное копирование завершено!" -ForegroundColor Green

Скрипт 3: Создание пользователя в Active Directory (для администраторов)

# Скрипт создания пользователя в AD
# Требуется модуль Active Directory
Import-Module ActiveDirectory

$firstName = Read-Host "Введите имя пользователя"
$lastName = Read-Host "Введите фамилию"
$samAccountName = Read-Host "Введите логин"

$userParams = @{
    Name = "$firstName $lastName"
    GivenName = $firstName
    Surname = $lastName
    SamAccountName = $samAccountName
    UserPrincipalName = "$samAccountName@domain.local"
    AccountPassword = (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
    Enabled = $true
    Path = "OU=Users,DC=domain,DC=local"
}

New-ADUser @userParams
Write-Host "Пользователь $firstName $lastName создан" -ForegroundColor Green

Скрипт 4: Отправка письма через PowerShell

# Скрипт отправки письма на почту
$smtpServer = "smtp.gmail.com"
$smtpPort = 587
$from = "your-email@gmail.com"
$to = "recipient@example.com"
$subject = "Результат выполнения скрипта"
$body = "Скрипт успешно выполнен в $(Get-Date)"

$credentials = Get-Credential -UserName $from

Send-MailMessage -SmtpServer $smtpServer -Port $smtpPort -UseSsl `
    -From $from -To $to -Subject $subject -Body $body `
    -Credential $credentials

Write-Host "Письмо отправлено" -ForegroundColor Green

Часть 9: Автоматизация скриптов через планировщик задач

Чтобы скрипт выполнялся автоматически (например, каждую ночь), используйте планировщик задач Windows.

Как создать задачу в планировщике

  1. Откройте Планировщик задач (taskschd.msc).
  2. Нажмите Создать задачу.
  3. На вкладке Триггеры — создайте расписание (например, ежедневно в 02:00).
  4. На вкладке Действия — создайте действие:
    • Программа: powershell.exe
    • Аргументы: -ExecutionPolicy Bypass -File "C:\Scripts\backup.ps1"
  5. На вкладке Условия — снимите галочку «Запускать только при питании от электросети», если нужно.
  6. Нажмите ОК.

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


Часть 10: Часто задаваемые вопросы о PowerShell скриптах

Вопрос: Какое расширение у PowerShell скрипта?

Ответ: Расширение файла скрипта — .ps1. Например: myscript.ps1.

Вопрос: Как запустить скрипт PowerShell из командной строки (cmd)?

Ответ: Используйте команду: powershell -ExecutionPolicy Bypass -File "C:\путь\к\скрипту.ps1".

Вопрос: Почему PowerShell не запускает скрипт?

Ответ: По умолчанию выполнение скриптов запрещено. Выполните Set-ExecutionPolicy RemoteSigned от имени администратора.

Вопрос: Как передать параметры в скрипт PowerShell?

Ответ: Объявите параметры в начале скрипта:

param(
    [string]$Name,
    [int]$Count = 10
)

Write-Host "Имя: $Name, Количество: $Count"

Запуск с параметрами: .\script.ps1 -Name "Иван" -Count 5.

Вопрос: Как остановить выполнение скрипта PowerShell?

Ответ: Нажмите Ctrl + C в окне консоли. В коде можно использовать exit или return.

Вопрос: Как подписать скрипт PowerShell?

Ответ: Для подписи скриптов требуется сертификат. Используйте командлет Set-AuthenticodeSignature. Для большинства начинающих достаточно политики RemoteSigned.

Вопрос: Где хранить скрипты PowerShell?

Ответ: Рекомендуется создать отдельную папку, например C:\Scripts, и добавить её в переменную окружения PATH или просто переходить в неё перед запуском.


Заключение: с чего начать изучение PowerShell

PowerShell — это навык, который многократно окупается, особенно если вы системный администратор или разработчик. Начать очень просто:

  • Откройте PowerShell и начните выполнять простые команды: Get-Process, Get-Service, Get-ChildItem.
  • Создайте свой первый скрипт — сохраните несколько команд в файл .ps1 и запустите его.
  • Изучите Get-Help — это лучший способ узнать о любой команде.
  • Автоматизируйте рутинные задачи — начните с очистки диска или резервного копирования.
  • Используйте планировщик задач для запуска скриптов по расписанию.

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


Читайте также

Revo Uninstaller: полное руководство по очистке Windows
Revo Uninstaller: полное руководство по очистке Windows
TestDisk и PhotoRec: восстановить разделы и файлы
TestDisk и PhotoRec: восстановить разделы и файлы
Подсети и маски: руководство для начинающих
Подсети и маски: руководство для начинающих
Эра PowerShell: От новичка к уверенному администратору
Эра PowerShell: От новичка к уверенному администратору

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *