Скрипт powershell расширение файла
This article describes how to create, edit, run, and save scripts in the Script Pane.
Написание и редактирование текста в области сценариев
В области скриптов текст можно копировать, вырезать, вставлять, искать и заменять. Также можно отменить и повторить последнее выполненное действие. Для этого используются те же клавиши, как и во всех других приложениях Windows.
Написание справки для сценариев
Раздел справки для скрипта можно написать с помощью любого из двух следующих методов.
Comment-Based справки по сценариям
Создайте раздел справки, используя специальные ключевые слова в комментариях. Чтобы создать справку на основе комментариев для сценария, необходимо поместить комментарии в начало или в конец файла скрипта. Дополнительные сведения о справке на основе комментариев см. в разделе about_Comment_Based_Help.
XML-Based справки по сценариям
Создайте раздел справки на основе XML, например тип, который обычно создается для командлетов. При преобразовании разделов справки на несколько языков требуется справка на основе XML.
Чтобы связать скрипт с разделом справки на основе XML, используйте. Ключевое слово комментария справки Екстерналхелп. Дополнительные сведения о ключевом слове Екстерналхелп см. в разделе about_Comment_Based_Help. Дополнительные сведения о справке на основе XML см. в разделе как написать справку по командлетам.
To paste text into the Script Pane
Press CTRL + V or, on the toolbar, click the Paste icon, or on the Edit menu, click Paste.
Writing help for scripts
You can write a help topic for a script by using either of the two following methods:
Comment-Based Help for Scripts
Create a Help topic by using special keywords in the comments. To create comment-based Help for a script, the comments must be placed at the beginning or end of the script file. For more information about comment-based Help, see about_Comment_Based_Help.
XML-Based Help for Scripts
Create an XML-based Help topic, such as the type that is typically created for cmdlets. XML-based Help is required if you are translating Help topics into multiple languages.
To associate the script with the XML-based Help topic, use the .ExternalHelp Help comment keyword. For more information about the ExternalHelp keyword, see about_Comment_Based_Help. For more information about XML-based help, see How to Write Cmdlet Help.
To save a script
Press CTRL + S or, on the toolbar, click the Save icon, or on the File menu, click Save.
Другие функции сценариев
В PowerShell есть много полезных функций, которые можно использовать в скриптах.
$PSCommandPath — Содержит полный путь и имя выполняемого скрипта. Этот параметр допустим во всех скриптах. Эта автоматическая переменная появилась в PowerShell 3,0.
$PSScriptRoot — Содержит каталог, из которого выполняется скрипт. В PowerShell 2,0 эта переменная допустима только в модулях скриптов ( .psm1 ). Начиная с PowerShell 3,0, он действителен во всех скриптах.
$MyInvocation``$MyInvocation — Автоматическая переменная содержит сведения о текущем скрипте, включая сведения о том, как он был запущен или вызван. Эту переменную и ее свойства можно использовать для получения сведений о скрипте во время его выполнения. Например, $MyInvocation . Переменная Микомманд. path содержит путь и имя файла скрипта. $MyInvocation . Строка содержит команду, которая запустила скрипт, включая все параметры и значения.
Начиная с PowerShell 3,0, $MyInvocation имеет два новых свойства, которые предоставляют сведения о скрипте, который вызывал или вызывает текущий скрипт. Значения этих свойств заполняются только в том случае, если вызывающий элемент или вызвавший объект является сценарием.
Пскоммандпас содержит полный путь и имя скрипта, который вызывал или вызывает текущий скрипт.
PSScriptRoot содержит каталог скрипта, вызвавшего или вызвавшего текущий скрипт.
В отличие $PSCommandPath от и $PSScriptRoot автоматических переменных, содержащих сведения о текущем скрипте, свойства $MyInvocation пскоммандпас и PSScriptRoot этой переменной содержат сведения о скрипте, вызвавшем текущий скрипт.
Разделы данных. Вы можете использовать Data ключевое слово для разделения данных из логики в скриптах. Разделы данных также могут упростить локализацию. Дополнительные сведения см. в разделе about_Data_Sections и about_Script_Internationalization.
Подпись скрипта. Вы можете добавить цифровую подпись к сценарию. В зависимости от политики выполнения можно использовать цифровые подписи для ограничения выполнения скриптов, которые могут включать ненадежные команды. Дополнительные сведения см. в разделе about_Execution_Policies и about_Signing.
В этой статье описано как создавать, редактировать, выполнять и сохранять скрипты в области скриптов.
To save and name a script
- On the File menu, click Save As. The Save As dialog box will appear.
- In the File name box, enter a name for the file.
- In the Save as type box, select a file type. For example, in the Save as type box, select 'PowerShell Scripts ( *.ps1 )'.
- Click Save.
How to create and run scripts
You can open and edit Windows PowerShell files in the Script Pane. 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. Other common file types you may open in the Script Pane are configuration files ( .ps1xml ), XML files, and text files.
The Windows PowerShell execution policy determines whether you can run scripts and load Windows PowerShell profiles and configuration files. The default execution policy, Restricted, prevents all scripts from running, and prevents loading profiles. To change the execution policy to allow profiles to load and be used, see Set-ExecutionPolicy and about_Signing.
Отображение пути к файлу
На вкладке файла наведите курсор на его имя. Появится подсказка с полным путем к файлу сценария.
Запуск сценария
To stop a running script
There are several ways to stop a running script.
- Click Stop Operation on the toolbar
- Press CTRL + BREAK
- Select the File menu and click Stop Operation.
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.
Поиск и замена текста в области сценариев
Нажмите клавиши CRTL + H или в меню Edit (Правка) выберите Replace in Script (Заменить в сценарии). Введите текст, который нужно найти, и замещающий текст, затем нажмите клавишу ВВОД .
Остановка выполняемого сценария
Есть несколько способов остановить выполняемый скрипт.
- На панели инструментов щелкните Остановить операцию.
- Нажмите CTRL + BREAK .
- В меню Файл выберите Остановить операцию.
Нажатие клавиш CTRL + C также сработает, если нет выделенного текста. В противном случае нажатие клавиш CTRL + C приведет к копированию выделенного текста.
Выполнение сценария
перед запуском скрипта на Windows необходимо изменить политику выполнения PowerShell по умолчанию. политика выполнения не применяется к PowerShell, работающему на платформах, отличных от Windows.
Политика Restricted выполнения по умолчанию предотвращает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.
Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
Изменение вступает в силу немедленно.
Чтобы выполнить сценарий, введите полное имя файла скрипта и полный путь к нему.
Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:
Чтобы выполнить сценарий в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, после чего следует обратная косая черта ( .\ ).
Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:
Если у скрипта есть параметры, введите параметры и значения параметров после имени файла скрипта.
Например, следующая команда использует параметр ServiceName скрипта Get-ServiceLog, чтобы запросить журнал действия службы удаленного управления Windows.
В качестве функции безопасности PowerShell не выполняет сценарии при двойном щелчке значка скрипта в проводнике или при вводе имени сценария без полного пути, даже если сценарий находится в текущем каталоге. Дополнительные сведения о выполнении команд и сценариев в PowerShell см. в разделе about_Command_Precedence.
Сохранение сценария в кодировке ASCII
По умолчанию интегрированная среда сценариев Windows PowerShell сохраняет новые файлы сценариев ( .ps1 ), файлы данных сценариев ( .psd1 ) и файлы модулей сценариев ( .psm1 ) в кодировке Юникод (BigEndianUnicode). Чтобы сохранить сценарий в другой кодировке, например ASCII (ANSI), используйте методы Save или SaveAs объекта $psISE.CurrentFile.
Следующая команда сохраняет новый сценарий в кодировке ASCII и с именем MyScript.ps1:
Следующая команда заменяет текущий файл сценария на файл с таким же именем, но в кодировке ASCII:
Следующая команда возвращает кодировку текущего файла:
Интегрированная среда скриптов Windows PowerShell поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и Default. Значение параметра Default зависит от системы.
Интегрированная среда скриптов Windows PowerShell не изменяет кодировку файлов скриптов при использовании команд "Сохранить" или "Сохранить как".
В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.
Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.
С языком PowerShell познакомился около двух лет назад, но вплотную занялся им лишь спустя год, не осознав поначалу его огромных возможностей. В статье, прежде всего, я буду ориентироваться на тех, кто хочет начать работать с PowerShell, но пока не доверяет ему или не знает, с какой стороны подступиться к этому чуду.
Внимание: PowerShell вызывает привыкание.
Введение
Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.
Выглядеть среда PowerShell может так, как командная строка:
powershell.exe
Или в виде приложения:
powershell_ise.exe
Powershell_ise.exe называется интегрированной средой сценариев — Windows PowerShell ISE. Позволяет работать с языком в удобной среде с подсветкой синтаксиса, конструктором команд, автозаполнением команд по нажатию TAB и прочими прелестями. Идеальна для создания и тестирования сценариев.
Для запуска среды powershell.exe или powershell_ise.exe достаточно набрать аналогичное название в строке выполнить.
Файл сценария PowerShell имеет расширение .ps1.
Сценарий не получится запустить двойным ЛКМ. Это сделано специально для того, чтобы не нанести вред системе случайно запущенным скриптом.
Для запуска, по клику ПКМ следует выбрать «Выполнить с помощью PowerShell»:
Помимо того, что существует ограничение по запуску сценариев ЛКМ, по умолчанию выполнение сценариев в системе запрещено, опять же, по описанной выше причине — не нанести вред системе. Для проверки текущей политики выполнения выполним команду:
Мы получим одно из следующих ниже значений. С большой вероятностью, если это был первый запуск, мы получим Restricted.
- Restricted — Сценарии не могут быть запущены;
- AllSigned — Могут быть запущены только сценарии, подписанные доверенным издателем. Перед выполнением сценария доверенного издателя будет запрашиваться подтверждение;
- RemoteSigned — Разрешено выполнять созданные нами сценарии и скачанные сценарии, подписанные доверенным издателем;
- Unrestricted — Никаких ограничений, все скрипты могут быть запущены.
Для выполнения и тестирования понизим политику до RemoteSigned выполнив команду:
Приступаем к работе
Командлет
- Командлетами называются команды PowerShell, в которых заложена различная функциональность;
- Командлеты могут быть как системными, так и пользовательскими, созданные кем-либо;
- Командлеты именуются по правилу Глагол-Существительное, что упрощает их запоминание;
- Командлеты выводят результаты в виде объектов или их коллекций;
- Командлеты могут как получать данные для обработки, так и передавать данные по конвейеру (про конвейеры позже);
- Командлеты не чувствительны к регистру (можно написать и get-process, и Get-Process, и GeT-pRoCeSs);
- После командлетов не обязательно ставить ";", за исключением, когда мы выполняем несколько командлетов в одну строку (Get-Process; Get-Services).
Например, для получения текущих процессов, мы выполним команду:
И получим результат:
Попробуйте самостоятельно выполнить:
Не обязательно знать наизусть все командлеты. Get-Help спасёт ситуацию.
Информацию о всех доступных командлетах можно получить, введя следующую команду:
Если мы используем PowerShell ISE, мы облегчаем процесс разработки.
Достаточно ввести знак тире "-" после того, как ввели командлет, и мы получим все возможные варианты параметров и их типы:
Если, всё же, мы забудем какие свойства есть у того или иного командлета, прогоним его через Get-Member:
Недостаточно информации? Обратимся к справке с параметром -Examples:
Получаем описание Get-Process, да ещё и с примерами использования:
- Командлеты могут иметь сокращённые названия — алиасы. Например, вместо Get-Help можно использовать просто Help. Для получения всех сокращений выполните Get-Alias.
Что аналогично записи:
А теперь остановим процесс:
Немногим ранее мы сказали, что командлеты именуются по правилу Глагол-Существительное. Уточню, что глагол не обязательно должен быть Get. Помимо того, что мы можем получать, мы можем задавать Set (помните, Set-ExecutionPolicy), запускать Start, останавливать Stop, выводить Out, создавать New и многие другие. Название командлета ни чем не ограничивается и, когда мы будем с вами создавать свой собственный, сможем назвать его так, как душе угодно.
Попробуем выполнить вывод в файл:
Кстати, аналогично можно записать так:
Комментарии
Мы все знаем, использовать комментарии является хорошим тоном.
Обратим внимание, на код из примера:
Для тех, кто знаком с WMI, кто делает это на старом добром VBScript, помните, сколько кода надо написать?
Конвейер
Конвейер (|) — передаёт выходные данные одной команды во входные данные на обработку другой команде. Мы использовали конвейер ранее, получая все свойства объекта или, в предыдущем примере, выбирая из набора данных только поле Caption.
Чтобы понять принцип конвейера, давайте выполним код:
Что произойдёт: получаем все службы (Get-Service), передаём все полученные службы на сортировку в командлет Sort-Object и указываем, что хотим отсортировать их по параметру Status. На выводе мы получим сначала все службы со статусом Stop, а потом все службы со статусом Running.
В примере ниже мы сначала получим все запущенные службы. После первого конвейера проходимся по каждому элементу, выбираем только те службы, у которых статус Running и на втором конвейере выбираем, что хотим на выводе увидеть только displayname служб:
В примере мы используем $_. Данная запись означает текущий элемент в конвейере.
Послесловие
В этой части мы научились запускать PowerShell, разобрались с политикой выполнения сценариев. Поняли, что такое командлеты, знаем, как передавать их по конвейеру и как получить их свойства. Если мы что-то забудем, обязательно Get-Help.
Все это знания нужные для того, чтобы сделать первый прыжок в язык. Поверьте, ещё много интересного!
Выполнение части сценария
Get help for scripts
The Get-Help cmdlet gets the help topics for scripts as well as for cmdlets and other types of commands. To get the help topic for a script, type Get-Help followed by the path and filename of the script. If the script path is in your Path environment variable, you can omit the path.
For example, to get help for the ServicesLog.ps1 script, type:
To find and replace text in the Script Pane
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 .
Running scripts on other computers
To run a script on one or more remote computers, use the FilePath parameter of the Invoke-Command cmdlet.
Enter the path and filename of the script as the value of the FilePath parameter. The script must reside on the local computer or in a directory that the local computer can access.
The following command runs the Get-ServiceLog.ps1 script on the remote computers named Server01 and Server02.
To copy text in the Script Pane
In the Script Pane, select the text that you want to copy.
Press CTRL + C or, on the toolbar, click the Copy icon, or on the Edit menu, click Copy.
To find text in the Script Pane
- To find text anywhere, press CTRL + F or, on the Edit menu, click Find in Script.
- To find text after the cursor, press F3 or, on the Edit menu, click Find Next in Script.
- To find text before the cursor, press SHIFT + F3 or, on the Edit menu, click Find Previous in Script.
Сохранение сценария
Звездочка рядом с именем скрипта обозначает, что файл не был сохранен после изменения. После сохранения звездочка исчезает.
To enter text in the Script Pane
- 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.
- Create a script. Syntax coloring and tab completion provide a richer editing experience in Windows PowerShell ISE.
- 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.
Сохранение сценария
Нажмите клавиши CTRL + S , щелкните значок Сохранить на панели инструментов или выберите Сохранить в меню Файл.
Поиск текста в области сценариев
- Чтобы найти текст в любой части скрипта, нажмите клавиши CTRL + F или выберите Find in Script (Найти в сценарии) в меню Edit (Правка).
- Чтобы найти текст после курсора, нажмите клавишу F3 или выберите Найти следующее в сценарии в меню Правка.
- Чтобы найти текст до курсора, нажмите клавиши SHIFT + F3 или выберите Find Previous in Script (Найти предыдущее в сценарии) в меню Edit (Правка).
How to run a script
Before you can run a script on Windows, you need to change the default PowerShell execution policy. Execution policy does not apply to PowerShell running on non-Windows platforms.
The default execution policy, Restricted , prevents all scripts from running, including scripts that you write on the local computer. For more information, see about_Execution_Policies.
The execution policy is saved in the registry, so you need to change it only once on each computer.
To change the execution policy, use the following procedure.
At the command prompt, type:
The change is effective immediately.
To run a script, type the full name and the full path to the script file.
For example, to run the Get-ServiceLog.ps1 script in the C:\Scripts directory, type:
To run a script in the current directory, type the path to the current directory, or use a dot to represent the current directory, followed by a path backslash ( .\ ).
For example, to run the ServicesLog.ps1 script in the local directory, type:
If the script has parameters, type the parameters and parameter values after the script file name.
For example, the following command uses the ServiceName parameter of the Get-ServiceLog script to request a log of WinRM service activity.
As a security feature, PowerShell does not run scripts when you double-click the script icon in File Explorer or when you type the script name without a full path, even when the script is in the current directory. For more information about running commands and scripts in PowerShell, see about_Command_Precedence.
Создание файла сценария
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. The keyboard shortcuts for these actions are the same shortcuts used for all Windows applications.
Вырезание текста в области сценариев
- В области сценариев выделите текст, который требуется вырезать.
- Нажмите клавиши CTRL + X , щелкните значок Cut (Вырезать) на панели инструментов или выберите Cut (Вырезать) в меню Edit (Правка).
Отмена действия в области сценариев
Нажмите клавиши CTRL + Z , щелкните значок Undo на панели инструментов или выберите Отменить в меню Правка.
Получить справку по сценариям
Командлет Get-Help получает разделы справки для скриптов, а также для командлетов и других типов команд. Чтобы получить раздел справки для скрипта, введите Get-Help , за которым следует путь и имя файла скрипта. Если путь к скрипту находится в Path переменной среды, путь можно опустить.
Например, чтобы получить справку по сценарию ServicesLog.ps1, введите:
To save a script in ASCII encoding
By default, Windows PowerShell ISE saves new script files ( .ps1 ), script data files ( .psd1 ), and script module files ( .psm1 ) as Unicode (BigEndianUnicode) by default. To save a script in another encoding, such as ASCII (ANSI), use the Save or SaveAs methods on the $psISE.CurrentFile object.
The following command saves a new script as MyScript.ps1 with ASCII encoding.
The following command replaces the current script file with a file with the same name, but with ASCII encoding.
The following command gets the encoding of the current file.
Windows PowerShell ISE supports the following encoding options: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8, and Default. The value of the Default option varies with the system.
Windows PowerShell ISE doesn't change the encoding of script files when you use the Save or Save As commands.
Describes how to run and write scripts in PowerShell.
Переход к определенной строке текста в области сценариев
В области сценариев нажмите клавиши CTRL + G или выберите Go to Line (Перейти к строке) в меню Edit (Правка).
Введите номер строки.
Script scope and dot sourcing
Each script runs in its own scope. The functions, variables, aliases, and drives that are created in the script exist only in the script scope. You cannot access these items or their values in the scope in which the script runs.
To run a script in a different scope, you can specify a scope, such as Global or Local, or you can dot source the script.
The dot sourcing feature lets you run a script in the current scope instead of in the script scope. When you run a script that is dot sourced, the commands in the script run as though you had typed them at the command prompt. The functions, variables, aliases, and drives that the script creates are created in the scope in which you are working. After the script runs, you can use the created items and access their values in your session.
To dot source a script, type a dot (.) and a space before the script path.
After the UtilityFunctions.ps1 script runs, the functions and variables that the script creates are added to the current scope.
For example, the UtilityFunctions.ps1 script creates the New-Profile function and the $ProfileName variable.
If you run the UtilityFunctions.ps1 script in its own script scope, the New-Profile function and the $ProfileName variable exist only while the script is running. When the script exits, the function and variable are removed, as shown in the following example.
When you dot source the script and run it, the script creates the New-Profile function and the $ProfileName variable in your session in your scope. After the script runs, you can use the New-Profile function in your session, as shown in the following example.
For more information about scope, see about_Scopes.
Запуск с помощью PowerShell
Начиная с PowerShell 3,0 можно запускать сценарии из проводника.
Чтобы использовать функцию "Запуск с помощью PowerShell", сделайте следующее:
Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду "запустить с помощью PowerShell".
Функция "запустить с помощью PowerShell" предназначена для выполнения скриптов, которые не имеют обязательных параметров и не возвращают выходные данные в командную строку.
Дополнительные сведения см. в разделе about_Run_With_PowerShell.
To create a new script file
On the toolbar, click New, or on the File menu, click New. 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. By default a file of type script ( .ps1 ) is created, but it can be saved with a new name and extension. Multiple script files can be created in the same PowerShell tab.
Параметры в скриптах
Параметры сценария работают как параметры функции. Значения параметров доступны для всех команд в скрипте. Все функции параметров функций, включая атрибут Parameter и его именованные аргументы, также допустимы в скриптах.
При выполнении скрипта пользователи заменяют параметры после имени скрипта.
В следующем примере показан Test-Remote.ps1 скрипт с параметром ComputerName . Обе функции сценария могут обращаться к значению параметра ComputerName .
Чтобы выполнить этот скрипт, введите имя параметра после имени скрипта. Пример:
Дополнительные сведения о инструкции Param и параметрах функции см. в разделе about_Functions и about_Functions_Advanced_Parameters.
Написание сценария
Скрипт может содержать любые допустимые команды PowerShell, в том числе отдельные команды, команды, использующие конвейер, функции и управляющие структуры, такие как операторы If и циклы for.
Чтобы написать сценарий, откройте новый файл в текстовом редакторе, введите команды и сохраните их в файле с допустимым именем файла с .ps1 расширением.
Следующий пример представляет собой простой сценарий, который получает службы, работающие в текущей системе, и сохраняет их в файл журнала. Имя файла журнала создается с текущей даты.
Чтобы создать этот скрипт, откройте текстовый редактор или редактор скриптов, введите следующие команды, а затем сохраните их в файле с именем ServiceLog.ps1 .
To run a portion of a script
- In the Script Pane, select a portion of a script.
- On the File menu, click Run Selection, or on the toolbar, click Run Selection.
Вставка текста в области сценариев
Нажмите клавиши CTRL + V , щелкните значок Paste (Вставить) на панели инструментов или выберите Paste (Вставить) в меню Edit (Правка).
To go to a particular line of text in the Script Pane
In the Script Pane, press CTRL + G or, on the Edit menu, click Go to Line.
Enter a line number.
Long description
A script is a plain text file that contains one or more PowerShell commands. PowerShell scripts have a .ps1 file extension.
Running a script is a lot like running a cmdlet. You type the path and file name of the script and use parameters to submit data and set options. You can run scripts on your computer or in a remote session on a different computer.
Writing a script saves a command for later use and makes it easy to share with others. Most importantly, it lets you run the commands simply by typing the script path and the filename. Scripts can be as simple as a single command in a file or as extensive as a complex program.
Открытие существующего сценария
To redo an action in the Script Pane
Press CTRL + Y or, on the toolbar, click the Redo icon, or on the Edit menu, click Redo.
Скрипты в модулях
Модуль — это набор связанных ресурсов PowerShell, которые можно распространять как единое целое. Вы можете использовать модули для организации скриптов, функций и других ресурсов. Можно также использовать модули для распространения кода среди других пользователей и получения кода из надежных источников.
Можно включить скрипты в модули или создать модуль скрипта, который представляет собой модуль, полностью или в основном содержащий скрипт и вспомогательные ресурсы. Модуль скрипта — это просто сценарий с расширением файла PSM1.
Дополнительные сведения о модулях см. в разделе about_Modules.
Выполнение сценариев на других компьютерах
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр Invoke-Command FilePath командлета.
Введите путь и имя файла скрипта в качестве значения параметра FilePath . Скрипт должен находиться на локальном компьютере или в каталоге, к которому локальный компьютер может получить доступ.
Следующая команда запускает Get-ServiceLog.ps1 сценарий на удаленных компьютерах с именем Server01 и Server02.
Область скрипта и источники с точкой
Каждый скрипт выполняется в отдельной области. Функции, переменные, псевдонимы и диски, созданные в сценарии, существуют только в области скрипта. Доступ к этим элементам или их значениям в области, в которой выполняется скрипт, невозможен.
Чтобы выполнить скрипт в другой области, можно указать область, например Global или local, или создать точку для скрипта.
Функция «с точкой» позволяет запускать скрипт в текущей области, а не в области скрипта. При запуске скрипта, который имеет точку с точкой, команды в скрипте выполняются так, будто были введены в командной строке. Функции, переменные, псевдонимы и диски, создаваемые сценарием, создаются в области, в которой выполняется работа. После выполнения скрипта можно использовать созданные элементы и получить доступ к их значениям в сеансе.
Чтобы создать точку скрипта для исходного кода, введите точку (.) и пробел перед путем к сценарию.
или диспетчер конфигурации служб
UtilityFunctions.ps1 После выполнения скрипта функции и переменные, создаваемые сценарием, добавляются в текущую область.
Например, UtilityFunctions.ps1 Скрипт создает New-Profile функцию и $ProfileName переменную.
При запуске UtilityFunctions.ps1 скрипта в собственной области New-Profile скрипта функция и $ProfileName переменная существуют только во время выполнения скрипта. При завершении работы скрипта удаляется функция и переменная, как показано в следующем примере.
Когда вы подаете скрипту точку и запускаете его, сценарий создает New-Profile функцию и $ProfileName переменную в своем сеансе в вашей области. После выполнения скрипта можно использовать New-Profile функцию в сеансе, как показано в следующем примере.
Дополнительные сведения об области действия см. в разделе about_Scopes.
Повторное выполнение действия в области сценариев
Нажмите клавиши CTRL + Y , щелкните значок Повторить на панели инструментов или выберите Повторить в меню Правка.
Other script features
PowerShell has many useful features that you can use in scripts.
$PSCommandPath - Contains the full path and name of the script that is being run. This parameter is valid in all scripts. This automatic variable is introduced in PowerShell 3.0.
$PSScriptRoot - Contains the directory from which a script is being run. In PowerShell 2.0, this variable is valid only in script modules ( .psm1 ). Beginning in PowerShell 3.0, it is valid in all scripts.
$MyInvocation - The $MyInvocation automatic variable contains information about the current script, including information about how it was started or "invoked." You can use this variable and its properties to get information about the script while it is running. For example, the $MyInvocation .MyCommand.Path variable contains the path and filename of the script. $MyInvocation .Line contains the command that started the script, including all parameters and values.
Beginning in PowerShell 3.0, $MyInvocation has two new properties that provide information about the script that called or invoked the current script. The values of these properties are populated only when the invoker or caller is a script.
PSCommandPath contains the full path and name of the script that called or invoked the current script.
PSScriptRoot contains the directory of the script that called or invoked the current script.
Unlike the $PSCommandPath and $PSScriptRoot automatic variables, which contain information about the current script, the PSCommandPath and PSScriptRoot properties of the $MyInvocation variable contain information about the script that called the current script.
Data sections - You can use the Data keyword to separate data from logic in scripts. Data sections can also make localization easier. For more information, see about_Data_Sections and about_Script_Internationalization.
Script Signing - You can add a digital signature to a script. Depending on the execution policy, you can use digital signatures to restrict the running of scripts that could include unsafe commands. For more information, see about_Execution_Policies and about_Signing.
Сценарий — это обычный текстовый файл, содержащий одну или несколько команд PowerShell. Сценарии PowerShell имеют .ps1 расширение файла.
Выполнение сценария во многом похоже на выполнение командлета. Введите путь и имя файла скрипта и используйте параметры для отправки данных и задания параметров. Сценарии можно запускать на компьютере или в удаленном сеансе на другом компьютере.
Написание сценария сохраняет команду для последующего использования и упрощает совместное использование с другими пользователями. Что самое важное, это позволяет выполнять команды просто путем ввода пути скрипта и имени файла. Скрипты могут быть простыми как одной командой в файле, так и сложной программой.
Run with PowerShell
Beginning in PowerShell 3.0, you can run scripts from File Explorer.
Run File Explorer, right-click the script filename and then select "Run with PowerShell".
The "Run with PowerShell" feature is designed to run scripts that do not have required parameters and do not return output to the command prompt.
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.
Scripts in modules
A module is a set of related PowerShell resources that can be distributed as a unit. You can use modules to organize your scripts, functions, and other resources. You can also use modules to distribute your code to others, and to get code from trusted sources.
You can include scripts in your modules, or you can create a script module, which is a module that consists entirely or primarily of a script and supporting resources. A script module is just a script with a .psm1 file extension.
For more information about modules, see about_Modules.
Сохранение сценария с определенным именем
- В меню Файл выберите пункт Сохранить как. Появится диалоговое окно Сохранить как.
- В поле Имя файла введите имя файла.
- В поле Тип файла выберите тип файла. Например, в поле Тип сохраняемого файла выберите "Скрипты PowerShell ( *.ps1 )".
- Нажмите Сохранить.
To undo an action in the Script Pane
Press CTRL + Z or, on the toolbar, click the Undo icon, or on the Edit menu, click Undo.
How to write a script
A script can contain any valid PowerShell commands, including single commands, commands that use the pipeline, functions, and control structures such as If statements and For loops.
To write a script, open a new file in a text editor, type the commands, and save them in a file with a valid filename with the .ps1 file extension.
The following example is a simple script that gets the services that are running on the current system and saves them to a log file. The log filename is created from the current date.
To create this script, open a text editor or a script editor, type these commands, and then save them in a file named ServiceLog.ps1 .
Возврат значения выхода
По умолчанию скрипты не возвращают состояние выхода при завершении сценария. Для возврата кода выхода из скрипта необходимо использовать exit инструкцию. По умолчанию exit инструкция возвращает 0 . Можно указать числовое значение, чтобы вернуть другое состояние выхода. Ненулевое значение кода выхода обычно сигнализирует об ошибке.
в Windows допускается любое число между [int]::MinValue и [int]::MaxValue .
В UNIX разрешены только положительные числа в диапазоне от [byte]::MinValue (0) до [byte]::MaxValue (255). Отрицательное число в диапазоне от -1 до -255 автоматически преобразуется в положительное число путем добавления 256. Например, -2 преобразуется в 254 .
В PowerShell exit инструкция задает значение $LASTEXITCODE переменной. в Windows командной оболочке (cmd.exe) оператор exit задает значение %ERRORLEVEL% переменной среды.
Любой аргумент, который не является числовым или вне диапазона, зависящего от платформы, преобразуется в значение 0 .
To run a script
On the toolbar, click Run Script, or on the File menu, click Run.
Закрытие вкладки сценария
На вкладке файла, которую нужно закрыть, щелкните значок закрытия (X) или откройте меню File (Файл) и выберите Close (Закрыть).
Если файл был изменен с момента последнего сохранения, будет предложено сохранить или отменить изменения.
Ввод текста в области сценариев
- Установите курсор в область сценариев, щелкнув кнопкой мыши любую ее часть или выбрав пункт Перейти в область сценариев в меню Вид.
- Создайте сценарий. Цветовая подсветка синтаксиса и заполнение нажатием клавиши TAB обеспечивают более широкие возможности для редактирования в интегрированной среде скриптов Windows PowerShell.
- Подробную информацию о заполнении нажатием клавиши TAB, помогающем при вводе кода, см. в статье How to Use Tab Completion in the Script Pane and Console Pane (Использование заполнения нажатием клавиши TAB в областях сценариев и консоли).
Создание и выполнение сценариев
В области скриптов можно открывать и редактировать файлы Windows PowerShell. Сейчас нас интересуют следующие типы файлов Windows PowerShell: файлы скриптов ( .ps1 ), файлы данных скриптов ( .psd1 ) и файлы модулей скриптов ( .psm1 ). Эти типы файлов имеют цветовую подсветку синтаксиса в редакторе области сценариев. Другие стандартные файлы, которые можно открыть в области сценариев, — это файлы конфигурации ( .ps1xml ), XML-файлы и текстовые файлы.
Политика выполнения Windows PowerShell определяет, можно ли выполнять сценарии, загружать профили Windows PowerShell и файлы конфигурации. Политика выполнения по умолчанию, Restricted, запрещает выполнение сценариев и блокирует загрузку профилей. Чтобы изменить эту политику выполнения и разрешить загрузку и использование профилей, см. описание Set-ExecutionPolicy и about_Signing.
Parameters in scripts
Script parameters work like function parameters. The parameter values are available to all of the commands in the script. All of the features of function parameters, including the Parameter attribute and its named arguments, are also valid in scripts.
When running the script, script users type the parameters after the script name.
The following example shows a Test-Remote.ps1 script that has a ComputerName parameter. Both of the script functions can access the ComputerName parameter value.
To run this script, type the parameter name after the script name. For example:
For more information about the Param statement and the function parameters, see about_Functions and about_Functions_Advanced_Parameters.
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 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 cut text in the Script Pane
- In the Script Pane, select the text that you want to cut.
- Press CTRL + X or, on the toolbar, click the Cut icon, or on the Edit menu, click Cut.
Returning an exit value
By default, scripts do not return an exit status when the script ends. You must use the exit statement to return an exit code from a script. By default, the exit statement returns 0 . You can provide a numeric value to return a different exit status. A nonzero exit code typically signals a failure.
On Windows, any number between [int]::MinValue and [int]::MaxValue is allowed.
In PowerShell, the exit statement sets the value of the $LASTEXITCODE variable. In the Windows Command Shell (cmd.exe), the exit statement sets the value of the %ERRORLEVEL% environment variable.
Any argument that is non-numeric or outside the platform-specific range is translated to the value of 0 .
To close a script tab
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.
Копирование текста в области сценариев
В области сценариев выделите текст, который требуется скопировать.
Нажмите клавиши CTRL + C , щелкните значок Copy (Копировать) на панели инструментов или выберите Copy (Копировать) в меню Edit (Правка).
Читайте также: