- Как создать и запустить сценарий PowerShell в Windows 10 – инструкция по шагам
- Создание файла сценария PowerShell
- Создание скрипта с помощью блокнота
- Создание сценария с помощью интегрированной среды сценариев
- Запуск файла сценария PowerShell
- Запуск скриптов PowerShell
- Как запустить скрипт PowerShell?
- Как разрешить выполнение неподписанного скрипта PowerShell?
- Как запустить скрипт PowerShell в фоновом режиме?
- Запуск скрипта PowerShell c параметрами
- Как запустить скрипт PowerShell с помощью ярлыка?
- Использование PowerShell в расширении Using PowerShell in your extension
- PowerShell в TypeScript PowerShell in TypeScript
- Выполнение скрипта PowerShell Running a PowerShell Script
- Ключевые параметры Key Options
- Поток PowerShell PowerShell Stream
- Долго выполняющиеся скрипты Long Running Scripts
- Параметры рабочего элемента WorkItem Options
- API-интерфейсы пакетной службы PowerShell PowerShell Batch APIs
Как создать и запустить сценарий PowerShell в Windows 10 – инструкция по шагам
Windows 10 PowerShell – это средство командной строки, которое позволяет выполнять команды и сценарии для изменения параметров системы и автоматизации задач. Это похоже на командную строку, но PowerShell является более эффективным интерфейсом командной строки (CLI), который предоставляет широкий набор инструментов и обеспечивает большую гибкость и контроль (особенно для сценариев).
Скрипт – это просто набор команд, сохраненных в текстовый файл (с расширением .ps1), которые PowerShell может понять и выполнить в заданной последовательности. Единственное предупреждение заключается в том, что в отличие от командной строки, протокол безопасности по умолчанию предотвращает выполнение всех сценариев.
Это означает, что при двойном щелчке .ps1 файла в системе Windows 10 ничего не произойдёт, и если вы пытаетесь выполнить скрипт в PowerShell, вы получите сообщение об ошибке: «не может быть загружен, потому что запрещено выполнение сценариев в этой системе». Тем не менее, запускать сценарии на вашем устройстве довольно просто. Вам просто нужно включить правильную политику выполнения.
В этой версии урока по Windows 10 мы проведём вас шаг за шагом, чтобы вы смогли успешно запустить свой первый скрипт в PowerShell.
Создание файла сценария PowerShell
В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).
Создание скрипта с помощью блокнота
Чтобы создать сценарий PowerShell с помощью блокнота, выполните следующие действия:
- Откройте приложение «Блокнот».
- Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».
Создание сценария с помощью интегрированной среды сценариев
Кроме того, консоль PowerShell ISE можно использовать для кодирования сценариев в Windows 10. Интегрированная cреда сценариев является сложным инструментом, но вы можете начать работу с помощью этих шагов:
- Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.
В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например:
Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»
Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.
Запуск файла сценария PowerShell
Чтобы запустить файл сценария в PowerShell, необходимо изменить политику выполнения, выполнив следующие действия:
- Откройте поиск и введите PowerShell, щелкните правой кнопкой мыши в верхний результат и выберите Запуск от имени администратора.
- Введите следующую команду, чтобы разрешить выполнение скриптов и нажмите клавишу Enter :
Укажите тип А и ещё раз нажмите клавишу Enter .
Введите следующую команду для запуска скрипта и нажмите клавишу Enter :
В приведенной выше команде обязательно измените PATH\to\SCRIPT на расположение вашего скрипта.
После выполнения этих шагов сценарий будет запущен, и если он был создан правильно, вы должны увидеть его вывод без проблем.
PowerShell в Windows 10 включает четыре политики выполнения:
- Restricted – останавливает выполнение скрипта.
- RemoteSigned – запускает скрипты, созданные на устройстве. Однако, сценарии, созданные на другом компьютере, не будут запускаться, если они не содержат подписи доверенного издателя.
- AllSigned – все скрипты будут работать до тех пор, пока они подписаны надежным издателем.
- Unrestricted запускает любой скрипт без каких-либо ограничений.
В приведенных выше шагах мы использовали команду, чтобы разрешить запуск локальных скриптов в Windows 10. Однако, если вы не планируете регулярно выполнять скрипты, можно восстановить настройки по умолчанию, используя те же инструкции, но на Шаге 4, обязательно используйте Set-ExecutionPolicy Restricted команду.
Запуск скриптов PowerShell
PowerShell — это новая командная оболочка для Windows, которая по задумкам Microsoft должна вытеснить и заменить cmd. По-умолчанию, эта оболочка уже идет в составе Windows 7 и выше. Если у вас более старая операционная система или вы просто хотите скачать более свежую версию PowerShell, сделать это можно здесь: https://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx
Как запустить скрипт PowerShell?
Есть несколько различных способов запуска скрипта, ниже приведены основные:
- Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой .\test.ps1) Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
- Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
- Запустить стандартную коммандную строку и в ней написать:
powershell -file (пример: powershell -file myscript.ps1)
Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.
Как разрешить выполнение неподписанного скрипта PowerShell?
1. В оболочке PowerShell , перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
powershell -executionpolicy RemoteSigned -file
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов «на постоянно», то используйте такой способ:
3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени «Администратора», затем выполните команду:
Set-ExecutionPolicy RemoteSigned
Однако, я бы не рекомендовал такой способ, чтобы не подвергать ваш компьютер возможным угрозам, т.к. так вы разрешаете выполнение скриптов всем и всегда.
Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass — полное отключение любых запросов и предупреждений.
Как запустить скрипт PowerShell в фоновом режиме?
Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:
powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file
Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.
Запуск скрипта PowerShell c параметрами
Собственно запуск нужно делать как если бы вы запускали обычную программу или bat-файл с параметрами. Например, для запуска скрипта с параметрами из командной, можно написать такую команду:
powershell -executionpolicy RemoteSigned -file param1 param2 «еще один текстовый параметр»
В самом скрипте вы можете получить эти параметры так:
В интегрированной среде PowerShell ISE запустить скрипт с параметрами можно аналогично, используя область команд.
Как запустить скрипт PowerShell с помощью ярлыка?
Осуществить такую задачу можно двумя способами:
- Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
- Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v \ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.
Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.
Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом 😉
Использование PowerShell в расширении Using PowerShell in your extension
Область применения. Windows Admin Center, ознакомительная версия Windows Admin Center Applies To: Windows Admin Center, Windows Admin Center Preview
Давайте более подробно рассмотрим пакет SDK для расширений центра администрирования Windows. Давайте поговорим о добавлении команд PowerShell в расширение. Let’s go more in-depth into the Windows Admin Center Extensions SDK — let’s talk about adding PowerShell commands to your extension.
PowerShell в TypeScript PowerShell in TypeScript
Процесс сборки gulp содержит шаг создания, который принимает все .ps1 , что размещается в \src\resources\scripts папке, и создает их в powershell-scripts классе в \src\generated папке. The gulp build process has a generate step that will take any .ps1 that is placed in the \src\resources\scripts folder and build them into the powershell-scripts class under the \src\generated folder.
Не следует вручную обновлять powershell-scripts.ts файлы и strings.ts . Don’t manually update the powershell-scripts.ts nor the strings.ts files. Любые внесенные изменения будут перезаписаны при следующем формировании. Any change you make will be overwritten on the next generate.
Выполнение скрипта PowerShell Running a PowerShell Script
Любые скрипты, которые необходимо выполнить на узле, можно разместить в \src\resources\scripts\.ps1 . Any scripts that you want to run on a node can be placed in \src\resources\scripts\.ps1 .
Любые изменения, внесенные в .ps1 файл, не будут отражены в проекте до gulp generate запуска. Any changes make in a .ps1 file will not be reflected in your project until gulp generate has been run.
Для работы с API сначала создается сеанс PowerShell на целевых узлах, создается сценарий PowerShell с параметрами, которые необходимо передать, а затем выполняется сценарий в созданных сеансах. The API works by first creating a PowerShell session on the nodes you are targeting, creating the PowerShell script with any parameters that need to be passed in, and then running the script on the sessions that were created.
Например, у нас есть следующий сценарий \src\resources\scripts\Get-NodeName.ps1 : For example, we have this script \src\resources\scripts\Get-NodeName.ps1 :
Мы создадим сеанс PowerShell для нашего целевого узла: We will create a PowerShell session for our target node :
Затем мы создадим сценарий PowerShell с входным параметром: Then we will create the PowerShell script with an input parameter:
Наконец, необходимо выполнить этот скрипт в созданном сеансе: Lastly, we need to run that script in the session we created:
Теперь нужно подписываться на только что созданную функцию. Now we will need to subscribe to the observable function we just created. Поместите здесь, где нужно вызвать функцию, чтобы запустить сценарий PowerShell: Place this where you need to call the function to run the PowerShell script:
Предоставляя имя узла методу createSession, создается и используется новый сеанс PowerShell, который сразу же уничтожается после завершения вызова PowerShell. By providing the node name to the createSession method, a new PowerShell session is created, used, and then immediately destroyed upon completion of the PowerShell call.
Ключевые параметры Key Options
При вызове API PowerShell доступны несколько параметров. A few options are available when calling the PowerShell API. Каждый раз при создании сеанса его можно создать с ключом или без него. Each time a session is created it can be created with or without a key.
Ключ: При этом создается сеанс с ключом, который может быть просмотрен и использован повторно, даже для разных компонентов (это означает, что Component1 может создать сеанс с ключом «эксперт-ROCKS», а Component2 может использовать тот же сеанс). Если указан ключ, создаваемый сеанс должен быть удален путем вызова Dispose (), как было сделано в примере выше. Key: This creates a keyed session that can be looked up and reused, even across components (meaning that Component1 can create a session with key «SME-ROCKS,» and Component2 can use that same session).If a key is provided, the session that is created must be disposed of by calling dispose() as was done in the example above. Сеанс не следует хранить без удаления в течение более чем 5 минут. A session should not be kept without being disposed of for more than 5 minutes.
Без ключей: Для сеанса будет автоматически создан ключ. Keyless: A key will automatically be created for the session. Этот сеанс будет удален автоматически через 3 минуты. This session with be disposed of automatically after 3 minutes. Использование ключа без ключей позволяет вашему расширению повторно использовать любое пространство выполнения, которое уже доступно во время создания сеанса. Using keyless allows your extension to recycle the use of any Runspace that is already available at the time of creation of a session. Если пространство выполнения не доступно, то будет создано новое. If no Runspace is available than a new one will be created. Эта функция хорошо подходит для одноразовых вызовов, но многократное использование может повлиять на производительность. This functionality is good for one-off calls, but repeated use can affect performance. Создание сеанса занимает около 1 секунды, поэтому сеансы непрерывного повторного запуска могут привести к замедлению. A session takes approximately 1 second to create, so continuously recycling sessions can cause slowdowns.
В большинстве случаев создайте сеанс с ключом в ngOnInit() методе, а затем удалите его в ngOnDestroy() . In most situations, create a keyed session in the ngOnInit() method, and then dispose of it in ngOnDestroy() . Используйте этот шаблон, если в компоненте имеется несколько скриптов PowerShell, но базовый сеанс не используется совместно разными компонентами. Follow this pattern when there are multiple PowerShell scripts in a component but the underlying session IS NOT shared across components. Для достижения лучших результатов убедитесь, что создание сеанса осуществляется внутри компонентов, а не служб — это гарантирует, что время существования и очистки можно будет правильно управлять. For best results, make sure session creation is managed inside of components rather than services — this helps ensure that lifetime and cleanup can be managed properly.
Для достижения лучших результатов убедитесь, что создание сеанса осуществляется внутри компонентов, а не служб — это гарантирует, что время существования и очистки можно будет правильно управлять. For best results, make sure session creation is managed inside of components rather than services — this helps ensure that lifetime and cleanup can be managed properly.
Поток PowerShell PowerShell Stream
Если используется длительный сценарий и данные выводятся последовательно, поток PowerShell позволит обработать данные, не дожидаясь завершения скрипта. If you have a long running script and data is outputted progressively, a PowerShell stream will allow you to process the data without having to wait for the script to finish. Наблюдаемый далее () будет вызываться сразу после получения данных. The observable next() will be called as soon as data is received.
Долго выполняющиеся скрипты Long Running Scripts
При наличии долго выполняющегося скрипта, который вы хотите запустить в фоновом режиме, можно отправить рабочий элемент. If you have a long running script that you would like to run in the background, a work item can be submitted. Состояние сценария будет контролироваться шлюзом, а обновления состояния могут быть отправлены в уведомление. The state of the script will be tracked by the Gateway and updates to the status can be sent to a notification.
Чтобы показать ход выполнения, в написанный скрипт необходимо добавить запись о ходе выполнения. For progress to be shown, Write-Progress must be included in the script that you have written. Например: For example:
Параметры рабочего элемента WorkItem Options
function function | Описание Explanation |
---|---|
Submit () submit() | Отправляет рабочий элемент Submits the work item |
Субмитандваит () submitAndWait() | Отправка рабочего элемента и ожидание завершения его выполнения Submit the work item and wait for the completion of its execution |
Wait () wait() | Ожидание завершения существующего рабочего элемента Wait for existing work item to complete |
Query () query() | Запрос существующего рабочего элемента по идентификатору Query for an existing work item by id |
Find () find() | Поиск и существующий рабочий элемент по Таржетноденаме, ModuleName или typeId. Find and existing work item by the TargetNodeName, ModuleName, or typeId. |
API-интерфейсы пакетной службы PowerShell PowerShell Batch APIs
Если необходимо выполнить один и тот же скрипт на нескольких узлах, можно использовать сеанс PowerShell для пакетной службы. If you need to run the same script on multiple nodes, then a batch PowerShell session can be used. Например: For example: