hostprofi.ru
Подобрать хостинг
Термин·буква P

Powershell-скрипт

краткое определение

PowerShell-скрипт — файл автоматизации с расширением .ps1, написанный на языке PowerShell: объектно-ориентированной командной оболочке Microsoft для администрирования Windows Server, Active Directory и облачных сервисов Azure.

PowerShell — кроссплатформенная командная оболочка и язык сценариев от Microsoft, основанный на .NET. В отличие от Bash, который оперирует текстовыми потоками, PowerShell работает с объектами .NET: каждая команда (cmdlet) возвращает структурированный объект, который можно передать следующей команде в пайплайне. PowerShell Core (6+) и PowerShell 7+ работают кроссплатформенно на Windows, Linux и macOS.

Как работает

PowerShell-скрипт (.ps1) — текстовый файл с последовательностью командлетов (глагол-существительное: Get-Process, Set-Service, Restart-Computer).

Типичные задачи автоматизации Windows Server:

  • Active Directory — создание и изменение пользователей и групп: New-ADUser, Add-ADGroupMember.
  • Управление сервисами — мониторинг и перезапуск: Get-Service | Where-Object {$_.Status -eq "Stopped"} | Start-Service.
  • Файловая система — очистка логов, копирование, архивирование по критерию даты.
  • Сетевая диагностикаTest-NetConnection, Resolve-DnsName.
  • IIS — управление пулами приложений через Import-Module WebAdministration.
  • Azure / Microsoft 365 — через модули Az и ExchangeOnlineManagement.

Политика выполнения (Execution Policy) управляет тем, какие скрипты могут запускаться: Restricted (по умолчанию — скрипты заблокированы), RemoteSigned (локальные выполняются, внешние требуют подписи), Unrestricted. Для сервера обычно устанавливают RemoteSigned: Set-ExecutionPolicy RemoteSigned -Scope LocalMachine.

Планирование запуска — через Task Scheduler (New-ScheduledTask) или systemd timer на Linux.

История

PowerShell разработан Джеффри Сноувером (Jeffrey Snover) в Microsoft и впервые выпущен в 2006 году как Windows PowerShell 1.0 для Windows XP SP2 / Server 2003. PowerShell 2.0 (2009) добавил remoting (WinRM). PowerShell 5.1 (2016) — последняя Windows-only версия, входит в Windows 10/Server 2016. PowerShell Core 6.0 (2018) — кроссплатформенный ребрендинг на базе .NET Core. PowerShell 7.x (2020+) — активно поддерживаемая ветка, работает на .NET 6/7/8.

На что обращать внимание

PowerShell Remoting (WinRM, порт 5985/5986) позволяет выполнять командлеты на удалённых серверах через Invoke-Command или Enter-PSSession. Для безопасности настраивайте WinRM только для HTTPS (5986), ограничивайте ACL. При работе с VPS Windows PowerShell — основной инструмент для администрирования без GUI. Для хранения секретов используйте модуль SecretManagement + SecretStore, а не хардкод паролей в скрипте. Активная аутентификация в удалённых сессиях может потребовать CredSSP или Kerberos, что нужно учитывать при настройке Kerberos-делегирования.

Типичные ошибки при работе с PowerShell

  • Hardcode паролей в скриптах: используйте Get-Credential или Read-Host -AsSecureString.
  • Запуск скриптов с Set-ExecutionPolicy Unrestricted на продакшне — риск выполнения вредоносных скриптов.
  • Игнорирование error handling: без try/catch скрипт продолжает выполнение при ошибках.

PowerShell vs Bash vs Python для автоматизации хостинга

ПараметрPowerShellBashPython
Основная ОСWindows (кросс-платформ с 7.0)Linux/Macкросс-платформ
API Windowsнативныйчерез вызовычерез win32api
Объектная модельобъекты .NETтекстовые потокиобъекты Python
Hosting применениеWindows VPS, IISLinux VPSуниверсально

PowerShell Core 7.x работает на Ubuntu Server и RHEL через apt install powershell. Для администрирования Windows Server на VPS PowerShell незаменим: управление IIS, Active Directory, WinRM, Hyper-V. PSRemoting позволяет выполнять команды на удалённых Windows-серверах аналогично SSH.

Другие термины

Powershell-скрипт — что это, определение и как работает | Справочник — hostprofi.ru