powershell скрипты для начинающих

Руководство по Windows PowerShell для начинающих

Руководство по Windows PowerShell для начинающих

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

PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий широкие возможности для конфигурирования операционных систем семейства MS Windows. Он предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов.

Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню. ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.

powershell скрипты для начинающих

Среда разработки Windows PowerShell ISE

Написание и запуск скриптов

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy :

powershell скрипты для начинающих

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

Командлеты

Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:

Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category. Запомните эту команду — она крайне важна для тех, кто изучает PowerShell с нуля, так как помогает быстрее начать ориентироваться в его возможностях.

powershell скрипты для начинающих

Результат выполнения команды Get-Help-Category

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

Параметры

Источник

Powershell скрипты

Доброго времени суток дорогие читатели. В данной статье мы познакомимся с основами Powershell. Данный язык программирования используется во всех ОС Microsoft начиная с Windows XP SP3. Писать Powershell скрипты должен уметь каждый уважающий себя системный администратор windows.

Все команды в Powershell как правило используются в форме командлетов. Все командлеты это специализированные классы .NET Framework и .NET Core (используется в PowerShell Core 6 и выше).

Запуск Powershell

На примере Windows 10 Powershell можно запустить просто нажав правой кнопкой мыши на меню пуск.

powershell скрипты для начинающих

Также нижняя строчка позволяет запустить Powershell с повышенными правами администратора.

Еще можно воспользоваться поиском в WIndows 10 и ввести название powershell

powershell скрипты для начинающих

Как видно на картинке выше нашелся не только Powershell но и Powershell ISE. Консоль powershell удобна если требуется запустить последовательно не больше одной команды. Либо несколько команд в конвейере. Однако в случае написания полноценных скриптов лучше использовать Powershell ISE. Это бесплатная среда разработки сценариев на языке Powershell поставляется вместе с ОС Windows.

Сразу после запуска консоли рекомендую запустить командлет Get-Help – встроенная справка по всем командлетам, аналог man в Linux.

Видим что консоль предлагает обновить встроенную помощь. Нажимаем Y и соглашаемся.

Командлеты

Командлеты не чувствительны к регистру. Написать Get или get не важно, powershell воспримет эти команды одинаково.

Чтобы получить список всех доступных командлетов необходимо использовать Get-Command

Для получения справки по любому командлету напишите Get-Help имя-комндлета. Например

powershell скрипты для начинающих

Давайте представим что нам необходимо вывести список командлетов для управления процессами. Воспользуемся Get-Command и укажем ему параметры для более точного поиска.

И вот мы видим список командлетов позволяющих управлять процессами: Get-Process – список всех запущенных процессов, Start-Process – запустить указанный процесс, Stop-Process– остановить указанный процесс, Wait-Process – ожидать указанный процесс. Как видно из названий командлетов можно легко понять для чего каждый служит.

Используя командлет Get-Help можно получить справку по любому командлету.

Давайте выведем список процессов с именем WhatsApp

Мы вывели все процессы с именем WhatsApp и добавили в вывод дополнительный параметр -IncludeUserName, что позволило нам увидеть кем запущен процесс.

Алиасы

Алиасы в Powershell это по сути более короткие названия командлетов. Т.е. любому командлету можно присвоить свое короткое имя (alias). Например алиасом для командлета Get-Process является gps. Согласитесь куда проще и быстрее написать gps чем Get-Process.

Список всех alias можно получить используя командлет Get-Alias

Как видно из списка для alias использованы аналогичные по значению команды из Linux: ls, man, mount, md, kill и т.п. Видимо чтобы линуксоиду было по привычнее 🙂 Можно создать свой alias используя командлет New-Alias

Конвейер

Конвейер используется для передачи выходных данных командлета идущего вначале во входные данные командлета следующего за ним. Ничего непонятно? 🙂 Давайте на примерах, так всегда яснее.

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

Как по мне многовато лишних столбцов. Мне эта информация не нужна, поэтому я выберу только нужные данные. Для таких целей служит командлет Select-Object. Давайте используем его в конвейере.

Как вы уже наверно догадались конвейер обозначается знаком | и идет сразу следом за командлетом. И так данные по конвейеру можно передавать и дальше другим командлетам. Итак я передал выходные данные (список запущенных процессов) на вход командлета Select-Object. Который в свою очередь выбрал данные по 3 столбцам ID, CPU, ProcessName. Теперь можно передать эти данные дальше. Например выгрузить в текстовый файл

Просто не правда ли? У нас конвейер из трех командлетов, на выходе которого получаем текстовый файл со списком запущенных процессов и необходимой информацией по ним.

Структура объектов

В Powershell объекты играют самую важную роль. От типа объекта зависит что именно с ним можно сделать. Узнать тип объекта и вывести список всех его элементов позволяет команда Get-Member

Вот далеко не полный список элементов командлета Get-Process. В данному случае тип данных это System.Diagnostics.Process

Давайте посмотрим тип данных у новой переменной

В данном случае тип данных System.String т.е. строка. Что вполне логично. А теперь посмотрите что можно сделать с этой строкой с учетом указанных выше параметров.

Как видно на картинке выше мы заключаем нашу тестовую переменную $new в скобки и после них пишем точку и указываем метод. В примере я использовал три метода:

Это всего лишь небольшой пример что можно сделать с параметрами объекта. Чаще используйте Get-Member и вы откроете для себя безграничные возможности манипуляции над объектами.

Скрипты Powershell

В самом начале статьи указал на встроенный инструмент Powershell ISE. Давайте запустим его и создадим свой первый скрипт. Кстати скрипты сохраняются в файлах с расширением ps1

Скрипт будет запускать блокнот, далее выполняется проверка если блокнот запущен выводится сообщение об этом и после блокнот закрывается. Если блокнот не запущен то выводится соответствующее сообщение об этом. На самом деле блокнот будет всегда запущен, т.к. мы вначале скрипта написали Start-Process notepad

В этом скрипте я использовал цикл if else. О циклах будет подробнее в следующей статье. Итак давайте сохраним скрипт и выполним его.

В ответ мы получим такую ошибку:

Все верно, изначально в WIndows запрещено выполнять скрипты Powershell. Это сделано для повышения безопасности системы. Для включения возможности запуска скриптов Powershell необходимо запустить Powershell от Администратора и ввести командлет Set-ExecutionPolicy с одним из параметров:

Если вы полностью уверены в запускаемых скриптах можете поставить Unrestricted. Давайте так и сделаем

Будет предупреждение по безопасности, соглашаемся нажав Y

Можем посмотреть текущую настройку политики безопасности при помощи командлета Get-ExecutionPolicy

В данной статье мы рассмотрели основы чтобы подготовиться писать скрипты Powershell. В следующих статьях мы более подробно изучим циклы, массивы, функции, работу со строками и много другое. Кстати вот раздел посвященный Powershell. Там много всего интересного 😉

Источник

7 скриптов для Windows, которые помогут сэкономить время

powershell скрипты для начинающих

powershell скрипты для начинающих

powershell скрипты для начинающих

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

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

Удаляем ненужное

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

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Названия для замены указаны в * *.

Переименовываем группу файлов

Ищем файлы

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

Справка

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Где вместо *CMDLET* вставьте любую интересующую команду.

powershell скрипты для начинающих

Находим данные

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

Архитектура процессора удалённого компьютера:

[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())

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

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

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

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

powershell скрипты для начинающих

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

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:

Удаляем ненужное

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

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Названия для замены указаны в * *.

Переименовываем группу файлов

Ищем файлы

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

Справка

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Где вместо *CMDLET* вставьте любую интересующую команду.

powershell скрипты для начинающих

Находим данные

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

Архитектура процессора удалённого компьютера:

[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())

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

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

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

Источник

Топ 7 Powershell командлетов для новичков

Наверное, все слышали о PowerShell, но наверняка не всем довелось с ним работать. Для тех, кто только начинает прокладывать свой путь в дебри PowerShell, мы приводим перевод поста, вышедшего на портале 4sysops.com. В нем рассказано о 7 командах, которые помогут тем, кто только начал работать с PowerShell. За подробностями – добро пожаловать под кат.

GET-HELP

Самый первый и самый главный командлет PowerShell – вызов справки. С помощью командлета Get-Help можно проверить синтаксис, посмотреть примеры использования и детальное описание параметров любого PowerShell командлета. Этот командлет примечателен тем, что вы просто можете набрать Get-Help Services, чтобы получить список всех командлетов, которые подходят для работы со службами.
Пример:

powershell скрипты для начинающих

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

Вы получаете всю информацию о командлете Get-Service (будет рассмотрен ниже).
powershell скрипты для начинающих

GET-CONTENT

Чтение содержимого файлов – наиболее частое требование для новичков, которые пытаются выучить PowerShell. Процедура чтения файлов с PowerShell упрощается. Даже неспециалист может читать содержимое файла, просто передав его в командлет Get-Content.
Пример.

powershell скрипты для начинающих

Необходимо больше информации о командлете? Воспользуйтесь Get-Help:

GET-SERVICE

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

powershell скрипты для начинающих
Здесь мы запросили информацию о двух службах wwansvc и spooler
Выводится таблица со статусом службы, ее именем и отображаемым именем.
Мы можем видеть что служба spooler запущена, а wwansvc остановлена

STOP-SERVICE И START-SERVICE

Запуск и остановка служб – достаточно важный момент в работе администратора Windows. В PowerShell имеются встроенные командлеты, которые упрощают работу администратора, не требуя открытия консоли MMC. Используя эти командлеты Вы можете останавливать/запускать службы как на локальных, так и на удаленных компьютерах.
Примеры:
Запуск/остановка службы на локальном компьютере (на примере службы spooler):

Запуск/остановка службы на удаленном компьютере (spooler):

GET-PROCESS

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

powershell скрипты для начинающих

Введите следующий командлет для получения подробной информации о запущенных процессах

Получение информации о процессах, запущенных на удаленном компьютере:

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

STOP-PROCESS

Этот командлет остановливает процесс на локальном или удаленном компьютере. Он берет имя или ID процесса и завершает этот процесс. Это полезно в тех случаях, когда приложение не отвечает.
Пример:
Остановить процесс с ID 22608 на локальном компьютере:

Остановить все процессы Excel на локальном компьютере:

Источник

Что такое Windows PowerShell и с чем его едят? Часть 1: основные возможности

Исторически утилиты командной строки в Unix-системах развиты лучше чем в Windows, однако с появлением нового решения ситуация изменилась.

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

powershell скрипты для начинающих

Основные возможности

Windows PowerShell позволяет:

Оболочка и среда разработки

Существует Windows PowerShell в двух ипостасях: помимо эмулятора консоли с командной оболочкой есть интегрированная среда сценариев (Integrated Scripting Environment — ISE). Чтобы получить доступ к интерфейсу командной строки достаточно выбрать соответствующий ярлык в меню Windows или запустить powershell.exe из меню «Выполнить». На экране появится синее окошко, заметно отличающееся по возможностям от допотопного cmd.exe. Там есть автодополнение и другие фишки, привычные пользователям командных оболочек для Unix-систем.

powershell скрипты для начинающих

Для работы с оболочкой нужно запомнить некоторые сочетания клавиш:

powershell скрипты для начинающих

Windows PowerShell ISE является полноценной средой разработки с поддерживающим вкладки и подсветку синтаксиса редактором кода, конструктором команд, встроенным отладчиком и другими программистскими радостями. Если в редакторе среды разработки после имени команды написать знак дефис, вы получите в выпадающем списке все доступные параметры с указанием типа. Запустить PowerShell ISE можно либо через ярлык из системного меню, либо с помощью исполняемого файла powershell_ise.exe.

powershell скрипты для начинающих

Командлеты

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

Add — добавить;
Clear — очистить;
Enable — включить;
Disable — выключить;
New — создать;
Remove — удалить;
Set — задать;
Start — запустить;
Stop — остановить;
Export — экспортировать;
Import — импортировать.

Есть системные, пользовательские и опциональные командлеты: в результате выполнения все они возвращают объект или массив объектов. К регистру они не чувствительны, т.е. с точки зрения интерпретатора команд нет разницы между Get-Help и get-help. Для разделения используется символ ‘;’, но ставить его обязательно только если в одной строке выполняется несколько командлетов.

Командлеты Windows PowerShell группируются в модули (NetTCPIP, Hyper-V и т.д.), а для поиска по объекту и действию существует командлет Get-Command. Показать справку по нему можно так:

powershell скрипты для начинающих

Справка в Windows PowerShell обновляется командлетом Update-Help. Если строка команд получается слишком длинной, аргументы командлета можно перенести на следующую, написав служебный символ ‘`’ и нажав Enter — просто закончить писать команду на одной строке и продолжить на другой не получится.

Ниже приведем несколько примеров распространенных командлетов:

Get-Process — показать запущенные в системе процессы;
Get-Service — показать службы и их статус;
Get-Content — вывести содержимое файла.

Для часто используемых командлетов и внешних утилит в Windows PowerShell есть короткие синонимы — алиасы (от англ. Alias). Например, dir — алиас Get-ChildItem. Есть в списке синонимов и аналоги команд из Unix-систем (ls, ps и т.д.), а командлет Get-Help вызывается командой help. Полный список синонимов можно посмотреть с помощью командлета Get-Alias:

powershell скрипты для начинающих

Сценарии, функции, модули и язык PowerShell

Restricted — запуск сценариев запрещен (по умолчанию);
AllSigned — разрешен только запуск подписанных доверенным разработчиком сценариев;
RemoteSigned — разрешен запуск подписанных и собственных сценариев;
Unrestricted — разрешен запуск любых сценариев.

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

powershell скрипты для начинающих

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

Пишутся скрипты на объектно-ориентированном языке программирования, команды которого именуются по тому же принципу, что и рассмотренные ранее командлеты: «Действие-Объект» («Глагол-Существительное»). Основное его предназначение — автоматизация задач администрирования, но это полноценный интерпретируемый язык, в котором есть все необходимые конструкции: условный переход, циклы, переменные, массивы, объекты, обработка ошибок и т.д. Для написания сценариев годится любой текстовый редактор, но удобнее всего запустить Windows PowerShell ISE.

Конвейеры

В последнем примере мы применили знакомую пользователям оболочек для Unix-систем конструкцию. В Windows PowerShell вертикальная черта также позволяет передать выход одной команды на вход другой, но в реализации конвейера есть и существенная разница: речь здесь идет уже не о наборе символов или каком-то тексте. Встроенные командлеты или пользовательские функции возвращают объекты или массивы объектов, а также могут получать их на входе. Как в Bourne shell и его многочисленных последователях, в PowerShell с помощью конвейера упрощается выполнение сложных задач.

Простейший пример конвейера выглядит так:

powershell скрипты для начинающих

Сначала выполняется командлет Get-Service, а потом все полученные им службы передаются на сортировку по свойству Status командлету Sort-Object. В какой именно аргумент передается результат работы предыдущего участка конвейера, зависит от его типа — обычно это InputObject. Подробнее этот вопрос будет рассматриваться в посвященной языку программирования PowerShell статье.

При желании цепочку можно продолжить и передать результат работы Sort-Object еще одному командлету (выполняться они будут слева направо). Кстати, пользователям Windows доступна и привычная всем юниксоидам конструкция для постраничного вывода:

Запуск задач в фоновом режиме

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

Start-Job — запуск фоновой задачи;
Stop-Job — остановка фоновой задачи;
Get-Job — просмотр списка фоновых задач;
Receive-Job — просмотр результата выполнения фоновой задачи;
Remove-Job — удаление фоновой задачи;
Wait-Job — перевод фоновой задачи обратно в консоль.

Для запуска фоновой задачи мы используем командлет Start-Job и в фигурных скобках указываем команду или набор команд:

powershell скрипты для начинающих

Фоновыми задачами в Windows PowerShell можно манипулировать, зная их имена. Для начала научимся их отображать:

powershell скрипты для начинающих

Теперь покажем результат работы задания Job1:

powershell скрипты для начинающих

Всё довольно просто.

Удаленное выполнение команд

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

Версии PowerShell

powershell скрипты для начинающих

Также можно воспользоваться командлетом:

powershell скрипты для начинающих

То же самое делается и с помощью командлета Get-Host. На самом деле вариантов множество, но для их применения нужно изучить язык программирования PowerShell, чем мы и займемся в следующей статье.

Итоги

Источник

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

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