Разное

Как создать powershell скрипт: Написание и запуск сценариев в интегрированной среде сценариев Windows PowerShell — PowerShell

Содержание

Написание и запуск сценариев в интегрированной среде сценариев Windows PowerShell — PowerShell



  • Чтение занимает 5 мин

В этой статье

В этой статье описано как создавать, редактировать, выполнять и сохранять скрипты в области скриптов.This article describes how to create, edit, run, and save scripts in the Script Pane.

Создание и выполнение сценариевHow to create and run scripts

В области скриптов можно открывать и редактировать файлы Windows PowerShell.You can open and edit Windows PowerShell files in the Script Pane. Сейчас нас интересуют следующие типы файлов Windows PowerShell: файлы скриптов (.ps1), файлы данных скриптов (. psd1) и файлы модулей скриптов (.psm1).Specific file types of interest in Windows PowerShell are script files (.ps1), script data files (.psd1), and script module files (.psm1). Эти типы файлов имеют цветовую подсветку синтаксиса в редакторе области сценариев.These file types are syntax colored in the Script Pane editor. Другие стандартные файлы, которые можно открыть в области сценариев, — это файлы конфигурации (.ps1xml), XML-файлы и текстовые файлы.Other common file types you may open in the Script Pane are configuration files (.ps1xml), XML files, and text files.

Примечание

Политика выполнения Windows PowerShell определяет, можно ли выполнять сценарии, загружать профили Windows PowerShell и файлы конфигурации.The Windows PowerShell execution policy determines whether you can run scripts and load Windows PowerShell profiles and configuration files. Политика выполнения по умолчанию, Restricted, запрещает выполнение сценариев и блокирует загрузку профилей. The default execution policy, Restricted, prevents all scripts from running, and prevents loading profiles. Чтобы изменить эту политику выполнения и разрешить загрузку и использование профилей, см. описание Set-ExecutionPolicy и about_Signing.To change the execution policy to allow profiles to load and be used, see Set-ExecutionPolicy and about_Signing.

Создание файла сценарияTo create a new script file

Нажмите кнопку Создать на панели инструментов или откройте меню Файл и выберите Создать .On the toolbar, click New , or on the File menu, click New . Созданный файл появится в новой вкладке, расположенной под текущей вкладкой PowerShell. Помните, что вкладки PowerShell отображаются, только если их несколько.The created file appears in a new file tab under the current PowerShell tab. Remember that the PowerShell tabs are only visible when there are more than one. По умолчанию создается файл сценария (. ps1), но его можно сохранить с новым именем и расширением.By default a file of type script (.ps1) is created, but it can be saved with a new name and extension. На одной вкладке PowerShell может быть создано несколько файлов сценариев.Multiple script files can be created in the same PowerShell tab.

Открытие существующего сценарияTo open an existing script

Нажмите кнопку Открыть… на панели инструментов или откройте меню Файл и выберите пункт Открыть .On the toolbar, click Open , or on the File menu, click Open . В диалоговом окне Открыть выберите файл, который требуется открыть.In the Open dialog box, select the file you want to open. Открытый файл появится в новой вкладке.The opened file appears in a new tab.

Закрытие вкладки сценарияTo close a script tab

На вкладке файла, которую нужно закрыть, щелкните значок закрытия ( X ) или откройте меню File (Файл) и выберите Close (Закрыть). Click the Close icon ( X ) of the file tab you want to close or select the File menu and click Close .

Если файл был изменен с момента последнего сохранения, будет предложено сохранить или отменить изменения.If the file has been altered since it was last saved, you’re prompted to save or discard it.

Отображение пути к файлуTo display the file path

На вкладке файла наведите курсор на его имя.On the file tab, point to the file name. Появится подсказка с полным путем к файлу сценария.The fully qualified path to the script file appears in a tooltip.

Запуск сценарияTo run a script

Нажмите кнопку Выполнить сценарий на панели инструментов или откройте меню Файл и выберите пункт Выполнить .On the toolbar, click Run Script , or on the File menu, click Run .

Выполнение части сценарияTo run a portion of a script

  1. Выберите часть сценария в области сценариев. In the Script Pane, select a portion of a script.
  2. Нажмите кнопку Выполнить выделенный фрагмент на панели инструментов или откройте меню Файл и выберите пункт Выполнить выделенный фрагмент .On the File menu, click Run Selection , or on the toolbar, click Run Selection .

Остановка выполняемого сценарияTo stop a running script

Есть несколько способов остановить выполняемый скрипт.There are several ways to stop a running script.

  • На панели инструментов щелкните Остановить операцию .Click Stop Operation on the toolbar
  • Нажмите CTRL+BREAK.Press CTRL+BREAK
  • В меню Файл выберите Остановить операцию .Select the File menu and click Stop Operation .

Нажатие клавиш CTRL+C также сработает, если нет выделенного текста. В противном случае нажатие клавиш CTRL+C приведет к копированию выделенного текста.Pressing CTRL+C also works unless some text is currently selected, in which case CTRL+C maps to the copy function for the selected text.

Написание и редактирование текста в области сценариевHow to write and edit text in the Script Pane

В области скриптов текст можно копировать, вырезать, вставлять, искать и заменять.You can copy, cut, paste, find, and replace text in the Script Pane. Также можно отменить и повторить последнее выполненное действие.You can also undo and redo the last action you just performed. Для этого используются те же клавиши, как и во всех других приложениях Windows.The keyboard shortcuts for these actions are the same shortcuts used for all Windows applications.

Ввод текста в области сценариевTo enter text in the Script Pane

  1. Установите курсор в область сценариев, щелкнув кнопкой мыши любую ее часть или выбрав пункт Перейти в область сценариев в меню Вид . Move the cursor to the Script Pane by clicking anywhere in the Script Pane, or by clicking Go to Script Pane in the View menu.
  2. Создайте сценарий.Create a script. Цветовая подсветка синтаксиса и заполнение нажатием клавиши TAB обеспечивают более широкие возможности для редактирования в интегрированной среде скриптов Windows PowerShell.Syntax coloring and tab completion provide a richer editing experience in Windows PowerShell ISE.
  3. Подробную информацию о заполнении нажатием клавиши TAB, помогающем при вводе кода, см. в статье How to Use Tab Completion in the Script Pane and Console Pane (Использование заполнения нажатием клавиши TAB в областях сценариев и консоли).See How to Use Tab Completion in the Script Pane and Console Pane for details about using the tab completion feature to help in typing.

Поиск текста в области сценариевTo find text in the Script Pane

  1. Чтобы найти текст в любой части скрипта, нажмите клавиши CTRL+F или выберите Find in Script (Найти в сценарии) в меню Edit (Правка). To find text anywhere, press CTRL+F or, on the Edit menu, click Find in Script .
  2. Чтобы найти текст после курсора, нажмите клавишу F3 или выберите Найти следующее в сценарии в меню Правка .To find text after the cursor, press F3 or, on the Edit menu, click Find Next in Script .
  3. Чтобы найти текст до курсора, нажмите клавиши SHIFT+F3 или выберите Find Previous in Script (Найти предыдущее в сценарии) в меню Edit (Правка).To find text before the cursor, press SHIFT+F3 or, on the Edit menu, click Find Previous in Script .

Поиск и замена текста в области сценариевTo find and replace text in the Script Pane

Нажмите клавиши CRTL+H или в меню Edit (Правка) выберите Replace in Script (Заменить в сценарии). Press CTRL+H or, on the Edit menu, click Replace in Script . Введите текст, который нужно найти, и замещающий текст, затем нажмите клавишу ВВОД.Enter the text you want to find and the replacement text, then press ENTER.

Переход к определенной строке текста в области сценариевTo go to a particular line of text in the Script Pane

  1. В области сценариев нажмите клавиши CTRL+G или выберите Go to Line (Перейти к строке) в меню Edit (Правка).In the Script Pane, press CTRL+G or, on the Edit menu, click Go to Line .

  2. Введите номер строки.Enter a line number.

Копирование текста в области сценариевTo copy text in the Script Pane

  1. В области сценариев выделите текст, который требуется скопировать.In the Script Pane, select the text that you want to copy.

  2. Нажмите клавиши CTRL+C, щелкните значок Copy (Копировать) на панели инструментов или выберите Copy (Копировать) в меню Edit (Правка).Press CTRL+C or, on the toolbar, click the Copy icon, or on the Edit menu, click Copy .

Вырезание текста в области сценариевTo cut text in the Script Pane

  1. В области сценариев выделите текст, который требуется вырезать.In the Script Pane, select the text that you want to cut.
  2. Нажмите клавиши CTRL+X, щелкните значок Cut (Вырезать) на панели инструментов или выберите Cut (Вырезать) в меню Edit (Правка).Press CTRL+X or, on the toolbar, click the Cut icon, or on the Edit menu, click Cut .

Вставка текста в области сценариевTo paste text into the Script Pane

Нажмите клавиши CTRL+V, щелкните значок Paste (Вставить) на панели инструментов или выберите Paste (Вставить) в меню Edit (Правка). Press CTRL+V or, on the toolbar, click the Paste icon, or on the Edit menu, click Paste .

Отмена действия в области сценариевTo undo an action in the Script Pane

Нажмите клавиши CTRL+Z, щелкните значок Undo на панели инструментов или выберите Отменить в меню Правка .Press CTRL+Z or, on the toolbar, click the Undo icon, or on the Edit menu, click Undo .

Повторное выполнение действия в области сценариевTo redo an action in the Script Pane

Нажмите клавиши CTRL+Y, щелкните значок Повторить на панели инструментов или выберите Повторить в меню Правка .Press CTRL+Y or, on the toolbar, click the Redo icon, or on the Edit menu, click Redo .

Сохранение сценарияHow to save a script

Звездочка рядом с именем скрипта обозначает, что файл не был сохранен после изменения.An asterisk appears next to the script name to mark a file that hasn’t been saved since it was changed. После сохранения звездочка исчезает.The asterisk disappears when the file is saved.

Сохранение сценарияTo save a script

Нажмите клавиши CTRL+S, щелкните значок Сохранить на панели инструментов или выберите Сохранить в меню Файл .Press CTRL+S or, on the toolbar, click the Save icon, or on the File menu, click Save .

Сохранение сценария с определенным именемTo save and name a script

  1. В меню Файл выберите команду Сохранить как .On the File menu, click Save As . Появится диалоговое окно Сохранить как . The Save As dialog box will appear.
  2. В поле Имя файла введите имя файла.In the File name box, enter a name for the file.
  3. В поле Тип файла выберите тип файла.In the Save as type box, select a file type. Например, в поле Тип сохраняемого файла выберите «Скрипты PowerShell (*.ps1)».For example, in the Save as type box, select ‘PowerShell Scripts (*.ps1)’.
  4. Выберите команду Сохранить .Click Save .

Сохранение сценария в кодировке ASCIITo save a script in ASCII encoding

По умолчанию интегрированная среда сценариев Windows PowerShell сохраняет новые файлы сценариев (.ps1), файлы данных сценариев (.psd1) и файлы модулей сценариев (.psm1) в кодировке Юникод (BigEndianUnicode).By default, Windows PowerShell ISE saves new script files (. ps1), script data files (.psd1), and script module files (.psm1) as Unicode (BigEndianUnicode) by default. Чтобы сохранить сценарий в другой кодировке, например ASCII (ANSI), используйте методы Save или SaveAs объекта $psISE.CurrentFile.To save a script in another encoding, such as ASCII (ANSI), use the Save or SaveAs methods on the $psISE.CurrentFile object.

Следующая команда сохраняет новый сценарий в кодировке ASCII и с именем MyScript.ps1:The following command saves a new script as MyScript.ps1 with ASCII encoding.

$psISE.CurrentFile.SaveAs("MyScript.ps1", [System.Text.Encoding]::ASCII)

Следующая команда заменяет текущий файл сценария на файл с таким же именем, но в кодировке ASCII:The following command replaces the current script file with a file with the same name, but with ASCII encoding.

$psISE.CurrentFile.Save([System.Text.Encoding]::ASCII)

Следующая команда возвращает кодировку текущего файла:The following command gets the encoding of the current file.

$psISE.CurrentFile.encoding

Интегрированная среда скриптов Windows PowerShell поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и Default.Windows PowerShell ISE supports the following encoding options: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8, and Default. Значение параметра Default зависит от системы.The value of the Default option varies with the system.

Интегрированная среда скриптов Windows PowerShell не изменяет кодировку файлов скриптов при использовании команд «Сохранить» или «Сохранить как».Windows PowerShell ISE doesn’t change the encoding of script files when you use the Save or Save As commands.

См. также:See Also

Создание и выполнение скриптов

Для создания и выполнения скрипта в области скриптов выполните
описанные действия.

В области скриптов можно открывать и редактировать тип файла. В
данный момент нас интересуют следующие типы файлов Windows
PowerShell: файлы скриптов (PS1), файлы данных скриптов (PSD1) и
файлы модулей скриптов (PSM1). Эти типы файлов имеют цветовую
подсветку синтаксиса в редакторе области скриптов. Другие
стандартные файлы, которые можно открыть в области скриптов, — это
файлы конфигурации (PS1XML), файлы XML и текстовые файлы.



Примечание.

Политика выполнения Windows PowerShell определяет, можно ли
выполнять скрипты, загружать профили Windows PowerShell и файлы
конфигурации. Политика выполнения по умолчанию, «Restricted»,
запрещает выполнение скриптов и предотвращает загрузку профилей.
Чтобы изменить эту политику выполнения и разрешить загрузку и
использование профилей, изучите разделы about_Signing и
Set-ExecutionPolicy

Нажмите кнопку Создать на панели инструментов
или откройте меню Файл и выберите пункт Создать.
Созданный файл появится в новой вкладке. По умолчанию создается
файл типа скрипт (PS1), но его можно сохранить с новым именем и
расширением. На одной вкладке PowerShell может быть создано
несколько файлов скриптов.

Нажмите кнопку Открыть… на панели инструментов
или откройте меню Файл и выберите пункт Открыть. В
диалоговом окне Открыть выберите файл, который требуется
открыть. Открытый файл появится в новой вкладке.

На вкладке файла наведите курсор на имя файла. Появится
всплывающая подсказка с полным путем к файлу скрипта.

Нажмите кнопку Выполнить скрипт на панели
инструментов или откройте меню Файл и выберите
Выполнить.

  1. В области скриптов выделите часть скрипта.

  2. В меню Файл выберите Выполнить выделенный
    фрагмент
    или на панели инструментов нажмите кнопку Выполнить
    выделенный фрагмент
    .

Нажмите на панели инструментов кнопку Остановить
выполнение
, нажмите клавиши CTRL+BREAK или в меню Файл
выберите пункт Остановить выполнение. Нажатие клавиш CTRL+C
также сработает, если нет выделенного текста, в противном случае
функция копирования сработает для выделенного текста.

Запуск PowerShell скрипта как службы Windows

Из любого скрипта PowerShell можно сделать службу Windows, которая работает в фоновом режиме и запускается автоматически при загрузке сервера. Вы можете создать службу Windows с помощью утилит srvany.exe и instsrv.exe (из состава Windows Server Resource 2003 Kit), позволяющих запустить процесс powershell.exe с параметром в виде пути к ps1 файлу скрипта. Основной недостаток такого способа создания службы — srvany.exe не контролирует выполнение приложения (скрипта PowerShell в нашем случае) и, если приложение падает (зависает), то служба это не видит и продолжает работать. В этой статье для создания службы Windows из файла со скриптом PowerShell мы будем использовать утилиту NSSM (Non-Sucking Service Manager – оставим без перевода…:)), которая лишена этих недостатков.

Вы можете скачать и установить NSSM вручную или через Chocolately. Сначала нужно разрешить запуск PS1 скриптов в сесиии и установить сам Choco:

Set-ExecutionPolicy Bypass -Scope Process -Force; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Затем установим пакет NSSM:

choco install nssm

В этом примере мы будем в реальном времени отслеживать изменения определенной группы AD (скрипт из этой статьи) и при изменении оповещать администратора безопасности всплывающим уведомлением и письмом.

Итак, у нас имеется код, который нужно сохранить в PS1 файл. Добавим бесконечный цикл, который раз в минуту выполняет проверку:

while($true) {
#Ваш PS код
Start-Sleep –Seconds 60
}

Конечно, для реализации подобного сценария можно создать и задание в планировщике (Task Scheduler), но если вам нужно реагировать на любые изменения в реальном времени, метод с отдельной службой гораздо правильнее.

Создать службу из скрипта PowerShell при помощи NSSM можно прямо из PowerShell :):

$NSSMPath = (Get-Command "C:\tools\nssm\win64\nssm.exe").Source
$NewServiceName = “CheckADGroupSrv”
$PoShPath= (Get-Command powershell).Source
$PoShScriptPath = “C:\tools\CheckADGroup\checkad.ps1”
$args = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $PoShScriptPath
& $NSSMPath install $NewServiceName $PoShPath $args
& $NSSMPath status $NewServiceName

Запустим новую службу:

Start-Service $NewServiceName

Проверим статус службы с помощью PowerShell:

Get-Service $NewServiceName

Итак, вы создали и запустили новую службу Windows. Проверим, что она появилась в консоли управления службами services.msc

Служба CheckADGroupSrv действительно появилась, она настроена на автоматический запус и в данный момент запущена (Running). Как вы видите, ваш PowerShell скрипт запущен внутри процесса nssm. exe.

Обратите внимание, что служба запущена из-под учетной записи System. Если вы используете в своих PS скриптах другие модули (в моем случае для получения состава доменной группы безопасности используется командлет Get-ADGroupMember из модуля Active Directory для Windows PowerShell), этот аккаунт должен иметь доступ к файлам модуля и права на подключение к AD (в моем случае). Вы так же можете запустить эту службы под другой учётной записью (или аккаунтом gMSA) и предоставить пользователям права на остановку/перезапуск службы, если у них нет прав локального администратора.

Чтобы служба могла отображать уведомления в сеанс пользователя (взаимодействовать с рабочим столом) нужно на вкладке “Вход в систему” (Log on) включить опцию “Разрешить взаимодействие с рабочим столом” (Allow service to interact with desktop).

Чтобы это работало в Windows 10 / Windows Server 2012 R2/ 2016 нужно изменить значение DWORD параметра реестра NoInteractiveServices в ветке HKLM\System\CurrentControlSet\Control\Windows на 0 и включить службу обозревателя интерактивных служб (Interactive Services Detection Service):

Start-Service -Name ui0detect

Однако в Windows 10 1803 службу Interactive Services Detection Service полностью убрали из системы, и вы более не можете переключиться в нулевую сессию (Session 0), так что вы просто не увидите окна, которые выводятся из-под аккаунта System.

Вы можете изменить описание службы командой:

& $NSSMPath set $NewServiceName description “Мониторинг изменений группы AD”

Чтобы удалить созданную службу можете воспользоваться командой sc delete или

nssm remove CheckADGroupSrv

Ярлык для запуска скрипта PowerShell

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

Если не знали, то знайте, что PowerShell запускается с параметрами. И параметры запуска ещё больше расширяют возможности практического использования PowerShell. Список доступных параметров и подробное описание каждого представлены в справке:

powershell.exe /?

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

В обоих примерах скрипт будет выполнять очистку временных файлов в Microsoft Windows. Для его выполнения требуются права Администратора.

Ярлык для запуска однострокового скрипта PowerShell

В диалоге мастера создания нового ярлыка в поле для указания пути к объекту, вставьте следующую команду и сохраните ярлык, задав ему имя.

powershell.exe -Command "& {Remove-Item @('C:\Windows\Temp\*', 'C:\Windows\Prefetch\*', 'C:\Documents and Settings\*\Local Settings\temp\*', 'C:\Users\*\Appdata\Local\Temp\*') -Force -Recurse}"

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

Ярлык для запуска скрипта PowerShell из файла

Предположим, что следующий код скрипта PowerShell сохранён в файле %HOMEDRIVE%%HOMEPATH%”\Documents\WindowsPowerShell\Scripts\Remove-TempFiles.ps1:

Set-Location 'C:\Windows\Temp'
Remove-Item * -Recurse -Force
Set-Location 'C:\Windows\Prefetch'
Remove-Item * -Recurse -Force
Set-Location 'C:\Documents and Settings'
Remove-Item '.\*\Local Settings\temp\*' -Recurse -Force
Set-Location 'C:\Users'
Remove-Item '.\*\Appdata\Local\Temp\*' -Recurse -Force

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

powershell.exe -ExecutionPolicy Bypass -File %HOMEDRIVE%%HOMEPATH%"\Documents\WindowsPowerShell\Scripts\Remove-TempFiles.ps1"

Обратите внимание на значение параметра ExecutionPolicy равное Bypass, которое разрешает выполнение любых скриптов, при этом никакие предупреждения и запросы не выводятся. Используйте этот параметр с осторожностью, задавая политику выполнения скриптов PowerShell согласно требуемому уровню безопасности.

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

Запуск скрипта PowerShell — Get-PowerShell

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

Для тех ситуаций, когда необходимо все же скрипт запустить выполните эти действия:

  • Запустите сеанс PowerShell. Возможно с правами администратора
  • Чтобы временно отключить защиту наберите эту команду:

Set-ExecutionPolicy Unrestricted -Scope Process



Set-ExecutionPolicy Unrestricted -Scope Process

  • Напишите имя скрипта и полный путь к нему. Используйте клавишу Tab, чтобы быстрее ввести путь. Например:

C:\Users\Administrator\test.ps1



C:\Users\Administrator\test.ps1

Почему необходимо выполнить эти команды?

Во-первых, PowerShell никогда не ищет исполняемые файлы и скрипты в текущем каталоге. Поэтому запуск скрипта PowerShell необходимо производить указывая полный или относительный путь к файлу. Например, если файл расположен в каталоге C:\Users\Administrator\, то его можно выполнить следующим образом:

PS C:\Users\Administrator> .\test.ps1
PS C:\Users\powershell> C:\Users\Administrator\test.ps1



PS C:\Users\Administrator> .\test.ps1

PS C:\Users\powershell> C:\Users\Administrator\test.ps1

Во-вторых, к счастью, по умолчанию запуск всех скриптов запрещен (единственное пока исключение это Windows Server 2012 R2). Поэтому при попытке запуска скрипта PowerShell вы можете увидеть следующие сообщение: Невозможно загрузить файл C:\Users\Administrator\test.ps1, так как выполнение сценариев отключено в этой системе или оно же в английском варианте: File C:\Users\Administrator\test.ps1 cannot be loaded because running scripts is disabled on this system.

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

Set-ExecutionPolicy RemoteSigned



Set-ExecutionPolicy RemoteSigned

Если вдруг вы обычный пользователь, тогда можно посоветовать данную команду:

Set-ExecutionPolicy RemoteSigned -Scope currentuser



Set-ExecutionPolicy RemoteSigned -Scope currentuser

После выполнения данной команды большинство скриптов будут запускаться, однако если вы скачали их из интернета то может понадобится или скопировать текст скрипта в новый ps1 файл или же убрать галку в свойствах файла:

И так, чтобы запуск скрипта PowerShell был возможен необходимо один раз запустить Set-ExecutionPolicy RemoteSigned и затем выполнять сам файл указывая относительный или полный путь к файлу.

Преобразование скрипта ps1 в exe

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали, как проводить диагностику неработающего интернет соединения, теперь каждый из вас знает этот алгоритм. Сегодня я вас хочу научить конвертировать скрипты PowerShell в формате PS1 в исполняемый файл EXE, я расскажу в каких сценариях, это полезно и применимо. Уверен, что данная публикация окажется весьма полезной.

Для чего конвертировать формат PS1 в EXE

Когда вы начинаете создавать различные сценарии на PowerShell, то при последующем их выполнении вы столкнетесь в подавляющем количестве случаев с ситуацией, что у вас не подписанный сценарий и он не может выполнятся в текущем режиме безопасности ExecutionPolicy, в таких случаях мы меняли режим работы ExecutionPolicy на remotesigned. Хорошо, что вы как администратор можете для себя это поправить, но вот делать, это для всех не самое лучшее и безопасное решение.

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

Методы конвертирования PS1 to EXE

Существует огромное количество методов по преобразованию скриптов powerShell в формат исполняемого файла EXE, они делятся на два типа:

  • Онлайн преобразователь
  • Это утилиты или скрипты, работающие локальной

PS1 to EXE через F2KO software

F2KO software — это бесплатная утилита, заточенная для этой задачи.

Скачать F2KO software — https://zn.amorgan.xyz/17SWVnHoujG92yYGSZvCzPgZEpGVfRF8wi или у меня с сайта

Распаковываете архив Ps1_To_Exe. Утилита имеет как портативную версию не требующую установки, так и обычную. Отрыв утилиту, первым делом нам нужно либо скопировать код из скрипта PS1 или же открыть его, для этого нажимаем кнопку «Open«. В проводнике Windows найдите ваш ps1 файл и нажмите «Открыть«.

Для красоты я вам советую найти для вашего EXE файла красивую иконку в формате ICO и подсуньте ее через пункт «Icon«.

Когда все готово, то нажимаем кнопку «Convert» и запускаем наше конвертирование скрипт PowerShell. Сам процесс занимает пару секунд.

Указываем путь сохранения нашего EXE файла. Снизу вы увидите события по выполнению вашей операции.

PS1 to EXE через PowerGUI

PowerGUI — это так же бесплатный аналог редактора PowerShell ISE, но с рядом дополнительных функций. Сам проект появился еще во времена Windows Server 2008 R2. Я как-нибудь соберусь написать статью про данный скриптовый редактор. Чтобы с помощью PowerGUI конвертировать сценарий PowerShell в EXE, вам необходимо выбрать меню «Tools — Compile Script» или можете просто нажать Ctrl+F9.

В окне «Compile Script» укажите куда вы будите сохранять ваш EXE файл, через пункт «Icon» вы можете интегрировать нужную вам иконку.

Когда все готово, то нажимаем «Ok«, обратите внимание, что есть возможно поставить пароль.

Подтверждаем наше преобразование. Как видим у нас из скрипта PowerShell появился симпатичный, исполняемый файл EXE. PowerGUI отлично справился.

Если вы при преобразовании ставили пункт «Protect script source code with password», то при попытке запустить полученный EXE файл у вас выскочит форма ввода пароля, и пока вы не введете правильное значение, ваш файл не будет запущен. Таким образом можно легко ограничить круг лиц, кто может его использовать.

Конвертирование PowerShell скрипта в EXE Online

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

Первый сайт https://ps2exe.azurewebsites.net/

В поле «PowerShell Code» копируем ваш код скрипта, задаем имя файла на выходе и нажимаем кнопку «Create EXE«. После чего указываете куда сохранить полученный файл.

Второй ресурс https://zn.amorgan.xyz/17SWVnHoujG92yYGSZvCzPgZEpGVfRF8wi

Нажимаем кнопку «Выберите файл» и в проводнике Windows Находим наш скрипт.

Далее вы можете задать настройки:

  • Тип архитектуры x86 или x64
  • Будет запускаться в виде консольного или графического режима
  • Будет ли добавлен файл манифест
  • Задать пароль на запуск

После всех манипуляция, для преобразования нашего сценария PowerShell мы нажимаем кнопку «Convert«

Платные преобразователи PS1 в EXE

Так же существуют платные скриптовые редакторы по конским ценам, PowerShell Studio и ISE Steroids 2.0 Enterprise. По своей сути они напоминают бесплатные PowerGUI и PowerShell ISE. Я не вижу смысла в покупке PowerShell Studio и ISE Steroids 2.0 Enterpris ради функции преобразования. Оба продукта вы можете попробовать в тестовом периоде, чтобы сделать свое представление о них. На этом у меня все. Надеюсь, что вы сами сможете придумать себе сценарии, когда вам будет полезно преобразовать ваш скрипт PS1 в EXE файл. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Генерация скриптов для создания и удаления объектов SQL Server и с помощью Powershell

В свой предыдущей статье я показал, как можно использовать мастер SQL Server Management Studio для генерации скриптов для различных объектов SQL Server. Мастер обладает большим набором возможностей, но также и рядом недостатков. Например, мы видели, что нельзя легко сгенерировать скрипты для всех объектов из определенной схемы, кроме как вручную указать все эти объекты. В этой статье мы рассмотрим другой подход к генерации скриптов – программный. Для этого мы будем использовать Powershell, мощное и гибкое средство для управления любыми Windows машинами или сервисами, в том числе и SQL Server.

Самый простой способ – запустить Powershell прямо из SSMS.

У вас откроется консоль Powershell, в которой уже будет загружен модуль SQLPS и открыт путь до нашей базы данных. Здесь можно просматривать и работать с объектами также, как и с файлами и папками. Например, с помощью следующего набора команд мы перейдем к таблицам в нашей базе данных, получим список всех таблиц в переменную и для первой таблицы в списке сгенерируем скрипт.

# Переходим к списку таблиц
cd Tables
 
# Считываем все таблицы в массив
$tables = Get-ChildItem
 
# Выводим информацию о первом элементе
$tables[1]
 
# Для первой таблицы генерируем скрипт
$tables[1].Script()

# Переходим к списку таблиц
cd Tables

# Считываем все таблицы в массив
$tables = Get-ChildItem

# Выводим информацию о первом элементе
$tables[1]

# Для первой таблицы генерируем скрипт
$tables[1].Script()

У вас должно получиться что-то подобное, как на скриншоте снизу.

Но, если мы хотим, например, сгенерировать не скрипт создания, а скрипт удаления указанной таблицы. Для этого потребуется создать объект класса Microsoft. SqlServer.Management.Smo.ScriptingOptions, указать у него определенные свойства (а их у объекта большое множество) и снова вызвать метод Script у таблицы, в который в качестве параметра передать объект со свойствами.

# Создаем новый объект класса Microsoft.SqlServer.Management.Smo.ScriptingOptions
$script_options = New-Object ('Microsoft.SqlServer.Management.Smo.ScriptingOptions')
 
# У этого объекта выставляем свойство ScriptDrops в значение true
$script_options.ScriptDrops = $true
 
# Снова запускаем метод Script с указанными опциями
$tables[1].Script($script_options)

# Создаем новый объект класса Microsoft.SqlServer.Management.Smo.ScriptingOptions
$script_options = New-Object (‘Microsoft.SqlServer.Management.Smo.ScriptingOptions’)

# У этого объекта выставляем свойство ScriptDrops в значение true
$script_options.ScriptDrops = $true

# Снова запускаем метод Script с указанными опциями
$tables[1].Script($script_options)

Мы даже можем указать имя файла и сохранить сгенерированный скрипт в файле.

# Указываем файл, куда будет сохранен скрипт
$file_name = "C:\Temp\MyScript.sql"
 
# Перенаправляем вывод с консоли в указанный файл
$tables[1].Script($script_options) > $file_name

# Указываем файл, куда будет сохранен скрипт
$file_name = «C:\Temp\MyScript.sql»

# Перенаправляем вывод с консоли в указанный файл
$tables[1].Script($script_options) > $file_name

Или используя цикл, обойти все объекты по определенному условию и сохранить скрипты в нужном месте.

# Для всех таблиц, имя которых начинается на Pro, сгенерировать скрипты с опциями, указанными в $script_oprions и выложить скрипт для каждого для каждого отдельного объекта в папку C:\Temp в формате <Имя схемы>.<Имя таблицы>.sql
foreach ($t in $tables | Where-Object { $_.Name.StartsWith("Pro") }) { $t.Script($script_options) > "C:\Temp\$($t.Schema).$($t.Name).sql" }

# Для всех таблиц, имя которых начинается на Pro, сгенерировать скрипты с опциями, указанными в $script_oprions и выложить скрипт для каждого для каждого отдельного объекта в папку C:\Temp в формате <Имя схемы>. <Имя таблицы>.sql
foreach ($t in $tables | Where-Object { $_.Name.StartsWith(«Pro») }) { $t.Script($script_options) > «C:\Temp\$($t.Schema).$($t.Name).sql» }

Как мы видим, набор возможностей практически не ограничен за одним исключением. Набивать эти команды в консоли крайне неудобно. Гораздо удобнее написать отдельный скрипт и вызывать его по мере необходимости. Хочу привести пример отдельного скрипта на Powershell для генерации скриптов создания всех таблиц в базе с ограничениями, внешними ключами и т.п. в один большой скрипт с разделителями.

# Загружаем модуль для работы с SMO объектами.
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
 
# Объявляем переменные и указываем имя сервера, имя базы данных и путь до файла, куда будет сохранен скрипт создания всех таблиц.
$srv_name = "(local)"
$db_name = "AdventureWorks2012"
$file_name = "C:\Temp\CreateAllTables.sql"
 
# Объявляем объект класса Microsoft.SqlServer. Management.Smo.Server.
$srv = New-Object('Microsoft.SqlServer.Management.Smo.Server') $srv_name
 
# Получаем объект нужной нам базы данных.
$db = $srv.Databases[$db_name]
 
# Создаем объект класса Microsoft.SqlServer.Management.Smo.Scripter, который будет выполнять всю работу по созданию скриптов.
$scripter = New-Object('Microsoft.SqlServer.Management.Smo.Scripter') $srv
 
# Указываем, что в скрипт нужно включать все DRI объекты (Declarative Referential Integrity: ограничения, внешние ключи и т.п.).
$scripter.Options.DriAll = $true
# Включать в скрипт создание индексов.
$scripter.Options.Indexes = $true
# Включать в скрипт добавление расширенных свойств.
$scripter.Options.ExtendedProperties = $true
 
# Указывать в скрипте разделитель GO между командами создания объектов.
$scripter.Options.ScriptBatchTerminator = $true
$scripter.Options.NoCommandTerminator = $false
 
# Указываем, что сохранять скрипт необходимо в файл.
$scripter.Options.FileName = $file_name
$scripter.Options.ToFileOnly = $true
$scripter. Options.AppendToFile=$true
 
# Для всех таблиц, имя которых начинается на Pro, сгенерировать скрипты и добавить их в указанный файл.
foreach ( $t in $db.Tables | Where-Object { $_.Name.StartsWith("Pro") } ) {
    $scripter.Script($t)
}

# Загружаем модуль для работы с SMO объектами.
[System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.SqlServer.SMO’) | out-null

# Объявляем переменные и указываем имя сервера, имя базы данных и путь до файла, куда будет сохранен скрипт создания всех таблиц.
$srv_name = «(local)»
$db_name = «AdventureWorks2012″
$file_name = «C:\Temp\CreateAllTables.sql»

# Объявляем объект класса Microsoft.SqlServer.Management.Smo.Server.
$srv = New-Object(‘Microsoft.SqlServer.Management.Smo.Server’) $srv_name

# Получаем объект нужной нам базы данных.
$db = $srv.Databases[$db_name]

# Создаем объект класса Microsoft.SqlServer.Management.Smo.Scripter, который будет выполнять всю работу по созданию скриптов.
$scripter = New-Object(‘Microsoft.SqlServer.Management.Smo.Scripter’) $srv

# Указываем, что в скрипт нужно включать все DRI объекты (Declarative Referential Integrity: ограничения, внешние ключи и т.п.).
$scripter.Options.DriAll = $true
# Включать в скрипт создание индексов.
$scripter.Options.Indexes = $true
# Включать в скрипт добавление расширенных свойств.
$scripter.Options.ExtendedProperties = $true

# Указывать в скрипте разделитель GO между командами создания объектов.
$scripter.Options.ScriptBatchTerminator = $true
$scripter.Options.NoCommandTerminator = $false

# Указываем, что сохранять скрипт необходимо в файл.
$scripter.Options.FileName = $file_name
$scripter.Options.ToFileOnly = $true
$scripter.Options.AppendToFile=$true

# Для всех таблиц, имя которых начинается на Pro, сгенерировать скрипты и добавить их в указанный файл.
foreach ( $t in $db.Tables | Where-Object { $_.Name. StartsWith(«Pro») } ) {
$scripter.Script($t)
}

На этом все. Я постарался привести максимально полезные примеры, от которых вы сможете отталкиваться при написании своих скриптов на Powershell.

Как писать и запускать сценарии в Windows PowerShell ISE — PowerShell

  • 5 минут на чтение

В этой статье

В этой статье описывается, как создавать, редактировать, запускать и сохранять сценарии на панели сценариев.

Как создавать и запускать скрипты

Вы можете открывать и редактировать файлы Windows PowerShell в области сценариев.Конкретные интересующие типы файлов
в Windows PowerShell есть файлы сценариев ( .ps1 ), файлы данных сценариев ( .psd1 ) и модуль сценария.
файлы ( .psm1 ). Эти типы файлов имеют синтаксис, окрашенный в редакторе области сценариев. Другой общий файл
типы, которые вы можете открыть в области сценариев, — это файлы конфигурации ( .ps1xml ), файлы XML и текст
файлы.

Примечание

Политика выполнения Windows PowerShell определяет, можете ли вы запускать сценарии и загружать Windows.
Профили PowerShell и файлы конфигурации.Политика выполнения по умолчанию, Restricted, предотвращает
все сценарии не запускаются, и предотвращает загрузку профилей. Чтобы изменить политику выполнения, чтобы разрешить
профили для загрузки и использования, см.
Set-ExecutionPolicy и
about_Signing.

Для создания нового файла сценария

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

Открыть существующий сценарий

На панели инструментов щелкните Открыть или в меню Файл щелкните Открыть . В диалоговом окне Открыть
выберите файл, который хотите открыть. Открытый файл появится в новой вкладке.

Чтобы закрыть вкладку скрипта

Щелкните значок Close ( X ) на вкладке файла, который вы хотите закрыть, или выберите меню File и
нажмите Закрыть .

Если файл был изменен с момента последнего сохранения, вам будет предложено сохранить или отменить его.

Для отображения пути к файлу

На вкладке файла укажите имя файла. Полный путь к файлу сценария отображается в
всплывающая подсказка.

Для запуска скрипта

На панели инструментов щелкните Выполнить сценарий или в меню Файл щелкните Выполнить .

Для запуска части сценария

  1. На панели сценариев выберите часть сценария.
  2. В меню File нажмите Run Selection или на панели инструментов нажмите Run Selection .

Остановить запущенный скрипт

Есть несколько способов остановить запущенный скрипт.

  • Нажмите Остановить работу на панели инструментов
  • Нажмите CTRL + BREAK
  • Выберите меню File и нажмите Stop Operation .

Нажатие CTRL + C также работает, если в данный момент не выделен какой-либо текст, в котором
case CTRL + C сопоставляется с функцией копирования для выделенного текста.

Как писать и редактировать текст в области скриптов

Вы можете копировать, вырезать, вставлять, находить и заменять текст в области скриптов. Вы также можете отменить и повторить
последнее действие, которое вы только что выполнили. Сочетания клавиш для этих действий такие же.
используется для всех приложений Windows.

Для ввода текста в области сценария

  1. Переместите курсор на панель сценариев, щелкнув в любом месте панели сценариев или нажав Перейти
    в область сценариев
    в меню Просмотр .
  2. Создайте сценарий. Подсветка синтаксиса и завершение табуляции расширяют возможности редактирования в
    Интегрированная среда сценариев Windows PowerShell.
  3. См. Раздел «Использование автозавершения по табуляции на панели сценариев и панели консоли»
    для получения дополнительных сведений об использовании функции завершения табуляции для помощи при наборе текста.

Чтобы найти текст в области скриптов

  1. Чтобы найти текст где угодно, нажмите CTRL + F или в меню Edit щелкните Find
    в скрипте
    .
  2. Чтобы найти текст после курсора, нажмите F3 или в меню Edit щелкните Find Next in
    Скрипт
    .
  3. Чтобы найти текст перед курсором, нажмите SHIFT + F3 или в меню Edit ,
    щелкните Найти предыдущее в сценарии .

Для поиска и замены текста в области сценариев

Нажмите CTRL + H или в меню Edit нажмите Replace in Script . Введите
текст, который вы хотите найти, и текст для замены, затем нажмите ENTER .

Переход к определенной строке текста в области сценария

  1. На панели сценариев нажмите CTRL + G или в меню Изменить щелкните Перейти к
    Строка
    .

  2. Введите номер строки.

Для копирования текста в области скриптов

  1. На панели скриптов выберите текст, который вы хотите скопировать.

  2. Нажмите CTRL + C или на панели инструментов щелкните значок Копировать , или на
    В меню «Правка » выберите Копировать .

Чтобы вырезать текст в области сценария

  1. На панели сценария выберите текст, который нужно вырезать.
  2. Нажмите CTRL + X или на панели инструментов щелкните значок Cut или Edit
    в меню выберите Cut .

Чтобы вставить текст в область сценария

Нажмите CTRL + V или на панели инструментов щелкните значок Вставить или Изменить
в меню выберите Вставить .

Отмена действия в области сценариев

Нажмите CTRL + Z или на панели инструментов щелкните значок Отменить или нажмите Изменить
выберите в меню Отменить .

Чтобы повторить действие в области сценариев

Нажмите CTRL + Y или на панели инструментов щелкните значок Повторить или на панели Edit
в меню выберите Повторить .

Как сохранить скрипт

Звездочка появляется рядом с именем сценария, чтобы отметить файл, который не сохранялся с момента его сохранения.
изменилось. Звездочка исчезнет после сохранения файла.

Сохранить скрипт

Нажмите CTRL + S или на панели инструментов щелкните значок Сохранить или в файле
в меню выберите Сохранить .

Сохранить и назвать скрипт

  1. В меню Файл щелкните Сохранить как . Откроется диалоговое окно Сохранить как .
  2. В поле Имя файла введите имя файла.
  3. В поле Сохранить как тип выберите тип файла. Например, в поле Сохранить как введите ,
    выберите «Сценарии PowerShell ( * .ps1 )».
  4. Щелкните Сохранить .

Для сохранения скрипта в кодировке ASCII

По умолчанию Windows PowerShell ISE сохраняет новые файлы сценариев (.ps1 ), файлы данных сценария ( .psd1 ) и
файлы модуля скрипта ( .psm1 ) по умолчанию в формате Unicode (BigEndianUnicode). Чтобы сохранить сценарий в другом
кодировке, такой как ASCII (ANSI), используйте методы Save или SaveAs на
$ psISE.CurrentFile объект.

Следующая команда сохраняет новый сценарий как MyScript.ps1 с кодировкой ASCII.

  $ psISE.CurrentFile.SaveAs ("MyScript.ps1", [System.Text.Encoding] :: ASCII)
  

Следующая команда заменяет текущий файл сценария файлом с тем же именем, но с
Кодировка ASCII.

  $ psISE.CurrentFile.Save ([System.Text. Encoding] :: ASCII)
  

Следующая команда получает кодировку текущего файла.

  $ psISE.CurrentFile.encoding
  

Windows PowerShell ISE поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode,
UTF32, UTF7, UTF8 и по умолчанию. Значение параметра По умолчанию зависит от системы.

Windows PowerShell ISE не изменяет кодировку файлов сценариев при использовании команд Сохранить или
Сохранить как команды.

См. Также

Напишите и запустите свой первый сценарий Windows PowerShell

Системным администраторам нравятся сочетания клавиш и методы, которые экономят время. Я думаю, что это вдвойне усложняет управление множеством компьютеров.

Введите Windows PowerShell

Хотя существует множество отличных языков сценариев, он не намного лучше, чем Windows PowerShell. Если вы используете последнюю версию Microsoft Windows, возможно, у вас уже установлена ​​ее версия.

Как создать сценарий PowerShell?

PowerShell сохраняет скрипты в формате ps1. Для нашей демонстрации были созданы и файл, и папка.

  C: \ Scripts \ My First Script.ps1  

Пожалуйста, не стесняйтесь использовать свои собственные имена папок и файлов.

Сначала создайте новый файл ps1 и добавьте командлет Write-Host (cmdlet — это другое слово для команды)

  Write-Host «Hello, World!»  

Сохраните файл ps1 и вернитесь в окно PowerShell.Наиболее распространенный метод запуска сценария — его вызов в терминале PowerShell. (Вы также можете использовать PowerShell ISE или VS Code)

  & "C: \ Scripts \ My First Script.ps1"  

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

Чтобы предотвратить запуск вредоносных сценариев в вашей системе, PowerShell применяет политику выполнения. Вы можете использовать 4 политики выполнения:

Ограниченный Сценарии не запускаются.Период. (Настройка по умолчанию)
RemoteSigned Будут выполняться сценарии, созданные локально. Сценарии, созданные на другом компьютере, не будут запускаться, если они не подписаны доверенным издателем.
AllSigned Сценарии будут выполняться, только если они подписаны доверенным издателем (включая сценарии, созданные локально).
Без ограничений Все сценарии будут выполняться независимо от того, кто их создал и подписаны они или нет.

Чтобы использовать наш только что созданный скрипт, нам нужно будет изменить нашу политику выполнения, чтобы разрешить запуск нашего примера скрипта. Поскольку у нас нет цифровой подписи для нашего нового скрипта, наши параметры для настройки политики выполнения оставлены на «RemoteSigned» и «Unrestricted». Мы собираемся изменить его на RemoteSigned.

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

  Set-ExecutionPolicy RemoteSigned  

Командлет Set-ExecutionPolicy запросит убедитесь, что вы действительно хотите изменить политику выполнения.Идите вперед и выберите Y для Да, затем закройте и снова откройте окно PowerShell.

После перезапуска окна PowerShell попробуйте снова запустить сценарий .ps1

  & "C: \ Scripts \ My First Script.ps1"  

Он должен ответить: «Hello, World!» в окно:

Поздравляем, вы только что написали свой первый сценарий PowerShell!

Дальнейшие действия

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

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

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

Сценарий — это просто набор команд, сохраненных в текстовом файле (с использованием специального расширения .ps1 ), который PowerShell понимает и последовательно выполняет для выполнения различных действий.В этом посте мы опишем процесс создания и запуска файла сценария PowerShell в Windows 10.

PowerShell — это инструмент командной строки, разработанный Microsoft для запуска команд и сценариев для изменения настроек и автоматизации задач. В некотором смысле это похоже на командную строку. Однако PowerShell — это более функциональный интерфейс командной строки (CLI), который предлагает обширный набор инструментов, большую гибкость и контроль. Кроме того, в отличие от командной строки, PowerShell доступен в Windows, macOS и Linux.

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

Как создать файл сценария PowerShell

В Windows 10 вы можете создавать файлы сценариев PowerShell, используя практически любой текстовый редактор или консоль ISE (Integrated Scripting Environment). Однако предпочтительным вариантом для дальнейшего создания сценариев является использование редактора кода Visual Studio с расширением PowerShell.

Visual Studio Code — также известный как VS Code — это бесплатный и расширяемый кросс-платформенный редактор кода, который предоставляет среду для редактирования практически любого языка программирования. А добавляя расширение PowerShell, вы получаете полностью интерактивные возможности редактирования сценариев, даже с поддержкой IntelliSense (автозавершение кода).

Вот как создать файл сценария PowerShell в Windows 10 с помощью VS Code:

  • Перейдите на страницу загрузки Visual Studio.
  • Нажмите кнопку Windows , чтобы загрузить установщик.
  • Дважды щелкните загруженный файл, чтобы начать процесс установки VS Code.
  • Подтвердите условия соглашения.
  • Нажмите кнопку Далее .
  • Снова нажмите кнопку Далее .
  • Нажмите кнопку Далее еще раз.
  • При необходимости подтвердите дополнительные задачи.
  • Нажмите кнопку Далее .
  • Нажмите кнопку Установить .
  • Нажмите кнопку Готово .

После выполнения этих шагов вы можете приступить к установке расширения PowerShell. Вот как это сделать:

  • Открыть VS Код .
  • Щелкните вкладку Extensions на левой панели или нажмите комбинацию клавиш CTRL + SHIFT + X .
  • Найдите PowerShell и выберите лучший результат.
  • Нажмите кнопку Установить .

После выполнения шагов по установке вы можете приступить к написанию сценариев PowerShell с помощью Visual Studio Code.Вот как это сделать:

  • Открыть VS Код .
  • Щелкните меню File и выберите опцию New File .
  • Щелкните меню Файл и выберите опцию Сохранить как .
  • В поле Имя файла укажите имя файла с расширением .ps1 — например, TWC_script.ps1 .
  • Нажмите кнопку Сохранить .

Напишите новый или вставьте сценарий, который хотите запустить, например:

 Write-Host "Добро пожаловать в TheWindowsClub.ком! Ваш первый скрипт успешно выполнен "

Приведенный выше сценарий выведет на экран фразу ниже.

Добро пожаловать на TheWindowsClub.com! Ваш первый скрипт успешно выполнен

Нажмите кнопку Выполнить в правом верхнем углу (или нажмите клавишу F5), чтобы запустить сценарий.

  • Щелкните меню Файл .
  • Щелкните опцию Сохранить .

После того, как вы выполните эти шаги с помощью Visual Studio Code, сценарий будет готов к запуску, но по умолчанию он завершится ошибкой.Это связано с тем, что настройки PowerShell по умолчанию всегда блокируют выполнение любого скрипта. (Единственное исключение — запуск содержимого сценария в Visual Studio Code или PowerShell ISE.)

Как запустить файл сценария PowerShell в Windows 10

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

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

  1. Ограничено — Останавливает выполнение любого сценария.
  2. RemoteSigned — Разрешает создание сценариев на устройстве, но сценарии, созданные на другом компьютере, не будут выполняться, если они не содержат подпись надежного издателя.
  3. AllSigned — Все сценарии будут выполняться, но только если их подписал надежный издатель.
  4. Unrestricted — Выполняет любой скрипт без ограничений.

Вот как запустить файл сценария PowerShell в Windows 10:

  • Нажмите клавишу Windows + X , чтобы открыть меню опытного пользователя.
  • Нажмите A на клавиатуре, чтобы запустить PowerShell в режиме администратора / с повышенными правами.
  • В консоли PowerShell введите команду ниже и нажмите Enter.
 Set-ExecutionPolicy RemoteSigned 
  • Введите A и нажмите Enter (если применимо).

Затем введите команду ниже и нажмите Enter, чтобы запустить сценарий. Не забудьте заменить заполнитель «PATH \ TO \ SCRIPT» на местоположение вашего скрипта.

 & "C: \ PATH \ TO \ SCRIPT \ TWC_script.ps1 "

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

Вот и все, как создать и запустить файл сценария PowerShell в Windows 10!

Написание своего первого сценария PowerShell — Skylines Academy

* Если вы только присоединяетесь к нам, этот пост является частью серии из 12 частей, посвященных началу работы с PowerShell. Если вы хотите наверстать упущенное (или пропустить — скоро появятся новые сообщения), нажмите на соответствующий пост ниже.
Начало работы с PowerShell
Windows PowerShell, PowerShell Core и PowerShell: А?
Установка PowerShell и кода Visual Studio
Выполнение команд PowerShell и получение справки
Работа с конвейером PowerShell
Общие сведения о циклах в PowerShell

На протяжении всей этой серии статей вы были в консоли PowerShell. Вы вручную вводили команды, запускали их и смотрели, что получится. Это нормально, если вам нужно ввести быструю команду, чтобы сделать что-то простое, но консоль не справится с более сложными задачами.

PowerShell не зря называют языком сценариев — вы пишете на нем сценарии. Что за сценарий? В терминах PowerShell сценарий — это комбинация команд, которые работают вместе и запускаются одновременно.

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

Создание сценария

В предыдущем посте этой серии вы узнали, как установить Visual Studio Code.Пришло время начать его использовать!

Хотя технически вы можете написать сценарий с помощью блокнота, это не мудрое решение. Код Visual Studio и расширение PowerShell созданы для кода PowerShell. Он понимает синтаксис, предлагает советы, предложения, подсветку синтаксиса и многое другое. Если вы пишете сценарии PowerShell, вам следует использовать Visual Studio Code, так что приступим!

Все примеры в этой статье будут использовать Visual Studio Code v1.42.0 в Windows.

Откройте код Visual Studio. Вам будет представлена ​​страница Добро пожаловать, . Щелкните File , а затем New File , как показано ниже. Это откроет вам возможность начать писать.

10 основных концепций написания сценариев PowerShell

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

Сценарии

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

Примечание. Эта статья также доступна для загрузки в формате PDF.

1: файлы PS1

Сценарий PowerShell на самом деле не более чем простой текстовый файл. Файл содержит серию команд PowerShell, каждая из которых отображается в отдельной строке.Чтобы текстовый файл обрабатывался как сценарий PowerShell, его имя файла должно иметь расширение .PS1.

2: Разрешения на выполнение

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

 Get-ExecutionPolicy 

Можно использовать следующие политики выполнения:

  • Ограничено — скрипты не запускаются.
  • RemoteSigned — Сценарии, созданные локально, будут выполняться, но загруженные из Интернета — нет (если они не подписаны цифровой подписью доверенного издателя).
  • AllSigned — скрипты будут запускаться только в том случае, если они были подписаны надежным издателем.
  • Unrestricted — Скрипты будут выполняться независимо от того, откуда они пришли и подписаны ли они.

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

 Set-ExecutionPolicy <имя политики> 

3: Запуск сценария

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

Если вы хотите выполнить сценарий PowerShell, вам обычно нужно ввести полный путь вместе с именем файла. Например, чтобы запустить сценарий с именем SCRIPT.PS1, вы можете ввести:

 C: \ Scripts \ Script.ps1 

Большим исключением является то, что вы можете выполнить сценарий, просто набрав его имя, если папка, содержащая сценарий, находится на пути вашей системы. Также существует ярлык, который можно использовать, если вы уже находитесь в папке, содержащей сценарий.Вместо того, чтобы вводить полный путь к сценарию в такой ситуации, вы можете ввести. \ И имя сценария. Например, вы можете ввести:

. \ Script.ps1 

4: Трубопровод

Конвейерная обработка — это термин для передачи вывода одной команды другой команде. Это позволяет второй команде воздействовать на полученный ввод. Чтобы выполнить конвейерную обработку двух команд (или командлетов), просто разделите их вертикальной чертой (|).

Чтобы помочь вам понять, как работает конвейерная обработка, представьте, что вы хотите создать список процессов, запущенных на сервере, и отсортировать этот список по идентификатору процесса.Вы можете получить список процессов с помощью командлета Get-Process, но список не будет отсортирован. Однако, если вы передаете вывод командлета в команду Sort-Object ID, список будет отсортирован. Используемая строка команд выглядит так:

 Get-Process | Сортировка-Object ID 

5: переменные

Хотя вы можете использовать конвейерную обработку для передачи выходных данных одной команды другой команде, иногда конвейерная обработка сама по себе не может выполнить работу. Когда вы конвейерно выводите вывод команды в другую команду, этот вывод используется немедленно.Иногда вам может потребоваться сохранить вывод на некоторое время, чтобы вы могли использовать (или повторно использовать) его позже. Здесь в игру вступают переменные.

Легко представить переменную как репозиторий для хранения значения, но в PowerShell переменная может хранить полный вывод команды. Например, предположим, что вы хотите сохранить список процессов, запущенных на сервере, в виде переменной. Для этого вы можете использовать эту строку кода:

 $ a = Get-Process 

Здесь переменная называется $ a.Если вы хотите использовать переменную, просто назовите ее по имени. Например, при вводе $ a содержимое переменной выводится на экран.

Вы можете назначить переменную конечному результату нескольких команд, которые были конвейеризованы вместе. Просто заключите команды в круглые скобки. Например, чтобы отсортировать запущенные процессы по идентификатору процесса, а затем назначить вывод переменной, вы можете использовать эту команду:

 $ a = (Get-Process | ID объекта сортировки) 

6: символ @

Используя символ @, вы можете превратить содержимое списка в массив. Например, возьмите следующую строку кода, которая создает переменную с именем $ Procs, содержащую несколько строк текста (массив):

 $ procs = @ {name = "explorer", "svchost"} 

Вы также можете использовать символ @ при использовании переменной, чтобы гарантировать, что она обрабатывается как массив, а не одно значение. Например, в приведенной ниже строке кода будет запущен командлет Get-Process для переменной, которую я определил только что. При этом Windows отобразит все процессы, используемые проводником Windows и Svchost.Обратите внимание, что перед именем переменной используется символ @, а не знак доллара, который мы обычно видим используемым:

 Get-Process @procs 

7: Разделить

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

 "Это тест" -сплит "" 

Результат будет выглядеть так:

 Это 
 это 
 a 
 тест 

8: Присоединяйтесь к

Подобно тому, как split может разбить текстовую строку на несколько частей, оператор соединения может объединить несколько блоков текста в один. Например, эта строка создаст текстовую строку, состоящую из моего имени и фамилии:

 "Brien", "Posey" -join "" 

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

9: Точки останова

Выполнение вновь созданного сценария PowerShell может иметь непредвиденные последствия, если сценарий содержит ошибки. Один из способов защитить себя — это вставить точки останова в стратегические места вашего скрипта.Таким образом, вы можете убедиться, что сценарий работает, как задумано, прежде чем обрабатывать все.

Самый простой способ вставить точку останова — по номеру строки. Например, чтобы вставить точку останова в 10-ю строку скрипта, вы можете использовать такую ​​команду:

 New-PSBreakpoint -Script C: \ Scripts \ Script.ps1 -Line 10 

Вы также можете привязать точку останова к переменной. Поэтому, если вы хотите, чтобы ваш скрипт прерывался каждый раз, когда содержимое $ изменялось, вы можете использовать такую ​​команду:

 Новый-PSBreakpoint -Script C: \ scripts \ Script. ps1 -переменные a 

Обратите внимание, что я не включил знак доллара после имени переменной.

В PSBreakpoint можно использовать несколько глаголов, включая New, Get, Enable, Disable и Remove.

10: Шаг

При отладке сценария иногда может потребоваться запустить сценарий построчно. Для этого вы можете использовать командлет Step-Into. Это заставит скрипт останавливаться после каждой строки независимо от того, существует ли точка останова. Когда вы закончите, вы можете использовать командлет Step-Out, чтобы остановить Windows от пошагового выполнения сценария.Однако стоит отметить, что точки останова по-прежнему обрабатываются даже после использования командлета Step-Out.

Между прочим, если в вашем сценарии используются функции, вас может заинтересовать командлет Step-Over. Step-Over работает так же, как Step-Into, за исключением того, что если функция вызывается, Windows не выполняет ее. Вся функция будет работать без остановки.

Дополнительные ресурсы

Создание сценария PowerShell — Учебник по Windows 7

Windows 7 / Начало работы


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

Создание и запуск сценария PowerShell

  1. Запустите Windows PowerShell ISE.
  2. Щелкните в верхней панели (с надписью Untitled1.ps1), введите следующий текст и нажмите Enter:
    Get-EventLog -List
    Обратите внимание, что команда не выполняется, когда вы нажимаете Enter, а вместо этого запускает строку 2.
  3. Щелкните зеленую кнопку, чтобы запустить сценарий. Вы также можете нажать F5. Вы увидите результат
    отображается на средней панели.Если есть синтаксическая ошибка, вы увидите красную текстовую ошибку.
    вместо черного текста в качестве вывода.
    Если вы видите красное сообщение об ошибке, ищите следующие символы: <<<<. Они часто указывают к конкретной строке текста, вызывающей проблему.
  4. Щелкните значок Сохранить в меню (или нажмите Ctrl + S). Перейдите в папку с именем C: \
    Сценарии (при необходимости создайте) и измените Без названия на Логинфо, чтобы сохранить сценарий.
    как C: \ Scripts \ LogInfo.ps1.
  5. Переместите курсор в нижнюю часть экрана, введите C: \ Scripts \ LogInfo.ps1 и
    нажмите Ввод. Скрипт выполнится.
  6. Измените текущее местоположение файла сценария с помощью этой команды:
    Set-Location C: \ Scripts.
  7. Попробуйте запустить сценарий с помощью этой команды (это не удастся):
    LogInfo.ps1
    Несмотря на то, что сценарий находится в текущем пути, PowerShell требуется подсказка, чтобы найти его.
  8. Нажмите стрелку вверх и измените последнюю команду так, чтобы она выглядела так:
    . \ LogInfo.ps1
    Символы. \ Сообщают PowerShell, что сценарий находится по текущему пути.

Изменение сценария с помощью цикла ForEach

  1. Щелкните Файл → Создать, чтобы создать пустую область для работы с новым сценарием.
  2. Введите следующий текст и нажмите F5, чтобы выполнить его.
    Get-Service | select-object name, status
    Здесь перечислены все службы в системе по имени и их текущему состоянию (например, запущены
    или остановился).
  3. Вместо вывода этих данных на экран вы можете сохранить их в коллекции. Следующее
    команда сохранит результат в коллекции с именем $ colService.Заметить, что
    вам не нужно повторно вводить всю команду, вместо этого вы просто добавляете $ colService =
    в начало строки:

     $ colService = Get-service | выбрать объект
      имя, статус 
  4. Теперь добавьте цикл ForEach для просмотра коллекции. Цикл проверит каждую службу
    хранятся в коллекции, а затем используйте командлет Write-Host для отображения только
    сервисы со статусом «запущен».

     ForEach ($ item в $ colService) {
        Если ($ item.status -eq "работает")
        {write-host $ item.имя}
    }
     

Точно так же вы можете использовать тот же метод, чтобы перечислить все службы, которые останавливаются простым
изменение «работает» на «остановлено» в сценарии.

Хотя этот пример показывает, как цикл ForEach может использоваться для циклического перебора коллекции,
это не единственный способ получить список запущенных служб. Как и в большинстве скриптов, есть
более одного способа получить то, что вам нужно. Например, следующий однострочник также может
использоваться для получения списка запущенных служб:

Get-Service | Выберите имя, статус | где {$ _.status -eq "работает"}

Создание и запуск сценария PowerShell — Javatpoint

Создать сценарий PowerShell

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

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

Для создания сценария PowerShell используются следующие шаги:

1) Откройте Старт.

2) Найдите текстовый редактор, например «Блокнот», и щелкните приложение «Блокнот».

3) Откроется новое окно блокнота. Введите сценарий в текстовый файл, который вы хотите выполнить. Например:

Эхо «Привет, мир …..»

4) Щелкните меню « File » в строке меню.

5) Выберите опцию « сохранить как » из раскрывающегося списка.

6) Введите имя файла в поле и нажмите кнопку « сохранить ».Например: fs.ps1

7) Наконец, нажмите кнопку save .

Создание сценария с использованием интегрированной среды сценариев

Для создания сценария PowerShell с помощью инструмента ISE используются следующие шаги:

1) Откройте Старт.

2) Найдите Windows PowerShell ISE , щелкните правой кнопкой мыши « Windows PowerShell ISE » и выберите « Запуск от имени администратора » в раскрывающемся списке.

3) Щелкните Файл в строке меню.

4) Выберите опцию «Новый», чтобы создать новый пустой файл.

5) Напишите сценарий, который вы хотите выполнить. Например:

Эхо «Привет, мир …..»

6) Щелкните меню « File » в строке меню.

7) Выберите опцию « сохранить как » из раскрывающегося списка.

8) Введите имя сценария. Затем нажмите кнопку Сохранить .

Включить скрипты PowerShell

Когда мы запускаем PowerShell в компьютерной системе, политика выполнения по умолчанию не позволяет нам выполнять или запускать сценарии.

В PowerShell есть четыре различных типа политики выполнения:

  • Ограничено: В этой политике скрипт не выполняется.
  • RemoteSigned: В этой политике запускаются только те сценарии, которые загружаются из Интернета, и они должны быть подписаны доверенным издателем.
  • Неограниченно: Все сценарии Windows PowerShell запускаются.
  • AllSigned: Можно запускать только те сценарии, которые подписаны доверенным издателем.

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

Set-ExecutionPolicy Unrestricted

Запустить сценарий PowerShell

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

1) Введите Windows PowerShell в меню «Пуск» и откройте его, щелкнув результат.

2) Теперь выполните сценарий, введя полный путь к сценарию, например ( C: /desktop/fs.ps1 ), или, если он находится в текущем каталоге, введите имя файла с обратной косой чертой.


.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *