Автоматическое завершение команд Windows PowerShell
Находясь в оболочке Windows PowerShell, можно ввести часть какой-либо команды, нажать клавишу <tab> и система попытается сама дописать полное имя этой команды. Автоматическое завершение команд срабатывает для имен файлов и путей файловых систем до первого найденного совпадения. При повторном нажатии клавиши <tab> выполняется циклический переход по имеющимся возможностям выбора.
В оболочке Windows PowerShell также реализована возможность автоматического завершения путей файловой системы на основании шаблонных символов: ? (любой один символ) и * (любое количество произвольных символов). Например:
После нажатия на клавишу путь будет преобразован в …
В оболочке Windows PowerShell имеется возможность автоматического завершения имен командлетов и их параметров. Если ввести первую часть имени (глагол) командлета и дефис, после этого нажать клавишу <tab>, то система выдаст имя первого подходящего командлета. Аналогичным образом срабатывает автозавершение и для параметров командлета, например введя имя командлета и дефис, после чего нажать <tab>, то автоматически будет подставлено имя первого подходящего параметра для этого командлета.
Windows PowerShell позволяет автоматически завершать имена переменных. И наконец Windows PowerShell поддерживает автоматическое завершение имён свойств и методов объектов. Например:
$a='test't' $a.len <tab> $a.Length
Система подставила свойство Length, имеющееся у символьных переменных. Если подставляется имя метода (функции), а не свойства, то после его имени автоматически ставится круглая скобка. Например:
$a.sub <tab> $a.Substring(
Теперь можно вводить параметры метода (функции)…
Классные штуки, которые вы можете сделать с PowerShell
Давайте начнем с быстрой демонстрации широты и глубины PowerShell. Это просто произвольный список, чтобы подогреть аппетит. Он не является исчерпывающим, и это не обязательно самые впечатляющие вещи, которые вы можете сделать с PowerShell.
Воспроизвести видео
Вот классная строчка для воспроизведения видеофайлов (или любых медиа-файлов):
Он откроет окно медиаплеера и сразу начнет проигрывать ваше видео.
Здесь Строки
PowerShell имеет одно из самых читаемых и визуально привлекательных решений для многострочных строк — AKA «here strings». Вы просто начинаете с и заканчиваете
Обратите внимание, что начальный и конечный маркеры должны находиться на отдельной строке, отдельно от промежуточного содержимого. Вот пример:
Генерировать случайные числа
Выберите случайное число от 1 до 100:
Это простой конвейер. Левая сторона может генерировать все целые числа от 1 до 50 (включительно), а затем она передается в командлет Get-Random, который выбирает одно из них.
Работа с буфером обмена
PowerShell полностью поддерживает буфер обмена. Вы можете получать и устанавливать объекты разных форматов. Очевидно, что простой текст возможен, но вы также можете работать с изображениями, HTML, RTF и даже файлами.
Здесь я выбираю некоторые файлы в проводнике, а затем получаю их из буфера обмена в PowerShell:
Показать индикатор выполнения
PowerShell может отображать хороший индикатор выполнения при длительных операциях. Вот пример, который рекурсивно вычисляет общий размер всех файлов в текущем каталоге:
Команды PowerShell
Вот 25 основных команд PowerShell:
Set-Location | cd, chdir, sl | Устанавливает текущее рабочее место в указанное место. |
Get-Content | кот, gc, тип | Получает содержимое элемента в указанном месте. |
Добавить контент | переменный ток | Добавляет содержимое к указанным элементам, например, добавляет слова в файл. |
Set-Content | Южная Каролина | Записывает или заменяет содержимое элемента новым содержимым. |
Copy-Item | копировать, cp, cpi | Копирует элемент из одного места в другое. |
Удалить объект | del, erase, rd, ri, rm, rmdir | Удаляет указанные элементы. |
Move-Item | ми, двигаться, мв | Перемещает элемент из одного места в другое. |
Set-Item | си | Изменяет значение элемента на значение, указанное в команде. |
New-Item | п | Создает новый предмет. |
Start-Job | sajb | Запускает фоновое задание Windows PowerShell. |
Compare-Object | сравнить, диф | Сравнивает два набора объектов. |
Group-Object | группа | Группирует объекты, содержащие одинаковое значение для указанных свойств. |
Invoke-WebRequest | завиток, IWR, Wget | Получает контент с веб-страницы в Интернете. |
Мера-объект | мера | Вычисляет числовые свойства объектов, а также символы, слова и строки в строковых объектах, таких как файлы… |
Resolve-Path | rvpa | Разрешает символы подстановки в пути и отображает содержимое пути. |
Резюме-Job | rujb | Возобновляет приостановленную работу |
Set-Variable | установить, св | Устанавливает значение переменной. Создает переменную, если переменная с запрошенным именем не существует. |
Show-Command | shcm | Создает команды Windows PowerShell в графическом окне команд. |
Сортировка-объект | Сортировать | Сортирует объекты по значениям свойств. |
Start-Service | sasv | Запускает одну или несколько остановленных служб. |
Запуск процесса | Соки, начало | Запускает один или несколько процессов на локальном компьютере. |
Приостановить-Job | sujb | Временно останавливает задания рабочего процесса. |
Wait-Job | WJB | Подавляет командную строку, пока одно или все фоновые задания Windows PowerShell, запущенные в сеансе, не будут… |
Where-Object | ?, где | Выбирает объекты из коллекции на основе значений их свойств. |
Write-Output | эхо, пиши | Посылает указанные объекты следующей команде в конвейер. Если команда является последней командой в конвейере,… |
Вот наша PDF-версия Шпаргалки PowerShell. Нажмите на изображение ниже, чтобы открыть PDF в отдельной вкладке браузера, которую вы можете сохранить и использовать в качестве краткого справочника..
Выполнение Get-SmbOpenFile на другом сервере
Этот командлет поддерживает удаленное выполнение через сессию CIM. Для того что бы это сделать нужно написать следующее:
Ключ -Credential необходим, если мы используем не привилегированную учетную запись и хотим исполнить команду под другой учеткой.
Мы можем использовать и командлеты PSRemoting — это команды двух типов:
- New-PSSession и Enter-PSSession — для подключения к удаленному компьютеру и работы на нем
- Invoke-Command — выполнение команды на удаленном компьютере
Если вы работаете в домене и являетесь администратором сервера, к которому пытаетесь подключиться, то у вас должны сработать команды:
Описание и возможности
Перед тем как предложить загрузить данную программу для вашей Десятки, давайте рассмотрим, какими функциями она отличается от обычной командной строки:
- поддерживается подсветка синтаксиса;
- мы можем работать с символическими или жесткими ссылками;
- возможно использование временных файлов;
- есть функция очистки корзины;
- поддерживается работа с архивами;
- перенос объектов между сессиями;
- установка и удаление программ;
- поиск файлов;
- управление пакетами.
Это далеко не все возможности программного обеспечения, о котором мы сегодня говорим. С дополнительными функциями Windows PowerShell вы будете знакомиться на практике если конечно, это вам понадобится.
Из меню опытных пользователей
Меню Power Users появляется на панели задач при нажатии Windows + X. Это простой способ получить доступ к множеству настроек, утилит и системных программ из одного меню.
Чтобы открыть PowerShell из этого меню, нажмите Windows + X, а затем нажмите «Windows PowerShell» или «Windows PowerShell (Admin)».
Обратите внимание, что после обновления Creators для Windows 10 PowerShell отображается в меню «Опытные пользователи» по умолчанию. Если вы его не видите, возможно, ваш компьютер не обновлен, или, возможно, вы заменили его на командную строку в меню «Настройки»
Теперь легко вернуться к отображению PowerShell в меню. Следуйте нашим инструкциям, но вместо этого включите параметр «Заменить командную строку Windows PowerShell».
СВЯЗАННЫЕ С: Как вернуть командную строку в меню Windows + X Power Users
Видео
How to Add Open PowerShell Here to the Right Click Menu for a Folder in Windows
Move the mouse cursor with Powershell !
*OUTDATED* Make Windows 10 Show ‘open Powershell window here’ and ‘Commamd window here’ on …
How to Add Powershell to Context Menu in Windows 10
How to launch PowerShell to the current folder on Windows 8
new windows,close, help,option powershell
How To Change Directory in Powershell | Change directory in Powershell #Powershell
Set Powershell to Run as Admin
Append Powershell to Shift + Right Click Menu with «open command window here» in Windows 7/8.1
Windows Powershell: Что это и как использовать? Основные команды ️️
Как запустить PowerShell из командной строки
При желании пользователь может запустить PowerShell из CMD.exe (командной строки Windows) в разных версиях операционной системы. Это системное средство поможет открыть аналогичное приложение на компьютере.
Запуск PowerShell из командной строки выполняется следующим образом:
- Необходимо запустить командую строку от имени администратора или просто открыть командную строку от имени пользователя.
- В окне интерпретатора командной строки введите команду «powershell» (без кавычек), а затем нажмите на клавишу «Enter».
- Оболочка PowerShell будет запущена в интерфейсе командной строки Windows.
В PowerShell запуск от имени администратора зависит от того, с какими правами вы запустили командную строку.
Запуск PowerShell через комбинацию клавиш
Одним из удобных методов запуска оболочки PowerShell, при очень частом использовании, является назначение для нее горячего сочетания клавиш, при нажатии которых вызывается оболочка. Делается, это очень просто. Откройте окно свойств PowerShell, на вкладке «Ярлык» найдите пункт «Быстрый вызов«, по умолчанию он имеет статус нет.
Выберите его и нажмите клавишу Shift или Ctrl, или CTRL+SHIFT, в результате чего у вас подставится конструкция для будущей комбинации и так же нажмите любую клавишу из буквенного диапазона, в моем примере получилось CTRL + SHFT + C. Именно такой комбинацией я буду вызывать свою оболочку PowerShell. Сохраняем настройки. Так же отмечу, что вы легко можете ее отменить или поменять на другую.
Пробую ввести комбинацию быстрого вызова CTRL + SHFT + C, как вижу все прекрасно работает.
Несколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идет действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
увидим что-то такое:
INFO
Если при наборе команды нажать Tab, то редактор дополнит команду — так же, как в консоли. Двойное нажатие на Tab выведет список подходящих команд.
Теперь можно завершить зависший процесс:
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
Можно просмотреть рекурсивно, правда уже чуть с более сложной логикой:
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Можно также выполнить
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через консоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепенно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
На PowerShell это будет выглядеть вот так:
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
В PowerShell это будет так:
Мап диска в bat:
И в PowerShell:
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласись, на корню рубит удобство и автоматизацию. Для выполнения команд удаленно, что нам и требуется, надо пользоваться специальными командлетами. К примеру, для подключения к удаленному компьютеру и перезапуску там спулера печати вводи
Более подробно читай тут.
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с , где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражений и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
Фоновое исполнение заданий
В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.
Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.
В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.
Например, давайте запустим какую-нибудь задачу (показать список служб) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб).
Запуск задачи в фоновом режиме
Start-Job {Get-Service}
1 |
Start-Job {Get-Service} |
Смотрим на список задач запущенных в фоновом режиме
Get-Job
1 |
Get-Job |
Отображаем результат работы задания Job1
Receive-Job Job1
1 |
Receive-Job Job1 |
Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).
Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.
Фоновое исполнение заданий
В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.
Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.
В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:
- Start-Job – запустить фоновую задачу;
- Stop-Job – остановить фоновую задачу
- Get-Job – посмотреть список фоновых задач;
- Receive-Job – посмотреть результат выполнения фоновой задачи;
- Remove-Job – удалить фоновую задачу;
- Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.
Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.
Например, давайте запустим какую-нибудь задачу (показать список служб) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб).
Запуск задачи в фоновом режиме
Start-Job {Get-Service}
Смотрим на список задач запущенных в фоновом режиме
Get-Job
Отображаем результат работы задания Job1
Receive-Job Job1
Как видим, у нас появилась задача со статусом «Completed», т.е. она уже выполнилась (просто Get-Service отрабатывает быстро).
Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора). В результате у нас отобразился список служб.
Как писать и запускать скрипты?
Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на .ps1 — именно такое расширение имеют файлы этой системной утилиты.
Писать скрипты в самом приложении можно так:
- Запустите его.
- Нажмите на пункт «Создать».
- Или кликните на «Файл», и в появившемся списке выберите «Создать».
- Напишите все команды, которые нужно выполнить, сохраните файл.
Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.
Запустить скрипт вы сможете таким образом:
- Зайдите в PowerShell от имени администратора.
- При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
- В этом случае e: — имя жёсткого диска, где находится файл.
- Жмите Enter.
Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.
Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.
Как перезапустить процесс Windows Explorer.exe
При использовании Windows 10 вы можете обнаружить, что рабочий стол Windows завис, и вы больше не можете использовать меню «Пуск», щелкать программы, перетаскивать файлы или переключаться между окнами. Когда это происходит, это может быть вызвано процессом Windows Explorer или Explorer.exe, имеющим проблемы, и обычно может быть исправлено путем его перезапуска.
Explorer.exe — исполняемый файл в операционных системах Windows, расположенный по адресу C:\Windows\explorer.exe. Когда Windows запускается и пользователь входит в систему, операционная система запускает процесс Explorer.exe, который отображает среду пользователя Windows, такую как рабочий стол, панель задач и меню «Пуск».
Чтобы перезапустить процесс Explorer.exe, вы можете выполнить три различных метода, которые мы описали ниже.
Способ 1. Перезапустите Windows Explorer.exe через диспетчер задач Windows 10.
Если вы используете Windows 10, самый простой способ перезапустить Explorer.exe — через диспетчер задач.
Чтобы перезапустить Explorer.exe в Windows 10, выполните следующие действия.
Откройте Диспетчер задач, нажав комбинацию клавиш Ctrl + Alt + Delete и выбрав Диспетчер задач или щелкнув правой кнопкой мыши на панели задач и выбрав Диспетчер задач . Как только откроется диспетчер задач, нажмите на опцию « Подробнее», как показано на рисунке ниже.
Когда отобразится полный список процессов, прокрутите вниз, пока не найдете процесс Windows Explorer . Затем щелкните правой кнопкой мыши процесс и выберите « Перезапустить», как показано ниже.
- Процесс Explorer.exe теперь будет прерван и автоматически перезапущен. Во время этого процесса вы увидите, что ваш рабочий стол ненадолго исчезнет, а затем снова появится.
- Теперь, когда проводник Windows был перезапущен, вы можете закрыть диспетчер задач.
Способ 2. Перезапустите Windows Explorer.exe из командной строки
Этот метод позволяет перезапустить процесс Explorer.exe непосредственно из командной строки. Этот метод работает в Windows 7, Windows 8 и Windows 10.
Чтобы перезапустить Explorer.exe из командной строки, выполните следующие действия.
Откройте командную строку Windows, нажав кнопку «Пуск», введите cmd , а затем щелкните появившийся результат поиска в командной строке .
Когда откроется командная строка, введите в командной строке жирный taskkill /F /IM explorer.exe & start explorer и нажмите клавишу ввода на клавиатуре. Эта команда завершит работу explorer.exe, а затем сразу же перезапустит процесс, чтобы вы снова увидели рабочий стол.
После того, как вы введете команду, вы увидите, что рабочий стол Windows на секунду исчезнет, а затем перезагрузится. Теперь вы можете закрыть командную строку Windows, поскольку процесс Explorer.exe был перезапущен.
Способ 3: выйдите из Explorer’а и перезапустите его через диспетчер задач
Если вы используете Windows 7 или любую другую версию Windows, вы также можете перезапустить процесс Explorer.exe, сначала завершив процесс в диспетчере задач, а затем снова запустив его из диалогового окна «Создать новую задачу».
Чтобы перезапустить explorer.exe, сначала остановив процесс, вы можете выполнить следующие шаги:
Откройте Диспетчер задач, нажав комбинацию клавиш Ctrl + Alt + Delete и выбрав Диспетчер задач или щелкнув правой кнопкой мыши на панели задач и выбрав Диспетчер задач . Открыв диспетчер задач, прокрутите список процессов, пока не найдете процесс explorer.exe, и щелкните его правой кнопкой мыши, как показано ниже. Когда откроется контекстное меню, нажмите на опцию Завершить процесс
Когда вы попытаетесь завершить процесс explorer.exe, он попросит вас подтвердить запрос. Далее нажмите кнопку Завершить процесс
Теперь вы увидите, что проводник исчезнет, и у вас останется пустой экран с диспетчером задач. В диспетчере задач щелкните меню « Файл» и выберите « Новая задача» («Выполнить …») .
Когда появится приглашение Создать новую задачу, введите explorer.exe в поле Открыть: и нажмите кнопку ОК
Теперь запустится процесс Explorer.exe, и вы снова увидите рабочий стол Windows. Теперь, когда процесс Explorer.exe запущен и вы видите рабочий стол, вы можете закрыть диспетчер задач.
Как запустить скрипт PowerShell
В PowerShell есть несколько режимов работы, которые определяют возможность запуска скриптов:
- Restricted / Ограниченный — режим по умолчанию, в нем запрещено выполнение скриптов, но можно использовать интерактивные команды.
- All Signed / Все подписанные — режим разрешает выполнение всех подписанных издателем скриптов.
- Remote Signed / Удаленные подписанные — режим разрешает выполнение локальных скриптов, но скачанные из интернета скрипты требуют наличия подписи.
- Unrestricted / Неограниченный — режим разрешает запуск всех скриптов без ограничений, включая скачанные из интернета скрипты без подписи.
По умолчанию, используется режим Restricted или «Ограниченный». Поэтому если вам нужно запустить скрипт, то предварительно нужно выполнить команду «Set-ExecutionPolicy RemoteSigned -Scope Process» и нажать на клавишу «Y» для подтверждения. Данная команда разрешит выполнение удаленно подписанных скриптов для текущего сеанса.
После выполнения данной команды вы сможете запускать скрипты просто введя в консоль их полный адрес. Например, на скриншоте внизу мы выполнили скрипт «c:\test.ps1».
Если вы хотите запустить скрипт из стандартной командной строки, то это можно сделать при помощи команды «powershell -executionpolicy RemoteSigned -file путь». Ниже мы приведем еще несколько вариантов запуска скриптов PowerShell, которые могут быть полезны в определенных ситуациях.
-
powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file <путь>
Запуск скрипта в фоновом режиме (параметр -WindowStyle Hidden). Если добавить параметр -NonInteractive, то скрипт не будет задавать никаких вопросов и выполнится без участия пользователя.
-
powershell -executionpolicy RemoteSigned -file <путь> param1 param2 «text param»
Запуск скрипта c параметрами. Как видно, параметры передаются точно также как и в случае запуска обычных программ.
Если же вы хотите навсегда разрешить запуск скриптов, то для этого нужно выполнить команду «Set-ExecutionPolicy RemoteSigned» и нажать на клавишу «Y» для подтверждения.
Но, если ваш скрипт был скачан из интернета, то описанного выше варианта может быть недостаточно. Для того чтобы полностью и навсегда отключить любые предупреждения при запуске скриптов используйте «Set-ExecutionPolicy Bypass».
Обратите внимание, постоянное разрешение на запуск скриптов подвергает ваш компьютер опасности, поэтому желательно использовать временные разрешения, которые работают до завершения сеанса
Запуск задач в фоновом режиме
Довольно часто бывает нужно запустить некую команду в фоне, чтобы не дожидаться результата ее выполнения в сессии оболочки. В Windows PowerShell есть несколько командлетов на такой случай: Start-Job — запуск фоновой задачи; Stop-Job — остановка фоновой задачи; Get-Job — просмотр списка фоновых задач; Receive-Job — просмотр результата выполнения фоновой задачи; Remove-Job — удаление фоновой задачи; Wait-Job — перевод фоновой задачи обратно в консоль.
Для запуска фоновой задачи мы используем командлет Start-Job и в фигурных скобках указываем команду или набор команд:
Start-Job {Get-Service}
Фоновыми задачами в Windows PowerShell можно манипулировать, зная их имена. Для начала научимся их отображать: Get-Job
Теперь покажем результат работы задания Job1: Receive-Job Job1 | more
Всё довольно просто.
Сценарии, функции, модули и язык PowerShell
Скрипты Windows PowerShell хранятся в виде обычных текстовых файлов с расширением .ps1. Запустить их двойным кликом нельзя: нужно правой кнопкой мыши вызвать контекстное меню и выбрать пункт «Запустить в PowerShell». Из консоли придется либо указать полный путь к скрипту, либо перейти в соответствующий каталог и написать имя файла. Запуск сценариев также ограничен системной политикой, а для проверки текущих настроек можно использовать командлет Get-ExecutionPolicy, который выдаст одно из следующих значений: Restricted — запуск сценариев запрещен (по умолчанию); AllSigned — разрешен только запуск подписанных доверенным разработчиком сценариев; RemoteSigned — разрешен запуск подписанных и собственных сценариев; Unrestricted — разрешен запуск любых сценариев.
У администратора есть два варианта действий. Наиболее безопасный предполагает подписание скриптов, но это довольно серьезное колдунство — мы будем разбираться с ним в следующих статьях. Сейчас пойдем по пути наименьшего сопротивления и поменяем политику:
Set-ExecutionPolicy RemoteSigned
PowerShell для этого придется запустить от имени администратора, хотя с помощью специального параметра можно изменить политику и для текущего пользователя.
Пишутся скрипты на объектно-ориентированном языке программирования, команды которого именуются по тому же принципу, что и рассмотренные ранее командлеты: «Действие-Объект» («Глагол-Существительное»). Основное его предназначение — автоматизация задач администрирования, но это полноценный интерпретируемый язык, в котором есть все необходимые конструкции: условный переход, циклы, переменные, массивы, объекты, обработка ошибок и т.д. Для написания сценариев годится любой текстовый редактор, но удобнее всего запустить Windows PowerShell ISE.
В скрипт можно передавать параметры, делать их обязательными, а также задавать значения по умолчанию. Кроме того Windows PowerShell позволяет создать функции и вызывать их точно так же, как и командлеты: для этого используется конструкция Function и фигурные скобки. Сценарий с функциями называется модулем и имеет расширение .psm1. Модули должны храниться в каталогах, определенных в переменных окружения PowerShell. Посмотреть их можно при помощи следующей команды:
Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize
Немного о PowerShell для Windows 10
Консоль PowerShell представляет собой средство для оптимизации работы операционной системы, обработки скриптов и выполнения команд. На данный момент среда отладки использует в качестве основного движка Net.Core, что обеспечивает быстрый доступ пользователей к удаленным системам.
PowerShell — главная среда по обработке команд
Возможности PowerShell:
- удаленный доступ к другим системам. Администратор может запустить выполнение сценариев в PowerShell с помощью команд на удаленной машине. При этом утилита предоставит пользователю подробный отчет о выполнении сценария и состоянии системы;
- работа в фоновом режиме. В PowerShell Windows 10 реализована функция последовательного вызова команд. Выполнение скриптов в фоновом режиме можно запустить на удаленной системе без дополнительных разрешений;
- группы последовательных транзакций. Разработчики программного обеспечения могут совершать последовательные команды с базой данных;
- конвейер. Пользователи могут последовательно вызвать несколько командлетов «BeginProcessing», «ProcessRecord» и «EndProcessing»;
- открытые модули. Администратор может выполнять сценарии в PowerShell и помещать исполняемый код в самостоятельный модуль. Код будет выполняться исключительно автономно, не влияя на окружение. Самостоятельный модуль может содержать в себе скрытие и открытые переменные;
- отладка скриптов. Пользователи могут при выполнении самостоятельного сценария поставить точки прерывания. Точку прерывания можно поставить при выполнении команд, когда идет запись переменных;
- новая среда выполнения скриптов. Встроенный модуль отладчика теперь имеет графический интерфейс для отображения команд. Новая среда поможет владельцам персональных компьютеров запустить несколько консолей отладки и с полной поддержкой юникода.
Запуск и отладка скриптов в Повер Шелл
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то момента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимать и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.
Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдавать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
Копирование файлов между сессиями
Copy-Item — копирование файлов на удаленный ПК. На целевой машине должна работать служба удаленного управления WinRM, которая конфигурируется одной командой:
Enable-PSRemoting
Для подключения к машине в доверенном домене больше ничего не требуется.
В рабочей группе надо на своем ПК добавить целевой компьютер в доверенные узлы по имени ПК или IP-адресу:
#добавить ПК в доверенные узлы Set-Item wsman:localhost\client\trustedhosts -value "192.168.1.113" #убрать ПК из доверенных узлов #Set-Item wsman:localhost\client\trustedhosts -value ""
Дальше вы создаете новую сессию, указывая имя пользователя для подключения к удаленному ПК, и вводите учетные данные. В созданную сессию можно копировать файлы.
$rs = New-PSSession -ComputerName 192.168.1.113 -Credential test-pc\vadim Copy-Item -Path "C:\temp\my.csv" -Destination "C:\temp\" -ToSession $rs