May 18

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

Microsoft разработала мощный язык сценариев под названием PowerShell. Он в основном используется для автоматизации административных задач, управления системными конфигурациями и выполнения сложных операций в операционной системе Windows. Скрипты PowerShell могут значительно повысить эффективность и позволяют пользователям автоматизировать повторяющиеся задачи, управлять системными параметрами и интегрировать различные приложения.

Если вы пользователь Windows или системный администратор, изучение запуска скриптов PowerShell однозначно принесет вам пользу. В этом руководстве мы рассмотрим различные способы безопасного и эффективного выполнения скриптов PowerShell.


Что такое скрипт PowerShell?

Скрипт PowerShell — это обычный текстовый файл, содержащий серию команд PowerShell. Вместо того чтобы выполнять каждую команду вручную, вы можете записать их в файл и выполнить все сразу.


Расширения файлов для скриптов PowerShell

Обычно скрипты PowerShell имеют расширение .ps1. Также встречаются:

  • .psm1 — файлы модулей PowerShell
  • .psd1 — манифесты модулей
  • .psc1 — файлы консоли PowerShell

Основные сценарии использования скриптов PowerShell

  • Автоматизация системных задач
  • Управление Active Directory
  • Мониторинг производительности системы
  • Установка обновлений ПО
  • Настройка сетевых параметров

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

powershellCopyEdit$PSVersionTable.PSVersion

Открытие PowerShell с правами администратора

Чтобы открыть PowerShell от имени администратора:

  1. Нажмите Win + X и выберите Windows Terminal (Администратор) или PowerShell (Администратор)
  2. Нажмите “Да” в окне контроля учетных записей (UAC)

Понимание политик выполнения

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


Изменение политики выполнения PowerShell

Политики выполнения защищают систему от несанкционированного кода. Основные типы:

  • Restricted — выполнение скриптов запрещено
  • RemoteSigned — локальные скрипты разрешены; удаленные — только с подписью
  • Unrestricted — разрешены все скрипты (не рекомендуется)

Как изменить политику выполнения

Задать политику можно так:

powershellCopyEditSet-ExecutionPolicy RemoteSigned -Scope CurrentUser

Или обойти её для одного скрипта:

powershellCopyEditpowershell -ExecutionPolicy Bypass -File "C:\Path\To\Script.ps1"

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

Запуск скрипта из консоли PowerShell

Перейдите в каталог со скриптом и выполните:

powershellCopyEdit.\myscript.ps1

Или используйте полный путь:

powershellCopyEditC:\Scripts\myscript.ps1

Запуск скрипта из проводника Windows

  1. Найдите скрипт в проводнике
  2. Щелкните правой кнопкой и выберите Запуск с помощью PowerShell

Запуск скрипта с параметрами

Если скрипт требует параметры:

powershellCopyEdit.\myscript.ps1 -Parameter1 Значение1 -Parameter2 Значение2

Запуск скриптов PowerShell через планировщик заданий

Скрипты можно запускать по расписанию через Планировщик заданий, например для резервного копирования или обслуживания.

Настройка планировщика:

  1. Откройте Планировщик заданий
  2. Выберите Создать простую задачу
  3. Укажите имя, описание и триггер (например, при запуске системы)
  4. В действии выберите Запуск программы и введите:
powershellCopyEditpowershell.exe -File "C:\Path\To\YourScript.ps1"
  1. Завершите настройку, нажав Готово

Решение проблем:

  • Проверьте вкладку История
  • Убедитесь, что путь к скрипту указан верно
  • Включите запуск с наивысшими правами, если требуется

Запуск скриптов PowerShell из командной строки (CMD)

Откройте командную строку и введите:

cmdCopyEditpowershell -File "C:\Path\To\Script.ps1"

Различия между powershell.exe и pwsh.exe:

  • powershell.exe — классическая Windows PowerShell
  • pwsh.exe — PowerShell Core (кроссплатформенная версия)

Пример:

cmdCopyEditpowershell -NoProfile -ExecutionPolicy Bypass -File "C:\MyScript.ps1"

Обработка ошибок скриптов PowerShell

Ошибки могут возникать из-за:

Ошибка

Причина

Решение

Скрипт не подписан

Ограничения политики выполнения

Установите RemoteSigned

Доступ запрещен

Нет прав администратора

Запуск от имени администратора

Файл не найден

Неверный путь

Проверьте путь

Команда не распознана

Отсутствует модуль или команда

Установите нужный модуль


Рекомендации по безопасности при запуске скриптов PowerShell

Как избежать вредоносных скриптов:

  • Не запускайте скрипты из ненадежных источников
  • Проверьте подпись скрипта с помощью:
powershellCopyEditGet-AuthenticodeSignature "C:\MyScript.ps1"
  • Подпишите скрипт:
powershellCopyEditSet-AuthenticodeSignature -FilePath "C:\MyScript.ps1" -Certificate (Get-Item Cert:\CurrentUser\My\ABC123)

Управление доступом:

  • Используйте Get-ACL и Set-ACL для ограничения доступа
  • Настройте политики выполнения для обычных пользователей

Инструменты разработки (IDE) для PowerShell

Встроенный PowerShell ISE

  • Имеет функции отладки
  • Откройте через Win + R, введите powershell_ise

Visual Studio Code (VS Code)

  • Установите расширение PowerShell
  • Поддержка отладки, автозаполнения и плагинов

Заключение

Скрипты PowerShell позволяют экономить время, повышать уровень автоматизации и упростить управление системой. Понимание политик выполнения, устранение ошибок и соблюдение мер безопасности помогут вам безопасно использовать PowerShell в любой среде.

Если вы новичок, начните с простых скриптов и постепенно переходите к более сложным. Удачи в скриптинге!


Часто задаваемые вопросы (FAQ)

1. Как включить выполнение скриптов PowerShell?

powershellCopyEditSet-ExecutionPolicy RemoteSigned -Scope CurrentUser

2. Как запустить скрипт без изменения политики?

powershellCopyEditpowershell -ExecutionPolicy Bypass -File “script.ps1”

3. Можно ли запланировать запуск скрипта PowerShell?
Да, через Планировщик заданий или команду Register-ScheduledTask

4. Как отлаживать скрипт PowerShell?
Используйте Write-Host, -Verbose или блоки Try-Catch

5. Можно ли запускать скрипты PowerShell на Linux?
Да, через PowerShell Core (pwsh)