Написание скриптов для windows powershell

Как создать и запустить сценарий PowerShell в Windows 10 – инструкция по шагам

Windows 10 PowerShell – это средство командной строки, которое позволяет выполнять команды и сценарии для изменения параметров системы и автоматизации задач. Это похоже на командную строку, но PowerShell является более эффективным интерфейсом командной строки (CLI), который предоставляет широкий набор инструментов и обеспечивает большую гибкость и контроль (особенно для сценариев).

Скрипт – это просто набор команд, сохраненных в текстовый файл (с расширением .ps1), которые PowerShell может понять и выполнить в заданной последовательности. Единственное предупреждение заключается в том, что в отличие от командной строки, протокол безопасности по умолчанию предотвращает выполнение всех сценариев.

Это означает, что при двойном щелчке .ps1 файла в системе Windows 10 ничего не произойдёт, и если вы пытаетесь выполнить скрипт в PowerShell, вы получите сообщение об ошибке: «не может быть загружен, потому что запрещено выполнение сценариев в этой системе». Тем не менее, запускать сценарии на вашем устройстве довольно просто. Вам просто нужно включить правильную политику выполнения.

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

Создание файла сценария PowerShell

В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).

Создание скрипта с помощью блокнота

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

  1. Откройте приложение «Блокнот».
  2. Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»

Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».

  • Сохраните файл под любым удобным названием, например, first_script.ps1
  • Создание сценария с помощью интегрированной среды сценариев

    Кроме того, консоль PowerShell ISE можно использовать для кодирования сценариев в Windows 10. Интегрированная cреда сценариев является сложным инструментом, но вы можете начать работу с помощью этих шагов:

      Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.

    В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например:

    Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»

  • Откройте меню Файл и нажмите кнопку Сохранить .
  • Введите название сценария. Например, first_script_ise.ps1
  • Сохраните скрипт.
  • Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.

    Запуск файла сценария PowerShell

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

    1. Откройте поиск и введите PowerShell, щелкните правой кнопкой мыши в верхний результат и выберите Запуск от имени администратора.
    2. Введите следующую команду, чтобы разрешить выполнение скриптов и нажмите клавишу Enter :

    Укажите тип А и ещё раз нажмите клавишу Enter .

    Введите следующую команду для запуска скрипта и нажмите клавишу Enter :

    В приведенной выше команде обязательно измените PATH\to\SCRIPT на расположение вашего скрипта.

    После выполнения этих шагов сценарий будет запущен, и если он был создан правильно, вы должны увидеть его вывод без проблем.

    PowerShell в Windows 10 включает четыре политики выполнения:

    • Restricted – останавливает выполнение скрипта.
    • RemoteSigned – запускает скрипты, созданные на устройстве. Однако, сценарии, созданные на другом компьютере, не будут запускаться, если они не содержат подписи доверенного издателя.
    • AllSigned – все скрипты будут работать до тех пор, пока они подписаны надежным издателем.
    • Unrestricted запускает любой скрипт без каких-либо ограничений.

    В приведенных выше шагах мы использовали команду, чтобы разрешить запуск локальных скриптов в Windows 10. Однако, если вы не планируете регулярно выполнять скрипты, можно восстановить настройки по умолчанию, используя те же инструкции, но на Шаге 4, обязательно используйте Set-ExecutionPolicy Restricted команду.

    Как написать модуль сценария PowerShell How to Write a PowerShell Script Module

    Модуль скрипта — это любой допустимый сценарий PowerShell, сохраненный в .psm1 расширении. A script module is any valid PowerShell script saved in a .psm1 extension. Это расширение позволяет подсистеме PowerShell использовать правила и командлеты модуля в файле. This extension allows the PowerShell engine to use rules and module cmdlets on your file. Большая часть этих возможностей заключается в том, чтобы помочь вам установить код в других системах, а также управлять областями. Most of these capabilities are there to help you install your code on other systems, as well as manage scoping. Можно также использовать файл манифеста модуля, который описывает более сложные установки и решения. You can also use a module manifest file, which describes more complex installations and solutions.

    Написание модуля скрипта PowerShell Writing a PowerShell script module

    Чтобы создать модуль скрипта, сохраните в файл допустимый сценарий PowerShell .psm1 . To create a script module, save a valid PowerShell script to a .psm1 file. Скрипт и каталог, в котором он хранится, должны использовать одно и то же имя. The script and the directory where it’s stored must use the same name. Например, сценарий с именем MyPsScript.psm1 хранится в каталоге с именем MyPsScript . For example, a script named MyPsScript.psm1 is stored in a directory named MyPsScript .

    Каталог модуля должен находиться в пути, указанном в $env:PSModulePath . The module’s directory needs to be in a path specified in $env:PSModulePath . Каталог модуля может содержать любые ресурсы, необходимые для выполнения скрипта, и файл манифеста модуля, который описывает, как работает ваш модуль PowerShell. The module’s directory can contain any resources that are needed to run the script, and a module manifest file that describes to PowerShell how your module works.

    Создание базового модуля PowerShell Create a basic PowerShell module

    Следующие шаги описывают создание модуля PowerShell. The following steps describe how to create a PowerShell module.

    Сохраните сценарий PowerShell с .psm1 расширением. Save a PowerShell script with a .psm1 extension. Используйте то же имя для скрипта и каталога, в котором сохранен скрипт. Use the same name for the script and the directory where the script is saved.

    Сохранение скрипта с .psm1 расширением означает, что вы можете использовать командлеты модуля, такие как Import-Module. Saving a script with the .psm1 extension means that you can use the module cmdlets, such as Import-Module. Командлеты модуля существуют главным образом, чтобы можно было импортировать и экспортировать код в системы других пользователей. The module cmdlets exist primarily so that you can import and export your code onto other user’s systems. Альтернативное решение — загрузить код в другие системы, а затем попытаться передать его в активную память, что не является масштабируемым решением. The alternate solution would be to load your code on other systems and then dot-source it into active memory, which isn’t a scalable solution. Дополнительные сведения см. в разделе понятие о модуле Windows PowerShell. For more information, see Understanding a Windows PowerShell Module. По умолчанию, когда пользователь импортирует .psm1 файл, все функции в скрипте доступны, но переменные нет. By default, when users import your .psm1 file, all functions in your script are accessible, but variables aren’t.

    Пример сценария PowerShell, озаглавленный Show-Calendar , доступен в конце этой статьи. An example PowerShell script, entitled Show-Calendar , is available at the end of this article.

    Чтобы управлять доступом пользователей к определенным функциям или переменным, вызовите Export-ModuleMember в конце скрипта. To control user access to certain functions or variables, call Export-ModuleMember at the end of your script.

    В примере кода в нижней части статьи имеется только одна функция, которая по умолчанию будет предоставляться. The example code at the bottom of the article has only one function, which by default would be exposed. Однако рекомендуется явно вызывать функции, которые необходимо предоставить, как описано в следующем коде: However, it’s recommended you explicitly call out which functions you wish to expose, as described in the following code:

    Вы можете ограничить импортируемые объекты с помощью манифеста модуля. You can restrict what’s imported using a module manifest. Дополнительные сведения см. в статьях Импорт модуля PowerShell и написание манифеста модуля PowerShell. For more information, see Importing a PowerShell Module and How to Write a PowerShell Module Manifest.

    Если у вас есть модули, необходимые для загрузки вашего модуля, Import-Module в верхней части модуля можно использовать. If you have modules that your own module needs to load, you can use Import-Module , at the top of your module.

    Import-Module Командлет импортирует целевой модуль в систему и может использоваться позднее в процедуре установки собственного модуля. The Import-Module cmdlet imports a targeted module onto a system, and can be used at a later point in the procedure to install your own module. В примере кода в нижней части этой статьи не используются модули импорта. The sample code at the bottom of this article doesn’t use any import modules. Но если это так, они будут перечислены в верхней части файла, как показано в следующем коде: But if it did, they would be listed at the top of the file, as shown in the following code:

    Чтобы описать модуль в справочной системе PowerShell, можно либо использовать стандартные комментарии в файле справки, либо создать дополнительный файл справки. To describe your module to the PowerShell Help system, you can either use standard help comments inside the file, or create an additional Help file.

    Пример кода в нижней части этой статьи содержит справочную информацию в комментариях. The code sample at the bottom of this article includes the help information in the comments. Можно также написать развернутые XML-файлы, содержащие дополнительное содержимое справки. You could also write expanded XML files that contain additional help content. Дополнительные сведения см. в разделе Создание справки для модулей Windows PowerShell. For more information, see Writing Help for Windows PowerShell Modules.

    Если у вас есть дополнительные модули, файлы XML или другое содержимое, которое нужно упаковать с модулем, можно использовать манифест модуля. If you have additional modules, XML files, or other content you want to package with your module, you can use a module manifest.

    Манифест модуля — это файл, содержащий имена других модулей, макетов каталогов, Номера версий, данные автора и другие сведения. A module manifest is a file that contains the names of other modules, directory layouts, versioning numbers, author data, and other pieces of information. PowerShell использует файл манифеста модуля для Организации и развертывания решения. PowerShell uses the module manifest file to organize and deploy your solution. Дополнительные сведения см. в статье Создание манифеста модуля PowerShell. For more information, see How to write a PowerShell module manifest.

    Чтобы установить и запустить модуль, сохраните модуль в один из соответствующих путей PowerShell и используйте Import-Module . To install and run your module, save the module to one of the appropriate PowerShell paths, and use Import-Module .

    Пути, по которым можно установить модуль, находятся в $env:PSModulePath глобальной переменной. The paths where you can install your module are located in the $env:PSModulePath global variable. Например, общий путь для сохранения модуля в системе — %SystemRoot%/users/ /Documents/PowerShell/Modules/ . For example, a common path to save a module on a system would be %SystemRoot%/users/ /Documents/PowerShell/Modules/ . Не забудьте создать каталог для модуля, который использует то же имя, что и модуль скрипта, даже если это единственный .psm1 файл. Be sure to create a directory for your module that uses the same name as the script module, even if it’s only a single .psm1 file. Если модуль не был сохранен по одному из этих путей, необходимо указать расположение модуля в Import-Module команде. If you didn’t save your module to one of these paths, you would have to specify the module’s location in the Import-Module command. В противном случае PowerShell не сможет найти модуль. Otherwise, PowerShell wouldn’t be able to find the module.

    Начиная с PowerShell 3,0, если модуль помещен в один из путей модуля PowerShell, его не нужно явным образом импортировать. Starting with PowerShell 3.0, if you’ve placed your module in one of the PowerShell module paths, you don’t need to explicitly import it. Модуль автоматически загружается, когда пользователь вызывает функцию. Your module is automatically loaded when a user calls your function. Дополнительные сведения о пути к модулю см. в разделе Импорт модуля PowerShell и изменение пути установки PSModulePath. For more information about the module path, see Importing a PowerShell Module and Modifying the PSModulePath Installation Path.

    Чтобы удалить модуль из активной службы в текущем сеансе PowerShell, используйте Remove-Module. To remove a module from active service in the current PowerShell session, use Remove-Module.

    Remove-Module Удаление модуля из текущего сеанса PowerShell, но не удаление модуля или файлов модуля. Remove-Module removes a module from the current PowerShell session, but doesn’t uninstall the module or delete the module’s files.

    Пример кода Show-Calendar Show-Calendar code example

    В следующем примере представлен модуль скрипта, содержащий одну функцию с именем Show-Calendar . The following example is a script module that contains a single function named Show-Calendar . Эта функция отображает визуальное представление календаря. This function displays a visual representation of a calendar. Образец содержит строки справки PowerShell для кратких сведений, описания, значений параметров и кода. The sample contains the PowerShell Help strings for the synopsis, description, parameter values, and code. При импорте модуля Export-ModuleMember команда обеспечивает Show-Calendar экспорт функции в качестве члена модуля. When the module is imported, the Export-ModuleMember command ensures that the Show-Calendar function is exported as a module member.

    Читайте также:  Date formatted in linux
    Оцените статью