Обычные пользователи управляют компьютером мышкой: кликают по папкам, перетаскивают файлы, нажимают кнопки в программах. Но есть и другой способ — командная строка, где вместо кликов пишут текстовые команды.
PowerShell — это продвинутая командная строка Windows, которая понимает не только простые команды, но и целые программы. Она экономит время и упрощает жизнь администратору или пользователю.
PowerShell объединяет в себе язык программирования и командную оболочку. Он позволяет управлять системой, запускать службы, работать с файлами и сетевыми настройками. В статье мы разберём, как работать с PowerShell при помощи скриптов.
Главная сила PowerShell — в скриптах для ПК. Скрипт PowerShell — это файл с набором команд, которые выполняются последовательно. Такой файл помогает автоматизировать рутинные действия: очистку временных файлов, создание резервных копий, настройку прав доступа или массовую установку программ.
Зачем это нужно:
Чтобы работать со скриптами, нужно знать несколько базовых терминов:
PowerShell работает через виртуальную машину .NET и имеет доступ ко всем её библиотекам. Благодаря этому скрипты могут управлять почти любым компонентом Windows: от системных настроек до пользовательских приложений.
Создать скрипт PowerShell очень просто: это обычный текстовый файл с расширением .ps1. Всё, что нужно — написать набор команд и сохранить их в таком файле.
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
. Этот скрипт покажет 10 процессов, которые сильнее всего нагружают процессор.Совет: для подсветки синтаксиса и удобства редактирования лучше использовать специальные редакторы — например, VS Code. А если нужно быстро написать скрипт для конкретной задачи или исправить ошибку в коде, поможет нейросеть GigaChat — опишите задачу, и она предложит готовое решение.
Запускать скрипт PowerShell можно несколькими способами.
Откройте PowerShell.
Перейдите в папку со скриптом: cd C:\Scripts
Выполните файл: .\TopCPU.ps1
Если вы хотите выполнить скрипт прямо из CMD, используйте:
powershell -ExecutionPolicy Bypass -File «C:\Scripts\TopCPU.ps1»
Этот вариант работает, если политика безопасности позволяет запуск скриптов. Но чаще всего администраторы используют первый способ, так как он надёжнее.
Важно: по умолчанию Windows может блокировать выполнение .ps1-файлов из соображений безопасности. Чтобы разрешить запуск, в PowerShell нужно изменить политику выполнения:
Set-ExecutionPolicy RemoteSigned
Эта настройка позволяет запускать локальные скрипты и только те загруженные из интернета, у которых есть цифровая подпись.
Удобство PowerShell — в том, что короткие скрипты решают важные задачи. Публикуем 7 универсальных скриптов, которые пригодятся и сисадмину, и обычному пользователю. Эти скрипты можно комбинировать, добавлять в планировщик задач или объединять в один файл для автоматизации рутинных процессов.
Освобождает место, удаляя временные файлы из системных папок.
Копирует содержимое указанной папки на другой диск.
Показывает топ-5 процессов, которые сильнее всего нагружают процессор.
Удобно для аудита ПО или подготовки к миграции.
Get-Process | Where-Object { $_.Responding -eq $false } | Stop-Process -Force
Завершает процессы, которые не отвечают.
Простой способ проверить интернет и доступность внешних ресурсов.
Показывает локальных пользователей Windows и их статус.
ValidateSet
, ValidateRange
, ValidateScript
— так получится поймать ошибку раньше.-Verbose
.try { ... } catch { ... } finally { ... }
, задавайте $ErrorActionPreference = ’Stop’
внутри критичных блоков.RequiredModules
.Measure-Command
, кешируйте результаты операций (например, один раз считывайте реестр/файлы).Get-EventLog | Where-Object
... используйте параметры командлета (-After
, -Newest
, -LogName
), чтобы сократить объём данных.-WhatIf
и -Confirm:$true
для командлетов, которые что-то меняют (Remove-Item, Stop-Process) — быстро проверите, что удалится или остановится.<# .SYNOPSIS ... .PARAMETER ... .EXAMPLE ... #>
отражаются в Get-Help — это бесплатная документация для будущего вас.Симптом:
"*.ps1 cannot be loaded because running scripts is disabled on this system.«
Причина: политика выполнения блокирует файлы.
Решение:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Если нужно единоразово обойти политику при запуске из CMD/батника:
powershell -ExecutionPolicy Bypass -File «C:\Scripts\Run.ps1»
Совет: не ставьте Unrestricted для всей системы без необходимости.
Симптом: команды для служб/реестра/установки ПО падают с Access is denied
.
Решение: открыть PowerShell Run as Administrator
. Внутри скрипта корректно проверяйте права:
$IsAdmin = ([Security.Principal.WindowsPrincipal]
[Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $IsAdmin) { throw «Нужен запуск от имени администратора.» }
Симптом: «Cannot find path...»
, особенно при пробелах/символах.
Решение: используйте -LiteralPath и кавычки:
Remove-Item -LiteralPath «C:\Program Files\App\logs\*» -Recurse -Force
Избегайте конкатенации строк для путей; используйте Join-Path:
$log = Join-Path $env:ProgramData «My App\log.txt»
Симптом: «кракозябры» в CSV/логах, ошибки парсинга.
Решение: при экспорте/импорте задавайте кодировку:
Export-Csv report.csv -NoTypeInformation -Encoding UTF8
Get-Content data.txt -Encoding UTF8
Симптом: ничего не происходит, непонятно, где падает.
Решение: добавьте вербозный вывод и строгие ошибки:
$ErrorActionPreference = ’Stop’
Write-Verbose «Старт задачи...» -Verbose
try { <ваш код> } catch { Write-Error $_; throw }
Для замера «тормозов»:
Measure-Command { <подозрительный блок> }
Симптом: «Command not found», методы недоступны на другой машине.
Решение: проверяйте версии и фиксируйте зависимости:
$PSVersionTable.PSVersion
Get-Module -ListAvailable | Select Name,Version
Install-Module SomeModule -RequiredVersion 2.1.0
Если скрипт должен идти и на Windows PowerShell 5.1, и на PowerShell 7 — ограждайте платформоспецифичные места:
if ($IsWindows) { # Windows-only код } else { # кроссплатформенная ветка }
PowerShell уже давно стал не просто расширенной версией командной строки, а мощным инструментом администрирования и автоматизации в Windows. С его помощью можно решить десятки задач — от очистки временных файлов до развёртывания сервисов. Даже самый простой скрипт PowerShell экономит время и силы: один раз написали — и задача выполняется одинаково на любом компьютере.
Сильная сторона PowerShell — это работа с объектами и богатая экосистема командлетов. А благодаря поддержке модулей и интеграции с .NET он подходит не только для Windows, но и для кроссплатформенной среды (PowerShell 7). Использовать powershell script стоит не только сисадминам, но и тем, кто часто повторяет одни и те же действия в системе.
Главное — помнить про безопасность, документировать свой код и отлаживать его в тестовой среде. Тогда PowerShell станет надёжным инструментом для решения повседневных задач.