Расширение файла сценария Powershell
Обновлено: 21.11.2024
По умолчанию создается файл типа script ( .ps1 ), но его можно сохранить с новым именем и расширением. На одной вкладке PowerShell можно создать несколько файлов сценариев.
В связи с этим, как мне защитить скрипт PowerShell?
При запуске скриптов в Windows PowerShell важным аспектом безопасности, который следует учитывать, является предотвращение запуска неавторизованных скриптов в вашей системе.
- Установите политику выполнения PowerShell.
- Создайте сертификат X. 509.
- Подпишите свои скрипты цифровой подписью.
- Нажмите "Пуск" и найдите аксессуары.
- Теперь найдите Windows Powershell, выберите Windows Power Shell.
- Выберите ярлык powershell, щелкните его правой кнопкой мыши и выберите параметр «Запуск от имени администратора». Нажмите Да.
Аналогичным образом возникает вопрос, как мне запустить файл PowerShell?
- Откройте Пуск.
- Выполните поиск PowerShell, щелкните правой кнопкой мыши верхний результат и выберите параметр "Запуск от имени администратора".
- Введите следующую команду, чтобы разрешить запуск скриптов, и нажмите Enter:
- Введите A и нажмите Enter (если применимо).
Как запустить файл ps1 из командной строки?
Введите полный путь к скрипту PowerShell, например "C:Exampleexample_script. ps1", и нажмите клавишу ВВОД. Кроме того, вы можете перейти к файлу сценария в PowerShell ISE. Используйте параметр «Открыть» в меню «Файл», чтобы перейти к сценарию и открыть его, а затем нажмите «Файл» и «Выполнить», чтобы запустить сценарий.
Бетсаида Янек
Должен ли я отключить PowerShell?
О: Проще говоря, нет! PowerShell работает как приложение пользовательского режима, что означает, что он может делать только то, что может делать сам пользователь. Если вы отключите PowerShell, пользователь все равно сможет выполнять те же действия; он просто будет использовать другой метод для выполнения задач, таких как командная строка, инструменты, сценарии и т. д.
Хайзене Зуин
Опасен ли PowerShell?
Ответ заключается в том, что PowerShell не более опасен, чем любое другое приложение. Конечно, у PowerShell есть потенциал для больших разрушений, поскольку он может удалять файлы, изменять реестр и т. д. Если вы запускаете PowerShell от имени локального администратора, он будет иметь полный доступ к вашей системе, как и любое другое приложение.
Каликсто Колбасинск
Где хранятся журналы PowerShell?
Вы также можете регистрировать сведения о командах Windows PowerShell. Журнал событий Windows PowerShell находится в группе Журналы приложений и служб.
Блейн Ни
Что такое командлет?
Командлет — это упрощенная команда, которая используется в среде Windows PowerShell. Среда выполнения Windows PowerShell вызывает эти командлеты в контексте сценариев автоматизации, предоставляемых в командной строке. Среда выполнения Windows PowerShell также вызывает их программно через API-интерфейсы Windows PowerShell.
Оделинда Нейдель
Является ли PowerShell приложением?
PowerShell — это среда автоматизации задач и управления конфигурацией от Microsoft, состоящая из оболочки командной строки и связанного с ней языка сценариев. Затем эти приложения могут использовать функциональные возможности PowerShell для выполнения определенных операций, включая операции, предоставляемые через графический интерфейс.
Описывает, как запускать и писать скрипты в PowerShell.
Подробное описание
Сценарий – это обычный текстовый файл, содержащий одну или несколько команд PowerShell. Скрипты PowerShell имеют расширение PS1.
Выполнение сценария очень похоже на выполнение командлета. Вы вводите путь и имя файла сценария и используете параметры для отправки данных и установки параметров. Вы можете запускать сценарии на своем компьютере или в удаленном сеансе на другом компьютере.
При написании скрипта команда сохраняется для последующего использования и упрощается обмен ею с другими. Самое главное, он позволяет вам запускать команды, просто вводя путь к сценарию и имя файла. Скрипты могут быть как простыми, как одна команда в файле, так и обширными, как сложная программа.
Как запустить скрипт
Прежде чем запускать сценарий в Windows, необходимо изменить политику выполнения PowerShell по умолчанию. Политика выполнения не применяется к PowerShell, работающему на платформах, отличных от Windows.
Политика выполнения по умолчанию Restricted запрещает запуск всех сценариев, включая сценарии, которые вы пишете на локальном компьютере. Дополнительные сведения см. в разделе about_Execution_Policies.
Политика выполнения сохраняется в реестре, поэтому ее нужно изменить только один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
Изменение вступает в силу немедленно.
Чтобы запустить скрипт, введите полное имя и полный путь к файлу скрипта.
Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:
Чтобы запустить скрипт в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, за которой следует обратная косая черта пути ( .\ ).
Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:
Если сценарий имеет параметры, введите параметры и значения параметров после имени файла сценария.
Например, следующая команда использует параметр ServiceName сценария Get-ServiceLog для запроса журнала активности службы WinRM.
В целях безопасности PowerShell не запускает сценарии при двойном щелчке значка сценария в проводнике или при вводе имени сценария без полного пути, даже если сценарий находится в текущем каталоге. Дополнительные сведения о выполнении команд и сценариев в PowerShell см. в разделе about_Command_Precedence.
Запуск с помощью PowerShell
Начиная с PowerShell 3.0, вы можете запускать сценарии из Проводника.
Запустите Проводник, щелкните правой кнопкой мыши имя файла сценария и выберите "Запустить с помощью PowerShell".
Функция "Запуск с PowerShell" предназначена для запуска сценариев, которые не имеют обязательных параметров и не возвращают выходные данные в командную строку.
Запуск скриптов на других компьютерах
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command.
Введите путь и имя файла сценария в качестве значения параметра FilePath. Сценарий должен находиться на локальном компьютере или в каталоге, доступ к которому есть у локального компьютера.
Следующая команда запускает сценарий Get-ServiceLog.ps1 на удаленных компьютерах с именами Server01 и Server02.
Получить справку по скриптам
Командлет Get-Help получает разделы справки для сценариев, а также для командлетов и других типов команд. Чтобы получить раздел справки для сценария, введите Get-Help, а затем путь и имя файла сценария. Если путь к сценарию указан в переменной среды Path, вы можете опустить этот путь.
Например, чтобы получить справку по скрипту ServicesLog.ps1, введите:
Как написать сценарий
Сценарий может содержать любые допустимые команды PowerShell, включая отдельные команды, команды, использующие конвейер, функции и управляющие структуры, такие как операторы If и циклы For.
Чтобы написать сценарий, откройте новый файл в текстовом редакторе, введите команды и сохраните их в файле с допустимым именем и расширением .ps1.
Следующий пример представляет собой простой сценарий, который получает службы, работающие в текущей системе, и сохраняет их в файл журнала. Имя файла журнала создается с текущей даты.
Чтобы создать этот сценарий, откройте текстовый редактор или редактор сценариев, введите эти команды и сохраните их в файле с именем ServiceLog.ps1 .
Параметры в скриптах
Параметры скрипта работают как параметры функции. Значения параметров доступны для всех команд сценария. Все функции параметров функции, включая атрибут Parameter и его именованные аргументы, также допустимы в скриптах.
При запуске скрипта пользователи скрипта вводят параметры после имени скрипта.
В следующем примере показан сценарий Test-Remote.ps1 с параметром ComputerName. Обе функции сценария могут обращаться к значению параметра ComputerName.
Чтобы запустить этот сценарий, введите имя параметра после имени сценария. Например:
Дополнительную информацию об операторе Param и параметрах функции см. в разделах about_Functions и about_Functions_Advanced_Parameters.
Написание справки для скриптов
Вы можете написать раздел справки для скрипта одним из двух следующих способов:
Справка по скриптам на основе комментариев
Создайте раздел справки, используя специальные ключевые слова в комментариях. Чтобы создать справку на основе комментариев для сценария, комментарии должны быть размещены в начале или в конце файла сценария. Дополнительные сведения о справке на основе комментариев см. в разделе about_Comment_Based_Help.
Справка по сценариям на основе XML
Создайте раздел справки на основе XML, например тип, который обычно создается для командлетов. Справка на основе XML необходима, если вы переводите разделы справки на несколько языков.
Чтобы связать сценарий с разделом справки на основе XML, используйте ключевое слово комментария справки .ExternalHelp. Дополнительные сведения о ключевом слове ExternalHelp см. в разделе about_Comment_Based_Help. Дополнительные сведения о справке на основе XML см. в разделе Как написать справку по командлету.
Возврат значения выхода
По умолчанию скрипты не возвращают статус выхода после завершения скрипта. Вы должны использовать оператор выхода, чтобы вернуть код выхода из скрипта. По умолчанию оператор выхода возвращает 0 . Вы можете указать числовое значение, чтобы вернуть другой статус выхода. Ненулевой код выхода обычно сигнализирует об ошибке.
В Windows допускается любое число между [int]::MinValue и [int]::MaxValue.
В Unix разрешены только положительные числа между [byte]::MinValue (0) и [byte]::MaxValue (255). Отрицательное число в диапазоне от -1 до -255 автоматически преобразуется в положительное число путем добавления 256. Например, -2 преобразуется в 254 .
В PowerShell оператор выхода задает значение переменной $LASTEXITCODE. В командной оболочке Windows (cmd.exe) оператор выхода задает значение переменной среды %ERRORLEVEL%.
Любой аргумент, который не является числовым или находится за пределами диапазона, зависящего от платформы, преобразуется в значение 0 .
Область сценария и источник точек
Каждый скрипт работает в своей области. Функции, переменные, псевдонимы и диски, созданные в сценарии, существуют только в области действия сценария. Вы не можете получить доступ к этим элементам или их значениям в области действия скрипта.
Чтобы запустить сценарий в другой области, вы можете указать область действия, например глобальную или локальную, или указать исходный код сценария.
Функция поиска точек позволяет запускать сценарий в текущей области действия, а не в области действия сценария. Когда вы запускаете сценарий с точечным источником, команды в сценарии выполняются так, как если бы вы ввели их в командной строке. Функции, переменные, псевдонимы и диски, создаваемые сценарием, создаются в той области, в которой вы работаете. После запуска сценария вы можете использовать созданные элементы и получать доступ к их значениям в своем сеансе.
Чтобы указать источник сценария, введите точку (.) и пробел перед путем к сценарию.
После запуска сценария UtilityFunctions.ps1 функции и переменные, созданные сценарием, добавляются в текущую область.
Например, сценарий UtilityFunctions.ps1 создает функцию New-Profile и переменную $ProfileName.
Если вы запускаете сценарий UtilityFunctions.ps1 в его собственной области сценария, функция New-Profile и переменная $ProfileName существуют только во время выполнения сценария. Когда скрипт завершает работу, функция и переменная удаляются, как показано в следующем примере.
Когда вы создаете сценарий и запускаете его, сценарий создает функцию New-Profile и переменную $ProfileName в вашем сеансе в вашей области. После запуска скрипта вы можете использовать функцию New-Profile в своем сеансе, как показано в следующем примере.
Дополнительную информацию об области действия см. в разделе about_Scopes.
Скрипты в модулях
Модуль — это набор связанных ресурсов PowerShell, которые можно распространять как единое целое. Вы можете использовать модули для организации ваших скриптов, функций и других ресурсов. Вы также можете использовать модули для распространения своего кода среди других и для получения кода из надежных источников.
Вы можете включить сценарии в свои модули или создать модуль сценария, который представляет собой модуль, полностью или преимущественно состоящий из сценария и вспомогательных ресурсов. Модуль скрипта — это просто скрипт с расширением файла .psm1.
Дополнительную информацию о модулях см. в разделе about_Modules.
Другие функции скрипта
PowerShell имеет множество полезных функций, которые можно использовать в скриптах.
$PSCommandPath — содержит полный путь и имя выполняемого скрипта. Этот параметр действителен во всех сценариях. Эта автоматическая переменная появилась в PowerShell 3.0.
$PSScriptRoot — содержит каталог, из которого запускается сценарий. В PowerShell 2.0 эта переменная допустима только в модулях сценариев ( .psm1 ). Начиная с PowerShell 3.0, он действителен во всех скриптах.
$MyInvocation — автоматическая переменная $MyInvocation содержит информацию о текущем скрипте, в том числе информацию о том, как он был запущен или «вызван». Вы можете использовать эту переменную и ее свойства для получения информации о сценарии во время его выполнения. Например, переменная $MyInvocation .MyCommand.Path содержит путь и имя файла сценария. $MyInvocation .Line содержит команду, которая запустила сценарий, включая все параметры и значения.
Начиная с PowerShell 3.0, $MyInvocation имеет два новых свойства, которые предоставляют информацию о сценарии, вызвавшем текущий сценарий. Значения этих свойств заполняются только в том случае, если инициатор или вызывающий объект является сценарием.
PSCommandPath содержит полный путь и имя скрипта, который вызывал или вызывал текущий скрипт.
PSScriptRoot содержит каталог скрипта, вызвавшего или запустившего текущий скрипт.
В отличие от автоматических переменных $PSCommandPath и $PSScriptRoot, которые содержат информацию о текущем сценарии, свойства PSCommandPath и PSScriptRoot переменной $MyInvocation содержат информацию о сценарии, вызвавшем текущий сценарий.
Разделы данных. Вы можете использовать ключевое слово данных, чтобы отделить данные от логики в сценариях. Разделы данных также могут упростить локализацию. Дополнительные сведения см. в разделах about_Data_Sections и about_Script_Internationalization.
Подписание сценария. Вы можете добавить к сценарию цифровую подпись. В зависимости от политики выполнения вы можете использовать цифровые подписи для ограничения выполнения сценариев, которые могут включать небезопасные команды. Дополнительные сведения см. в разделах about_Execution_Policies и about_Signing.
В этой статье описывается, как создавать, редактировать, запускать и сохранять сценарии на панели сценариев.
Как создавать и запускать скрипты
Вы можете открывать и редактировать файлы Windows PowerShell на панели сценариев. Конкретные типы файлов, представляющие интерес для Windows PowerShell, — это файлы сценариев (.ps1), файлы данных сценариев (.psd1) и файлы модулей сценариев (.psm1). Синтаксис этих типов файлов окрашен в редакторе панели сценариев. Другими распространенными типами файлов, которые вы можете открыть на панели сценариев, являются файлы конфигурации ( .ps1xml ), файлы XML и текстовые файлы.
Политика выполнения Windows PowerShell определяет, можете ли вы запускать сценарии и загружать профили и файлы конфигурации Windows PowerShell. Политика выполнения по умолчанию Restricted запрещает запуск всех сценариев и загрузку профилей. Чтобы изменить политику выполнения, чтобы разрешить загрузку и использование профилей, см. Set-ExecutionPolicy и about_Signing.
Чтобы создать новый файл сценария
На панели инструментов нажмите «Создать» или в меню «Файл» нажмите «Создать». Созданный файл появится на новой вкладке файла на текущей вкладке PowerShell. Помните, что вкладки PowerShell видны только тогда, когда их несколько. По умолчанию создается файл типа script ( .ps1 ), но его можно сохранить с новым именем и расширением. На одной вкладке PowerShell можно создать несколько файлов сценариев.
Чтобы открыть существующий скрипт
На панели инструментов нажмите «Открыть» или в меню «Файл» нажмите «Открыть». В диалоговом окне «Открыть» выберите файл, который хотите открыть. Открытый файл появится в новой вкладке.
Чтобы закрыть вкладку скрипта
Нажмите значок "Закрыть" (X) на вкладке с файлом, который хотите закрыть, или выберите меню "Файл" и нажмите "Закрыть".
Если файл был изменен с момента последнего сохранения, вам будет предложено сохранить или удалить его.
Чтобы отобразить путь к файлу
На вкладке файла укажите имя файла. Полный путь к файлу скрипта отображается во всплывающей подсказке.
Чтобы запустить скрипт
На панели инструментов нажмите "Выполнить сценарий" или в меню "Файл" выберите "Выполнить".
Чтобы запустить часть скрипта
- На панели сценариев выберите часть сценария.
- В меню "Файл" нажмите "Выполнить выбор" или на панели инструментов нажмите "Выполнить выбор".
Чтобы остановить запущенный скрипт
Есть несколько способов остановить работающий скрипт.
- Нажмите «Остановить операцию» на панели инструментов.
- Нажмите CTRL + BREAK.
- Выберите меню «Файл» и нажмите «Остановить операцию».
Нажатие CTRL + C также работает, если в данный момент не выделен какой-либо текст, и в этом случае CTRL + C сопоставляется с функцией копирования для выделенного текста.
Как писать и редактировать текст на панели сценариев
Вы можете копировать, вырезать, вставлять, находить и заменять текст на панели сценариев. Вы также можете отменить и повторить последнее действие, которое вы только что выполнили. Сочетания клавиш для этих действий такие же, как и для всех приложений Windows.
Ввод текста на панели сценариев
- Переместите курсор на панель сценариев, щелкнув в любом месте области сценариев или нажав Перейти к области сценариев в меню "Вид".
- Создайте сценарий. Подсветка синтаксиса и завершение табуляцией расширяют возможности редактирования в Windows PowerShell ISE.
- Дополнительные сведения об использовании функции завершения табуляции для облегчения набора текста см. в разделе Как использовать автодополнение табуляции на панели сценариев и панели консоли.
Чтобы найти текст на панели сценариев
- Чтобы найти текст в любом месте, нажмите CTRL + F или в меню "Правка" нажмите "Найти в скрипте".
- Чтобы найти текст после курсора, нажмите F3 или в меню "Правка" нажмите "Найти далее в скрипте".
- Чтобы найти текст перед курсором, нажмите SHIFT + F3 или в меню "Правка" нажмите "Найти предыдущий в скрипте".
Чтобы найти и заменить текст на панели сценариев
Нажмите CTRL + H или в меню "Правка" нажмите "Заменить в скрипте". Введите текст, который вы хотите найти, и текст замены, затем нажмите клавишу ВВОД .
Чтобы перейти к определенной строке текста на панели сценариев
На панели сценариев нажмите CTRL + G или в меню "Правка" выберите "Перейти к строке".
Введите номер строки.
Чтобы скопировать текст в области сценариев
На панели сценариев выберите текст, который хотите скопировать.
Нажмите CTRL + C или на панели инструментов щелкните значок "Копировать" или в меню "Правка" выберите "Копировать".
Чтобы вырезать текст на панели сценариев
- На панели сценариев выберите текст, который нужно вырезать.
- Нажмите CTRL + X или на панели инструментов нажмите значок "Вырезать" или в меню "Правка" нажмите "Вырезать".
Чтобы вставить текст в панель сценариев
Нажмите CTRL + V или на панели инструментов щелкните значок "Вставить" или в меню "Правка" выберите "Вставить".
Чтобы отменить действие на панели сценариев
Нажмите CTRL + Z или на панели инструментов щелкните значок "Отменить" или в меню "Правка" выберите "Отменить".
Чтобы повторить действие на панели сценариев
Нажмите CTRL + Y или на панели инструментов нажмите значок "Повторить" или в меню "Правка" нажмите "Повторить".
Как сохранить скрипт
Рядом с именем скрипта появляется звездочка, чтобы отметить файл, который не был сохранен с момента его изменения. Звездочка исчезнет, когда файл будет сохранен.
Чтобы сохранить сценарий
Нажмите CTRL + S или на панели инструментов щелкните значок "Сохранить" или в меню "Файл" выберите "Сохранить".
Чтобы сохранить сценарий и назвать его
- В меню "Файл" нажмите "Сохранить как". Появится диалоговое окно «Сохранить как».
- В поле Имя файла введите имя файла.
- В поле "Тип файла" выберите тип файла. Например, в поле "Тип файла" выберите "Сценарии PowerShell ( *.ps1 )".
- Нажмите "Сохранить".
Чтобы сохранить сценарий в кодировке ASCII
По умолчанию интегрированная среда сценариев Windows PowerShell сохраняет новые файлы сценариев ( .ps1 ), файлы данных сценариев ( .psd1 ) и файлы модулей сценариев ( .psm1 ) в формате Unicode (BigEndianUnicode) по умолчанию. Чтобы сохранить сценарий в другой кодировке, например ASCII (ANSI), используйте методы Save или SaveAs объекта $psISE.CurrentFile.
Следующая команда сохраняет новый сценарий как MyScript.ps1 с кодировкой ASCII.
Следующая команда заменяет текущий файл скрипта файлом с тем же именем, но в кодировке ASCII.
Следующая команда получает кодировку текущего файла.
Windows PowerShell ISE поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и по умолчанию. Значение параметра «По умолчанию» зависит от системы.
Windows PowerShell ISE не изменяет кодировку файлов сценариев при использовании команд "Сохранить" или "Сохранить как".
Как вы, наверное, знаете, PowerShell — это новейшая оболочка операционной системы Windows (ОС) и инструмент для создания сценариев . Оболочка — это программа, предоставляющая пользовательский интерфейс ОС. Когда мы говорим о PowerShell, часть «оболочки» обычно относится к его интерфейсу командной строки (CLI). CLI — это базовый пользовательский интерфейс, который позволяет вам вводить команду (или серию команд) по запросу. Когда вы нажимаете Enter, оболочка выполняет действие, затем CLI снова отображает приглашение и ожидает другую команду. (См. также « Начало работы с PowerShell »).
Поначалу CLI может показаться не таким эффективным, как графический пользовательский интерфейс (GUI), потому что вам нужно вводить команды, следя за правописанием, пробелами, кавычками и т. д. Однако командные оболочки всегда поддерживали некоторые формы пакетное выполнение, которое также называется сценарий. Сценарий — это просто список команд, хранящихся в текстовом файле, который вы можете выполнять по запросу. PowerShell не является исключением — хотя PowerShell — превосходный интерфейс командной строки, он становится еще более гибким при использовании сценариев. Сценарий PowerShell — это просто текстовый файл с расширением .ps1, который содержит список команд, которые должен выполнить PowerShell.
Однако философия PowerShell безопасна по умолчанию предотвращает запуск всех сценариев, поэтому двойной щелчок по сценарию PowerShell в проводнике Windows не приведет к его выполнению. Кроме того, PowerShell не выполняет сценарии из текущего каталога. Хорошая новость заключается в том, что вам не нужно быть гуру PowerShell, если все, что вы хотите сделать, это понять, как запускать сценарии PowerShell. Просто выполните следующие действия:
- Установите Windows PowerShell.
- Установите политику выполнения PowerShell.
- Выполняйте сценарии PowerShell, помня о нескольких важных деталях.
1. Установите Windows PowerShell
Если у вас Windows 7 или более поздняя версия, вам не нужно устанавливать PowerShell, поскольку он предустановлен вместе с ОС. Если вы используете Windows Vista или более раннюю версию, вам необходимо загрузить и установить PowerShell. Для Windows XP и Windows Server 2003 также требуется Microsoft .NET Framework 2.0. (Для PowerShell 2.0 требуется .NET Framework 2.0 SP1.) Ссылки на файлы для загрузки можно найти на веб-странице «Сценарии с помощью Windows PowerShell».
2. Установите политику выполнения PowerShell
Как я упоминал ранее, PowerShell по умолчанию защищен. Первый вывод из этой философии заключается в том, что PowerShell не будет выполнять сценарии, пока вы явно не дадите ему на это разрешение.PowerShell имеет четыре политики выполнения, которые управляют выполнением сценариев:
- Запрещено. PowerShell не запускает никаких сценариев. Это политика выполнения PowerShell по умолчанию.
- AllSigned. PowerShell будет запускать только сценарии, подписанные цифровой подписью. Если вы запускаете сценарий, подписанный издателем, которого PowerShell раньше не видел, PowerShell спросит, доверяете ли вы издателю сценария.
- RemoteSigned. PowerShell не будет запускать сценарии, загруженные из Интернета, если у них нет цифровой подписи, но сценарии, не загруженные из Интернета, будут выполняться без запроса. Если у скрипта есть цифровая подпись, PowerShell предложит вам перед запуском скрипта от издателя, которого он раньше не видел.
- Неограниченно. PowerShell игнорирует цифровые подписи, но по-прежнему выдает запрос перед запуском скрипта, загруженного из Интернета.
Для отображения текущей политики выполнения необходимо ввести команду
в командной строке PowerShell (которая будет выглядеть как PS C:\> при условии, что текущее местоположение — C:\). Чтобы задать политику выполнения, введите команду
где policy — одно из имен политики (например, RemoteSigned).
Для настройки политики выполнения требуются права администратора. В Vista и более поздних версиях вы должны запускать PowerShell с повышенными разрешениями, если вы уже являетесь администратором и включен контроль учетных записей (UAC). Чтобы запустить PowerShell с повышенными разрешениями в Vista и более поздних версиях, щелкните правой кнопкой мыши ярлык и выберите Запуск от имени администратора, как показано на экране 1.
Если вы вошли в систему XP или Windows 2003 как обычный пользователь, вы можете щелкнуть правой кнопкой мыши ярлык PowerShell, выбрать Запустить от имени и ввести учетные данные администратора.
Что касается политик выполнения, важно понимать, что означает фраза "загружено из Интернета". В Windows эта фраза означает, что файл имеет альтернативный поток данных, указывающий, что файл был загружен из зоны Интернета. Чтобы разблокировать сценарий, щелкните правой кнопкой мыши файл .ps1, выберите «Свойства», затем нажмите кнопку «Разблокировать», как показано на рис. 2. Моя эксклюзивная веб-статья «Работа с диалоговыми окнами предупреждений безопасности XP SP2» содержит более подробные сведения об альтернативном поток данных и то, как Windows его использует.
Я рекомендую установить для политики выполнения значение RemoteSigned, поскольку эта политика выполнения позволяет писать и запускать сценарии на вашем компьютере без необходимости подписывать их сертификатом подписи кода. Вам по-прежнему будет запрещено запускать скрипт, загруженный из Интернета, если вы сначала явно не разблокируете его. Чтобы задать политику выполнения RemoteSigned, введите в командной строке PowerShell следующую команду:
Microsoft также предоставляет административный шаблон (файл .adm) для управления политикой выполнения PowerShell с помощью объекта групповой политики (GPO), который можно загрузить с веб-страницы «Административные шаблоны для Windows PowerShell».
3. Запускайте сценарии PowerShell
После настройки политики выполнения вы можете запускать сценарии PowerShell. Чтобы запустить скрипт, откройте окно PowerShell, введите имя скрипта (с расширением .ps1 или без него), затем параметры скрипта (если есть) и нажмите Enter. В соответствии с философией безопасности PowerShell по умолчанию двойной щелчок на файле .ps1 в проводнике Windows открывает сценарий в Блокноте, а не выполняет сценарий с помощью PowerShell.
При запуске сценариев PowerShell необходимо помнить о нескольких деталях, первая из которых касается новой опции в PowerShell 2.0. Когда вы щелкаете файл PS1 правой кнопкой мыши, PowerShell 2.0 предоставляет параметр Запустить с PowerShell, но я не рекомендую его использовать по двум причинам:
- При использовании этого параметра окно PowerShell закрывается сразу после завершения сценария. Поскольку большинство сценариев PowerShell не рассчитаны на паузу после завершения, вы пропустите все выходные данные, которые предоставляет сценарий, и любые ошибки, с которыми может столкнуться сценарий.
- Многие сценарии PowerShell используют параметры командной строки, управляющие их поведением. При использовании этого параметра невозможно ввести параметры.
По этим причинам я рекомендую вместо этого запускать сценарии PowerShell из командного окна PowerShell.
Еще одна важная деталь, о которой следует помнить при запуске сценариев, заключается в том, что PowerShell не запускает их из текущего каталога. Вместо этого он использует Путь. (Путь — это разделенный запятыми список каталогов, хранящихся в переменной среды Path, в которых Windows ищет исполняемые файлы.) Если вы введете имя сценария (но не его местоположение), а сценарий не будет найден в пути, PowerShell не запустит его, даже если сценарий находится в текущем каталоге. Это еще один аспект философии безопасности PowerShell по умолчанию. PowerShell не запускает сценарии в текущем каталоге, чтобы предотвратить сценарий, в котором злоумышленник помещает поддельный сценарий в текущий каталог с тем же именем, что и у часто используемой команды. Если PowerShell сначала запустит сценарии из текущего каталога, пользователь может случайно запустить мошенническую программу. Игнорируя сценарии в текущем каталоге, PowerShell избегает этой потенциальной проблемы.
Чтобы явным образом запустить скрипт из текущего каталога, вы должны добавить к имени скрипта префикс .\ или ./, чтобы PowerShell понял, что вы собираетесь запускать его из текущего каталога. Например, предположим, что каталога C:\Scripts нет в пути, а следующий сценарий с именем HelloWorld.ps1 существует в C:\Scripts:
Если вы вводите эти команды в командной строке PowerShell
PowerShell не будет запускать HelloWorld.ps1, даже если текущее расположение — C:\Scripts. (Обратите внимание, что я включил подсказки, которые вы увидите, в демонстрационных целях. Вы не будете вводить эти подсказки при вводе команд.) Вместо второй команды вам нужно ввести одну из следующих команд:
Поскольку PowerShell не выполняет сценарии из текущего каталога, я рекомендую вам создать каталог, добавить этот каталог в свой путь и хранить в нем сценарии PowerShell. Так вы сможете избежать каких-либо проблем.
Последняя деталь, которую необходимо помнить при запуске сценариев PowerShell, заключается в том, что вам нужно обрабатывать пробелы иначе, чем в Cmd.exe. Если путь к сценарию содержит пробелы, вы должны заключить его в двойные кавычки (""), чтобы запустить его в Cmd.exe. Например, в Cmd.exe вы должны ввести:
для запуска сценария с именем C:\Program Files\Scripts\HelloWorld.cmd. Заключение пути сценария для его запуска не будет работать в PowerShell, поскольку наличие двойных кавычек заставляет PowerShell оценивать путь как выражение, а не как команду. Если вы просто вводите имя сценария в кавычках, как в Cmd.exe, PowerShell предполагает, что путь является строкой, и выводит путь вместо запуска сценария. Чтобы обойти это, вы можете использовать оператор вызова PowerShell & для выполнения строки в кавычках как команды, как в
Поскольку вы должны использовать оператор & и кавычки для выполнения сценария, в имени пути которого есть пробелы, я рекомендую вам не использовать пробелы в именах ваших сценариев при создании собственных сценариев. Кроме того, если вы создаете каталог для хранения скриптов, не забудьте также оставить пробелы в его имени.
Запуск сценариев PowerShell стал проще
Вам не нужно быть экспертом по PowerShell или языку сценариев, чтобы легко запускать сценарии PowerShell. Просто выполните эти три шага, и вы сразу же сможете запускать сценарии PowerShell.
Читайте также: