Настройка скрипта PowerShell для автоматического выполнения

Используем скрытые возможности Windows. Windows 10 – это не только красивый интерфейс. С помощью утилиты PowerShell вы попадете в секретное «машинное отделение» ОС.

Через меню опытного пользователя

Самый быстрый способ открыть оснастку PowerShell — это воспользоваться контекстным меню кнопки Пуск.

  1. Нажмите правой клавишей на кнопку Пуск. Или воспользуйтесь сочетанием клавиш Win+X
  2. В появившемся меню выберите соответствующий пункт.

Что делать, если вместо этого здесь стоят ссылки на запуск Командной строки? Это легко исправить с помощью Параметров Windows.

  1. Нажмите на кнопку Пуск и выберите пункт Параметры (значок шестеренки слева)
  2. Перейдите в раздел Персонализация
  3. В левом столбце нажмите Панель задач и поставьте в режим «Вкл» переключатель «Заменить командную строку оболочкой Windows PowerShell в меню, которое появляется при щелчке правой кнопкой мыши по кнопке Пуск или при нажатии клавиш Windows+X«.

Теперь нужные пункты появятся в меню опытного пользователя.

Как и почему Windows & PowerShell предотвращают выполнение скриптов.

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

Get-ChildItem «$ env: SystemDrive \» -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue

НЕ запускайте вышеуказанную команду!

Это просто проходит через файловую систему и удаляет все, что может. Интересно, что это может не сделать систему неработоспособной так быстро, как вы думаете — даже при запуске из сеанса с повышенными правами. Но если кто-то позвонит вам после запуска этого скрипта, потому что он вдруг не сможет найти свои файлы или запустить некоторые программы, «выключение и повторное включение», вероятно, просто приведет их в Windows Startup Repair, где им скажут, что есть ничего, что можно сделать, чтобы решить проблему. Что может быть хуже, вместо того, чтобы получить скрипт, который просто разрушает их файловую систему, ваш друг может быть обманут, запустив тот, который загружает и устанавливает кейлоггер или службу удаленного доступа. Тогда, вместо того, чтобы задавать вам вопросы о Startup Repair, они могут в конечном итоге задать полиции несколько вопросов о банковском мошенничестве!

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

  • PowerShell не разрешает выполнение внешнего скрипта по умолчанию. Параметр ExecutionPolicy в PowerShell предотвращает выполнение внешних сценариев по умолчанию во всех версиях Windows. В некоторых версиях Windows по умолчанию выполнение сценариев вообще не разрешено. Мы показали вам, как изменить этот параметр в разделе Как разрешить выполнение сценариев PowerShell в Windows 7 , но здесь мы также рассмотрим его на нескольких уровнях.
  • PowerShell не связан с расширением файла .PS1 по умолчанию. Первоначально мы обсуждали это в нашей серии PowerShell Geek School . Windows устанавливает действие по умолчанию для файлов .PS1, чтобы открыть их в блокноте, а не отправлять их в интерпретатор команд PowerShell. Это делается для того, чтобы напрямую предотвратить случайное выполнение вредоносных скриптов, когда они просто дважды щелкаются мышью.
  • Некоторые сценарии PowerShell не будут работать без прав администратора. Даже работая с учетной записью уровня администратора, вам все равно нужно пройти через Контроль учетных записей (UAC) для выполнения определенных действий. Для инструментов командной строки это может быть немного громоздко, если не сказать больше. Мы не хотим отключать UAC , но все-таки приятно, когда мы можем сделать его немного проще.

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

Отладка сценариев

Break All

Break All (прервать всё) — очень полезная останавливающая работающий скрипт функция, дающая возможность перейти в отладчик и узнать как работает этот скрипт и каково текущее состояние переменных или других элементов. Поддержка была включена для консоли Windows PowerShell и ISE.

Чтобы использовать отладчик в сеансе консоли, нажмите Ctrl+Break

В Windows PowerShell ISE можно нажать Ctrl+B или, щёлкнуть в меню «Отладка» и выбрать команду «Break All».

Удалённое редактирование

В текущей Windows PowerShell ISE можно открывать и редактировать файл напрямую в удалённом сеансе Windows PowerShell. С помощью новой команды «PSEdit», вы можете непосредственно редактировать файлы как локально, так и в удалённых сеансах.

Следующий код показывает пример в действии:

[Cloud01]: PS C:\> PSEdit C:\WinDemo\

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

Удалённая отладка

Расширяя возможности удалённого редактирования, вы теперь можете отлаживать запущенный на удалённом сеансе с ISE скрипт.

Командлет Set-PsBreakpoint задаёт в коде точку останова, а затем можно использовать командлет Write-Debug и вывести полезную для использования в ваших сценариях, если вы сталкиваетесь с точкой останова, информацию. В этот момент вас переместит в отладчик, где потребуется посмотреть на имеющуюся информацию и выполнить некоторую дополнительную работу. Рисунок ниже показывает эту операцию.

Пример кода удалённой отладки в Windows Powershell ISE

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

Предупреждение об останове в удалённом сеансе

Не все удалённые сеансы будут поддерживать сеанс удалённой отладки, но при подключении к удалённому сеансу с помощью командлета Connect-PSSession, вы увидите результат, показанный на рисунке ниже. Вывод также позволяет узнать её доступность.

Доступность удалённой отладки

Если удалённая отладка доступна, вы можете подключиться к сеансу с помощью командлета Enter-PSSession, который подключит вас непосредственно к отладчику.

Удалённый отладчик в действии

Отладка фонового задания

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

Теперь, в Server 2016, Windows PowerShell вводит новый командлет Debug-Job, который даёт вам возможность отладить эти фоновые задания более эффективно. Следующий рисунок показывает использование этого командлета. Обратите внимание на то, как Debug-Job показывает вам линию и характеристики прерывания фоновой работы.

Командлет Debug-Job, выводящий сообщение об ошибке в фоновом задании

Чтобы добраться до этого состояния останова, можно воспользоваться тем же командлетом Set-PSBreakPoint или Wait-Debugger. Они используются для «приостановки» сценария и ввода отладчика. Вы можете ввести эти командлеты в свой скрипт, а затем проверить состояние задания. Так вы узнаете, столкнулся ли он с точкой останова и готова ли отладка. Рисунок ниже показывает пример этого.

Состояние фонового задания

Отладка Runspaces

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

Подробнее. Больше информации о Runspaces и его использовании на -use-of-powershell- runspaces-part-1/.

Следующий рисунок отображает создание Runspaces.

Создание Runspaces

Для отладки Runspaces вам необходимо получить его «ID», рисунок ниже показывает доступные runspaces, а затем ввести сеанс отладки с помощью командлета Debug-Runspace.

Отладка runspace

Первый runspace, ID 1, всегда исходный сеанс Windows PowerShell, в котором вы находитесь. Для более глубокого изучения runspacees в вашей среде, используйте предыдущие ссылки.

Команды PowerShell, которые помогут пользователю сделать больше

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

Мы рассмотрим командлеты , которые могут выполнять следующие действия:

  1. Запустите приложение UWP.
  2. Получить справку о любом командлете.
  3. Получите похожие команды.
  4. Найти определенный файл.
  5. Прочитайте содержимое файла.
  6. Найти информацию обо всех услугах на компьютере.
  7. Найти информацию обо всех процессах на компьютере.
  8. Установка политики выполнения.
  9. Скопируйте файл или каталог.
  10. Удалить файл или каталог.

1] Запустите приложение UWP

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

Start-Process "ms-settings:

" Команда просто для запуска приложения Windows Настройки UWP. Вы можете узнать больше о других URI для других приложений UWP здесь на

2] Получите справку о любом командлете

Если вы когда-либо не понимаете, какую команду вы должны использовать для выполнения определенной задачи. Или то, что делает конкретный командлет, вам не нужно беспокоиться. Вы можете просто использовать командлет Get-Help, чтобы сделать это. Вы можете использовать его следующими способами:

Get-Help Получить помощь Get-Help -Full Get-Help -Example Get-Help *

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

3] Получить похожие команды

Чтобы найти команды аналогичного типа или содержащие в себе определенную фразу, вы можете использовать командлет Get-Command . Однако в нем не перечислен каждый командлет в PowerShell, поэтому вы используете некоторые конкретные фильтры. Вы можете использовать следующие команды:

Get-Command -Name Get-Command -CommandType

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

4] Поиск определенного файла

Если вам нужно найти определенный файл или каталог в определенном месте, вы можете использовать командлет Get-Item . Вы можете использовать его как

Get-Item

перечислить содержимое конкретного пути.

5] Прочитайте содержимое файла

Если вам нужно прочитать содержимое файла, вы можете использовать команду Get-Content как

Get-Content

6] Прочтите информацию обо всех службах на компьютере .

Вы можете использовать командлет Get-Service , чтобы перечислить все службы, запущенные или остановленные на вашем компьютере. Кроме того, вы можете использовать следующие связанные командлеты для выполнения их соответствующих функций:

Start-Service Стоп-Service Suspend-Service Resume-Service Рестарт-Сервис

7] Читайте информацию обо всех процессах на компьютере

Подобно командлету Get-Service, вы можете использовать командлет Get-Process , чтобы вывести список всех процессов, запущенных на вашем компьютере.В качестве альтернативы вы можете использовать следующие связанные командлеты для выполнения соответствующих функций:

Запуск процесса Stop-Process Служба ожидания

8] Настройка политики выполнения

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

Set-ExecutionPolicy Неограниченный Set-ExecutionPolicy Все подписано Set-ExecutionPolicy Удаленная подпись Set-ExecutionPolicy Restricted

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

9] Скопируйте файл или каталог

Пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета

Copy-Item "E: \ " -Destination "D: \

" 10] Удалить файл или каталог

Подобно командлету Copy-Item, пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета

Remove-Item "E: \

" У вас есть другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.

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

Кроме того, вы можете использовать консоль PowerShell ISE для написания сценариев в Windows 10.

Интегрированная среда сценариев — сложный инструмент, но вы можете начать, используя следующие шаги:

  1. Откройте Пуск.
  2. Найдите Windows PowerShell ISE, щелкните правой кнопкой мыши и выберите параметр «Запуск от имени администратора».
  3. Среда запустится с пустым файлом .ps1, где вы можете создать или вставить скрипт, который хотите запустить. Например: Write-Host «Congratulations! Your first script executed successfully»
  4. Нажмите меню Файл.
  5. Нажмите «Сохранить».
  6. Введите имя для сценария. Например, first_
  7. Нажмите кнопку Сохранить.

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

Запустить Скрипт Вручную Метод 2

Кроме того, если вы не хотите создавать пакетный файл для каждого из ваших сценариев PowerShell, вы можете изменить поведение сценария PowerShell по умолчанию с Edit на Run, что позволит вам дважды щелкнуть файлы .ps1 для их запуска.

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

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

Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy RemoteSigned -Force' -Verb RunAs

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

Используем справку

Никому не нужно учить команды PowerShell наизусть. Достаточно знать лишь основные — все остальное можно проверить во внутренней справке. Самый простой способ ее вызвать — это команда «get-help». Но все же придется добавить дополнительные сведения, например, название командлета (Cmdlet) — одной из встроенных команд PowerShell.

К примеру, «get-help clear-host» предоставляет принципиальные указания к этому командлету. С помощью команды «get-help clear-host –full» вы узнаете, каким параметром можно дополнить командлет. Обязательно попробуйте заменить «-full» на «-online», чтобы получить «get-help clearhost –online».

В ответ на это откроется браузер и перенаправит вас на страницу Technet от  Microsoft на немецком языке. Здесь вы узнаете альтернативное имя «clear-host», а именно «cls». Ветераны MSDOS должны узнать эту команду, поскольку она до сих пор выполняет ту же задачу: удаляет любые записи с экрана.

Запуск скриптов

Создавать сценарии можно в любом текстовом редакторе (лучше остановиться на Win, Notepad++ или подобному, с поддержкой синтаксиса или проверки) либо в программе PowerShell ISE.

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

Предположим, что свой первый скрипт вы написали (это получение перечня запущенных процессов), сохранили через меню «Файл», и его нужно запустить. Делается это тремя путями:

1 Прописываем полный путь к скрипту в PowerShell (или ISE);

Рис. 11 – Запуск первого скрипта путём прописывания пути к нему

2 Через контекстное меню файла ps1;

Рис. 12 – Запуск сценария через его контекстное меню

3 Открываем сценарий в PowerShell ISE и жмём F

Рис. 13 – Запуск скриптов из окна PowerShell ISE

Важно, чтобы в пути к файлу отсутствовали пробелы!

PowerShell – мощное средство для упрощения выполнения рутинных операций в Windows 7, Server 2008 и более новых

Важное достоинство PowerShell – скрипты и наличие версии программы с графическим интерфейсом PS ISE. Команды в ней представлены в виде командлетов, что сделает возможным ознакомление с оболочкой и понимание смысла каждой команды

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

Как запустить скрипт PowerShell с помощью ярлыка?

Осуществить такую задачу можно двумя способами:

  1. Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
  2. Создать ярлык на PowerShell, который можно найти в папке c:WindowsSystem32WindowsPowerShellv и в свойствах ярлыка в поле “Объект” дописать необходимые параметры.

Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.

Скриптовый язык PowerShell – довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом ????

Работа с фоновыми заданиями

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

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Adblock
detector