Нажмите на команду или скрипт, чтобы скопировать его.
Файл с расширением .ps1 - это скрипт PowerShell, мощной оболочки Windows для автоматизации
задач, администрирования системы и работы с объектами. В отличие от .bat, PowerShell работает с
объектами, а не только с текстом - это делает его гибче и безопаснее.
1. Откройте Блокнот или VS Code.
2. Напишите скрипт, сохраните как "script.ps1".
3. Запустите через PowerShell (правой кнопкой → "Запуск от имени администратора").
Перед запуском проверьте политику выполнения:
Get-ExecutionPolicy
Если стоит Restricted, разрешите выполнение локальных скриптов:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Get-Help [команда] - подробная справка (добавьте -Online для открытия
в браузере).
Get-Command - все доступные команды.
Get-Command -Module Microsoft.PowerShell* - команды из определённого
модуля.
Get-Process - список процессов.
Stop-Process -Name "chrome" -Force - принудительное завершение процессов.
Get-Service - все службы.
Get-Service | Where-Object {$_.Status -eq "Running"} - только запущенные
службы.
Restart-Service -Name "Spooler" - перезапуск службы.
Start-Service -Name "Dhcp" - запуск службы.
Write-Output "Привет" - вывод строки или объекта.
Write-Host "Текст" -ForegroundColor Red -BackgroundColor Black - вывод с
цветом.
Clear-Host - очистка экрана (аналог cls).
Get-History - история выполненных команд.
Invoke-History [номер] - повтор команды из истории.
Get-ChildItem | Where-Object {$_.Length -gt 1MB} - файлы больше 1 МБ.
Get-Process | Sort-Object CPU -Descending - процессы, отсортированные по загрузке
CPU.
Get-Service | Select-Object Name, Status - выбор конкретных свойств.
Get-Process | Select-Object Name, @{Name="Память (МБ)";Expression={$_.WS/1MB}} -
вычисляемое поле.
Get-EventLog -LogName System -Newest 5 - последние 5 событий из журнала.
Get-WinEvent -FilterHashtable @{LogName='Application'; ID=1001} - поиск событий по
ID.
Format-Table - табличный вывод (по умолчанию).
Format-List - детальный вывод построчно.
Format-Wide - компактный вывод (например,
Get-PSDrive | Format-Wide).
Out-GridView - вывод в окне с фильтрацией (GUI).
ConvertTo-HTML | Out-File report.html - экспорт в HTML.
ConvertTo-CSV | Out-File data.csv - экспорт в CSV.
ConvertTo-Json - преобразование объекта в JSON.
ConvertFrom-Json - парсинг JSON в объект.
Test-Connection ya.ru - ping хоста.
Resolve-DnsName google.com - DNS-запрос.
Get-NetIPConfiguration - информация о сетевых интерфейсах.
Get-NetTCPConnection | Where-Object State -eq "Listen" - порты, на которых идёт
прослушивание.
Invoke-WebRequest https://httpbin.org/ip - HTTP-запрос (аналог curl).
(Invoke-WebRequest https://site.com/file.txt).Content - получить содержимое
файла.
Invoke-RestMethod -Uri "https://api.example.com/data" -Method Get - работа с REST
API.
# Чтение JSON
$config = Get-Content "config.json" | ConvertFrom-Json
echo $config.database.host
# Запись JSON
$data = @{ name = "Иван"; age = 30 } | ConvertTo-Json
$data | Set-Content "user.json"
Get-Module -ListAvailable - все установленные модули.
Import-Module ActiveDirectory - подключение модуля (если установлен).
Find-Module -Name "PSWindowsUpdate" - поиск модуля в PSGallery.
Install-Module -Name "PSWindowsUpdate" -Scope CurrentUser - установка
модуля.
$source = "$env:USERPROFILE\Documents"
$dest = "D:\Backup\Docs_$(Get-Date -Format 'yyyyMMdd')"
$log = "$PSScriptRoot\backup.log"
Add-Content $log "[$(Get-Date)] Запуск резервного копирования..."
if (Test-Path $source) {
Copy-Item $source $dest -Recurse -Force
Add-Content $log "Успешно: $dest"
} else {
Add-Content $log "ОШИБКА: Папка $source не найдена!"
}
Add-Content $log "[$(Get-Date)] Завершено."
# Требует модуль PSWindowsUpdate
Install-Module -Name PSWindowsUpdate -Force
Get-WindowsUpdate
Install-WindowsUpdate -AcceptAll -AutoReboot
$env:USERNAME - имя пользователя.
$env:COMPUTERNAME - имя ПК.
$env:TEMP - путь к временной папке.
$PSScriptRoot - путь к скрипту (аналог %~dp0 в .bat).
$MyInvocation.MyCommand.Name - имя текущего скрипта.
[CmdletBinding()] в функциях для поддержки общих параметров
(-Verbose, -WhatIf).param() для входных параметров - это делает скрипты
переиспользуемыми.#Requires -RunAsAdministrator в начало, если нужны права
администратора.Write-Debug, Write-Verbose.Get-ExecutionPolicy.$имя = "значение" - создание переменной (например:
$user = $env:USERNAME).
Write-Host $имя - вывод значения.
[int]$число = 42 - переменная с типом.
$PSScriptRoot - путь к папке, где находится скрипт.
if ($env:OS -eq "Windows_NT") {
Write-Host "Это Windows"
} else {
Write-Host "Неизвестная ОС"
}
Операторы сравнения:
-eq - равно-ne - не равно-lt - меньше-gt - больше-like - с подстановкой (например: "hello" -like "h*")-in - проверка вхождения в массивЦикл по числам:
for ($i = 1; $i -le 5; $i++) {
Write-Host "Итерация $i"
}
Перебор файлов:
Get-ChildItem *.txt | ForEach-Object {
Write-Host "Найден файл: $($_.Name)"
}
While-цикл:
$count = 0
while ($count -lt 3) {
Write-Host "Счётчик: $count"
$count++
}
New-Item "log.txt" -ItemType File - создаёт файл.
Set-Content "data.txt" "Текст" - записывает текст в файл.
Add-Content "log.txt" "Новая строка" - добавляет строку в конец файла.
Get-Content "file.txt" - читает содержимое файла.
Remove-Item "temp.*" - удаляет файлы по маске.
Copy-Item "C:\src\*" "D:\backup\" - копирует файлы.
Move-Item "old.txt" "new.txt" - перемещает или переименовывает.
function Say-Hello {
param([string]$name = "Гость")
Write-Host "Привет, $name!"
}
# Вызов функции
Say-Hello "Алексей"
# Создаёт резервную копию папки Documents
$source = "$env:USERPROFILE\Documents"
$dest = "D:\Backup\Docs_$(Get-Date -Format 'yyyyMMdd')"
if (Test-Path $source) {
Copy-Item $source $dest -Recurse -Force
Write-Host "Резервное копирование завершено."
} else {
Write-Warning "Папка $source не найдена."
}
$drive = Get-PSDrive C
if ($drive.Free / 1GB -lt 10) {
Write-Host "⚠️ На диске C: меньше 10 ГБ свободного места!" -ForegroundColor Red
} else {
Write-Host "✅ Диск в норме: $($drive.Free / 1GB:N2) ГБ свободно." -ForegroundColor Green
}
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion - чтение раздела
реестра.
New-Item "HKCU:\Software\MyApp" - создаёт ключ.
Set-ItemProperty "HKCU:\Software\MyApp" "Version" "1.0" - устанавливает
значение.
Set-ExecutionPolicy RemoteSigned - этого достаточно для личного
использования.param() для входных данных.
Add-Content "log.txt" "$(Get-Date): Операция выполнена"
Совет: PowerShell - это основа современного администрирования Windows.
Изучите Get-Member и Select-Object - они помогут работать с объектами
эффективнее.