Определение факторов для установки и использования Windows PowerShell

Завершено

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

  • установку и использование PowerShell параллельно с Windows PowerShell;
  • запуск PowerShell с использованием учетных данных администратора;
  • определение и изменение политики выполнения в PowerShell.

Установка и использование PowerShell параллельно с Windows PowerShell

В зависимости от версий и выпусков операционной системы Windows организации могут иметь компьютеры с разными версиями PowerShell. Иногда использование таких сред с сочетанием версий является результатом политик организации, которые не позволяют устанавливать более новые версии PowerShell. Также бывает, что программные продукты, особенно серверное ПО, совместимы только с определенной версией PowerShell.

Если установить последнюю версию, то у вас будет несколько версий PowerShell в системе. Например, версия PowerShell 7 поддерживает параллельную работу с Windows PowerShell 5.1 и устанавливается в новый каталог.

При установке последней версии PowerShell вы увидите следующие отличия от Windows PowerShell:

  • Отдельный путь установки и имя исполняемого файла. Windows PowerShell 5.1 устанавливается в расположении $env:WINDIR\System32\WindowsPowerShell\v1.0. PowerShell 7 устанавливается в $env:ProgramFiles\PowerShell\7. Новое расположение добавляется в PATH, что позволяет запускать Windows PowerShell 5.1 и PowerShell 7 параллельно. В Windows PowerShell исполняемый файл PowerShell называется powershell.exe. В версии 6 и последующих версиях исполняемый файл называется pwsh.exe. Новое имя позволяет легко поддерживать параллельную работу обеих версий.
  • Отдельная переменная PSModulePath. По умолчанию Windows PowerShell и PowerShell 7 сохраняют модули в разных расположениях. В PowerShell 7 эти расположения объединены в переменную среды $Env:PSModulePath. Когда модуль импортируется по имени, PowerShell проверяет расположение, указанное в $Env:PSModulePath. Это позволяет PowerShell 7 загружать как модули Core, так и Desktop.
  • Отдельные профили для каждой версии. Профиль PowerShell — это скрипт, который запускается при запуске PowerShell. Этот скрипт настраивает среду, добавляя команды, псевдонимы, функции, переменные, модули и диски PowerShell. В Windows PowerShell 5.1 расположение профиля — $HOME\Documents\WindowsPowerShell. В PowerShell 7 — $HOME\Documents\PowerShell.
  • Отдельные журналы событий. Windows PowerShell и PowerShell 7 регистрируют события в отдельные журналы событий Windows.

При проверке сеанса PowerShell важно определить, какую версию вы используете. Для определения текущей версии введите $PSVersionTable в консоли PowerShell и нажмите клавишу ВВОД. PowerShell отобразит номера версий для различных компонентов, включая основной номер версии PowerShell.

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

Для 64-разрядных операционных систем ведущие приложения PowerShell доступны как в 64-разрядных (x64), так и в 32-разрядных (x86) версиях. При работе с Windows PowerShell вы будете использовать 64-разрядную версию, которая отображается как Windows PowerShell или Интегрированная среда сценариев Windows PowerShell в меню "Пуск". 32-разрядные версии обеспечивают совместимость с локально установленными 32-разрядными расширениями оболочки. Они отображаются в меню "Пуск" как Windows PowerShell (x86) или Интегрированная среда сценариев Windows PowerShell (x86). При открытии Windows PowerShell в заголовках окна приложения будут те же имена, что и в меню "Пуск". Убедитесь, что вы открываете подходящую версию для той задачи, которую хотите выполнить.

Для 32-разрядных операционных систем ведущие приложения PowerShell доступны только в 32-разрядных версиях. При работе с Windows PowerShell можно обратить внимание, что значки и заголовки окон не имеют обозначения "(x86)". Вместо этого они отображаются просто как Windows PowerShell и Интегрированная среда сценариев Windows PowerShell в меню "Пуск".

Если вы планируете использовать PowerShell для задач администрирования на компьютерах с включенным контролем учетных записей (UAC), может потребоваться дополнительный шаг для запуска командлетов PowerShell с учетными данными администратора, обладающего полными разрешениями. Для этого щелкните значок приложения правой кнопкой мыши или активируйте для него контекстное меню, а затем выберите Запуск от имени администратора. При запуске PowerShell под учетными данными администратора заголовок окна ведущего приложения будет включать префикс Администратор.

Определение и изменение политики выполнения в PowerShell

Политика выполнения в PowerShell призвана свести к минимуму возможность непреднамеренного запуска скриптов PowerShell пользователем. Рассматривайте ее как функцию защиты, которая контролирует условия для загрузки файлов конфигурации и выполнения скриптов PowerShell. Эта функция помогает предотвратить выполнение вредоносных скриптов.

Внимание

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

Чтобы определить эффективную политику выполнения для текущего сеанса PowerShell, используйте следующий командлет:

Get-ExecutionPolicy

Вы можете настроить следующие параметры политики:

  • Все подписано. Ограничивает выполнение только подписанными скриптами. Этот параметр требует, чтобы все скрипты, в том числе написанные на локальном компьютере, были подписаны доверенным издателем. Он выдает предупреждение перед выполнением скриптов от издателей, которые еще не классифицированы как доверенные или ненадежные. Однако проверка подписи скрипта не устраняет вероятность того, что скрипт является вредоносным. Это просто дополнительная проверка, которая уменьшает эту возможность.
  • По умолчанию. Задает политику выполнения по умолчанию: Restricted для клиентов Windows и RemoteSigned для серверов Windows.
  • RemoteSigned. Это политика выполнения по умолчанию для серверных компьютеров с Windows. Запуск скриптов возможен, но политика требует наличия цифровой подписи от доверенного издателя для скриптов и файлов конфигурации, скачанных из Интернета. Этот параметр не требует цифровую подпись для скриптов, написанных на локальном компьютере.
  • Ограничено. Это политика выполнения по умолчанию для клиентских компьютеров с Windows. Она разрешает выполнение отдельных команд, но не разрешает скрипты.
  • Неограниченный. Это политика выполнения по умолчанию для компьютеров без Windows, и изменить ее невозможно. Она позволяет запускать неподписанные скрипты. Политика предупреждает пользователя перед применением скриптов и файлов конфигурации, которые не входят в зону локальной интрасети.
  • Не определено. Указывает, что политика выполнения в текущей области не задана. Если политика выполнения во всех областях — Undefined, то будет действовать политика Restricted для клиентов Windows и RemoteSigned для сервера Windows.

Чтобы изменить политику выполнения в PowerShell, используйте следующую команду:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>