Powershell для начинающих: Основы Windows PowerShell для начинающих | Info-Comp.ru
Содержание
Руководство по Windows PowerShell для начинающих — conn.co.ua
PowerShell,Програмирование |
19.07.2019
PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий IT-профессионалам более широкие возможности для конфигурирования операционных систем семейства MS Windows. Проще говоря, это своего рода универсальный инструмент администрирования. В данной статье будут рассмотрены базовые приёмы написания скриптов на PowerShell, позволяющие простым путём автоматизировать управление Windows-окружением.
PowerShell предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов. Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню.
ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.
Написание и запуск скриптов
Скрипты сохраняются в виде файлов с расширением .ps1. Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».
Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy. Результатом будет одно из следующих значений:
- Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
- AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
- RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
- Unrestricted — можно запускать любые скрипты.
Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy.
Командлеты
Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:
- существуют системные, пользовательские и опциональные командлеты;
- результатом выполнения командлета будет объект или массив объектов;
- командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
- командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser, get-aduser и gEt-AdUsEr;
- в качестве разделителя используется символ ; .
Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:
- Get-Process — отобразить текущие процессы, запущенные на компьютере;
- Get-Service — отобразить список служб и их статус;
- Get-Content — отобразить содержимое указанного файла, например Get-Content C:\Windows\System32\drivers\etc\hosts.
При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category.
Также можно создавать и свои собственные командлеты.
Параметры
У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W. Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member. Например, Get-Process | Get-Member.
Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples.
Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help.
При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа #, а блок комментариев ограничивается комбинациями символов <# и #> в начале и в конце соответственно.
Конвейер
PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:
- GetService | SortObject -property Status — сортировка запущенных служб по статусу;
- “Hello World!” | Out-File C:\ps\test.txt — запись текста в файл.
Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:
Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname
Заключение
Итак, благодаря этому руководству у новичков появилось представление о том, что из себя представляет PowerShell. Также мы рассмотрели варианты изменения политики выполнения скриптов, что такое командлет, как они обмениваются данными с помощью конвейера и как получить свойства нужного объекта. Помните, что в случае затруднений можно воспользоваться командлетом Get-Help.
Источник
PowerShell – инструмент администратора
Александр Субботин, преподаватель УЦ АйТи Клауд
по направлению системное администрирование, сетевые технологии, безопасность сетей,
2022
Графический интуитивно понятный интерфейс сделал операционные системы Microsoft Windows популярными для миллионов пользователей во всем мире. Размещение графической подсистемы на уровень ядра позволило поднять производительность графических приложений, что делает Windows привлекательной для игр, обработки изображений и видео на домашних компьютерах и рабочих станциях предприятий.
Ситуация стала меняться с появлением серверных операционных систем Microsoft Windows. Графические утилиты комфортны для начинающих администраторов, но для управления серверными фермами с десятками серверами необходимы другие инструменты. Необходимы средства автоматизации как простых рутинных операций, так и сложных задач мониторинга и управления серверами в крупных компаниях.
Есть возможность создавать простые скрипты в виде пакетных файлов .bat или .cmd, содержащие последовательность команд командной строки Windows. Но возможности этого подхода весьма ограничены. С другой стороны, можно создавать мощные скрипты
на языках программирования VBScript или JScript. Этот подход требует для системных администраторов квалификации программиста.
В 2006 году компания Microsoft выпустила Windows PowerShell – новую оболочку командной строки и среду разработки и выполнения скриптов. В новом продукте удалось совместить широкие возможности языков программирования и простоту использования.
Командлеты
Основным инструментом PowerShell являются команды, называемыми командлетами.
Имена командлетов унифицированы и имеют интуитивно понятную структуру «глагол-существительное». Глагол позволяет понять какую операцию выполняет командлет, например: Get – получить, Set – задать, New – создать, Add – добавить, Start – запустить, Stop – остановить и т.д.
Значительное преимущество PowerShell над классической командной строкой – это развитая справочная система. Чтобы получить справку о командлете надо использовать командлет Get-Help или его алиас help, например:
Get-Help Get-Process или help Get-Process
Современные версии Windows содержат базовый набор командлетов, который может быть расширен импортом дополнительных модулей.
Конвейер
Мощным инструментом администратора может быть конвейер – технология, придуманная в Unix. В конвейере обработка данных производится последовательно группой команд, разделенных знаком | (вертикальная черта). В PowerShell эффективность конвейера повышена за счет того, что командлеты передают данные не в виде текста как в Unix, а в виде объектов со своим набором свойств и методов. Поэтому в большинстве случаев дополнительной обработки данных в конвейере не требуется.
Конвейер PowerShell позволяет быстрее решать некоторые административные задачи, чем при использовании графических утилит и с меньшей нагрузкой на аппаратные ресурсы компьютеров.
Например, крупная компания имеет подразделение Marketing, в котором работают сотрудники нескольких филиалов в разных городах. Решено создать еще одно подобное подразделение с названием Marketing2 и перевести туда часть сотрудников подразделения Marketing, живущих только в городе Boston и у которых фамилии начинаются с букв в диапазоне от L до Z.
Можно поменять название подразделения (department) у таких сотрудников, написав конвейер:
Get-ADUser -filter {department -eq ‘Marketing’ -and city -eq ‘Boston’} -Properties department,city,sn | where {$_.sn -ge ‘L’} | Set-ADUser -department ‘Marketing2’
Скрипты
Скрипты – это текстовые файлы, содержащие одну или несколько команд. В PowerShell такие файлы имеют расширение .ps1.
Скрипты открывают для администратора широкие возможности для автоматизации своих повседневных задач. Рекомендуется использовать приложение Microsoft PowerShell ISE, которое позволяет создавать скрипты с нуля или копированием и последующим редактированием готового кода из разных источников. Есть возможность запускать скрипт целиком или его отдельные фрагменты. Имеется цветовая подсветка кода.
Нажатием клавиши F1 открывается справка по ISE, если она загружена на компьютер, если не загружена, то открывается на сайте Microsoft. Также доступна вся справка, которая открывается для командлета Get-Help.
Вы можете пройти обучение по работе с PowerShell в нашем учебном центре
PowerShell для начинающих — введение в основы
Что такое PowerShell?
В современном мире все стремятся к автоматизации. Для администратора выполнение одних и тех же повторяющихся задач может стать монотонным, что, в свою очередь, не только снижает эффективность, но и может привести к ошибкам.
PowerShell — это интерактивный инструмент командной строки, с помощью которого можно автоматизировать такие рутинные задачи. Вы можете выполнять программы, известные как «сценарий (сохраненный как файл .ps1)», который содержит различные командлеты для соответствующей задачи.
Что такое командлет?
Командлет — это просто команда, с помощью которой можно выполнить действие. Два самых полезных командлета, о которых должен знать каждый:
- Get-Command
- Get-Help
Используя командлет Get-Command, вы можете найти все доступные командлеты, даже если вы не знаете, точный командлет. Например, вы хотите перезапустить службу из PowerShell, но не знаете командлет. Хотя можно предположить, что в нем может быть слово «сервис».
На приведенном ниже снимке экрана вы нашли все доступные командлеты, содержащие слово «служба», и поэтому нашли командлет для перезапуска службы.
Но как вы можете использовать этот командлет? Вы можете найти больше информации об этом, используя командлет «Get-Help».
Предоставляет основную информацию о командлете и всех параметрах, которые можно в нем использовать.
Если вы хотите найти статью MS о командлете, просто добавьте параметр «-Online» в конце, и он откроет страницу MS в браузере.
PowerShell против PowerShell ISE
Теперь вы знаете, как выполнить программу или командлет в PowerShell, но где вам следует написать программу. Вы можете сделать это в PowerShell ISE.
Переменная
Любой символ, перед которым стоит символ «$», становится переменной. Переменная вступает в игру, когда вам нужно сохранить значение, чтобы вы могли использовать его позже в сценарии. Например,
У вас есть 2 значения «10» и «4», и вы должны выполнить над ним 3 функции, например, сложение , вычитание, умножение. Итак, есть 2 способа выполнить это задание
a) 10+4, 10-4, 10*4
b) $a = 10
$b = 4
$a + $b
$a – $b
$a * $b
Типы данных в PowerShell
В PowerShell существуют различные типы данных, включая целые числа, значения с плавающей запятой, строки, логические значения и значения DateTime, которые вы используете в повседневной жизни. Метод GetType возвращает текущий тип данных данной переменной.
Переменные могут быть преобразованы из одного типа в другой путем явного преобразования.
- Целое число: имеет тип «целое число». Любое десятичное значение округляется.
- Плавающая точка: значение имеет десятичный тип.
- Строка: как следует из названия, используется для хранения букв и символов.
- Логическое значение: это значение может быть True или False. Если он существует, то это True, иначе будет False.
- DateTime: как следует из названия, относится к типу даты и времени.
Массивы
Массивы чаще всего используются для хранения списка значений, например списка имен пользователей или городов. Массивы PowerShell можно определить, заключив список элементов в круглые скобки и поставив перед ним символ «@». например
$nameArray = @(«Джон», «Джо», «Мэри»)
Доступ к элементам в массиве можно получить, используя их числовой индекс, начиная с 0, в квадратных скобках, например: $nameArray[0 ]. Например,
$nameArray[0] будет первым значением в массиве, т.е. «Джон»
$nameArray[1] будет вторым значением в массиве, т.е. «Джо»
Проще говоря, массив похож на столбец в Excel, содержащий данные аналогичного типа.
Имя |
Джон |
Джо |
Мэри |
Практика 1: Создайте массивы 1 и 2, как показано ниже. Массив 3 rd должен отображать сумму каждого соответствующего значения в массивах 1 и 2.
9011 1
Примечание. Используйте концепцию конкатенации. Мы должны сосредоточиться на том, чтобы понять, как индексация происходит в массиве и как вы можете использовать ее для решения вышеуказанной задачи.
Хеш-таблица
Более продвинутая форма массива, известная как хэш-таблица, назначается волнистыми скобками, перед которыми стоит знак «@». В то время как массивы обычно (но не всегда) используются для хранения похожих данных, хэш-таблицы лучше подходят для связанных (а не похожих) данных. Отдельным элементам в хеш-таблице присваивается имя, а не числовой индекс, например 9.0007
$user=@{FirstName=»Джон»; Фамилия = «Смит»; МидлИнициал = «J»; Age=40}
Элементы в хеш-таблице легко доступны с помощью переменной и имени ключа. например,
$user.LastName вернет значение «Смит».
Чтобы легко понять хеш-таблицы, вы можете связать это со следующим примером.
В приведенном ниже примере у вас есть таблица, в которой первый столбец содержит «Имя», второй столбец содержит «Фамилия», третий столбец содержит «MiddleInitial», а четвертый столбец содержит «Возраст».
Имя | Фамилия | MiddleInitial | Возраст |
Джон | Смит | D | 40 |
Джо | Паркер | L 9009 6 | 32 |
Гэри | Смит | N | 25 |
Теперь, если вы сохраните приведенную выше таблицу в хеш-таблице «$user», то для вызова первый столбец, вам нужно будет запустить команду «$user.FirstName», и все имена будут перечислены в столбце 1.
Практика 2: Создайте 2 хеш-таблицы, как показано ниже, и третья хэш-таблица должна быть рассчитана как (Отработанные дни * Зарплата в день).
Хэш-таблица 1 | Хэш-таблица 2 | Хэш-таблица 3 | |||||
Имя | DaysWorked | Имя | Зарплата в день | Имя | Зарплата | ||
Джон | 12 | Джон | 100 | Джон | 1200 | ||
Джо | 20 | Джо | 120 | Джо | 2400 | ||
Мэри | 18 | Мэри | 150 | Мэри |
об авторе
Алекс является экспертом в различных технологиях обмена сообщениями, таких как Microsoft Exchange, O365, IronPort, Symantec Messaging Gateway. Он увлечен написанием сценариев PowerShell и любит автоматизировать повседневные действия для повышения эффективности и общей производительности.
Учебное пособие по написанию сценариев Windows PowerShell для начинающих
Windows PowerShell — это мощный язык сценариев, который многие системные администраторы и другие ИТ-специалисты используют для автоматизации широкого круга задач. Действительно, изучение даже базового набора команд Windows PowerShell может помочь вам добиться значительной автоматизации. В этом посте рассматриваются наиболее важные основы сценариев PowerShell. Кроме того, в конце руководства есть FAQ с ответами на несколько распространенных вопросов о Windows PowerShell.
Предупреждение: Запустить сценарии PowerShell легко, но они могут оказать серьезное влияние на стабильность и безопасность вашей ИТ-экосистемы. Во время обучения обязательно экспериментируйте с Windows PowerShell только в изолированной среде.
Запуск Windows PowerShell
PowerShell предлагает как параметр командной строки, так и интегрированную среду сценариев (ISE):
- Чтобы запустить командную строку PowerShell, введите powershell.exe в меню «Пуск» Windows. Вы увидите экран, подобный следующему:
- Чтобы запустить PowerShell ISE, введите powershellexe в меню «Пуск». Использование ISE является предпочтительным способом работы с языком, поскольку оно обеспечивает подсветку синтаксиса, автоматическое заполнение команд и другие функции автоматизации, которые упрощают разработку и тестирование сценариев PowerShell.
Подготовка к запуску сценариев PowerShell
Кроме того, существует политика, ограничивающая выполнение сценариев. Вы можете проверить эту политику, выполнив команду Get-ExecutionPolicy в PowerShell:
Вы получите одно из следующих значений:
- Restricted — скрипты запрещены. Это значение по умолчанию.
- AllSigned — Вы можете запускать сценарии, подписанные доверенным разработчиком. Перед выполнением скрипт попросит вас подтвердить, что вы хотите его запустить.
- RemoteSigned — Вы можете запускать собственные сценарии или сценарии, подписанные доверенным разработчиком.
- Unrestricted — Вы можете запустить любой скрипт, который захотите.
Если установлено значение Restricted, измените его на другой параметр с помощью команды PowerShell Set-ExecutionPolicy:
Сценарии PowerShell хранятся в файлах PS1. По замыслу вы не можете запустить сценарий, просто дважды щелкнув файл; это помогает избежать случайного повреждения ваших систем. Вместо этого, чтобы выполнить сценарий, щелкните его правой кнопкой мыши и выберите «Выполнить с PowerShell»:
Командлеты PowerShell
О командлетах
Командлет — это команда PowerShell. Вот некоторые важные сведения о командлетах:
- Существуют системные, пользовательские и пользовательские командлеты.
- Командлеты выводят результаты в виде объекта или массива объектов.
- могут получать данные для анализа или передавать данные другому командлету с помощью конвейеров, о которых я расскажу чуть позже.
- Командлеты нечувствительны к регистру.
- Если вы хотите использовать несколько командлетов в одной строке, вы должны разделить их с помощью
Командлеты
Формат командлета
Командлет всегда состоит из глагола (или слова, функционирующего как глагол) и существительного, разделенных дефисом (правило «глагол-существительное»). Например, некоторые из глаголов включают:
- Получить — Получить что-то
- Набор — Для определения чего-либо
- Старт — Запустить что-то
- Стоп — Чтобы остановить что-то, что работает
- Out — Вывести что-то
- Новый — Создать что-то («новый» — это, конечно, не глагол, но действует как таковое)
Для практики попробуйте выполнить следующие командлеты:
- Get-Process — показывает процессы, запущенные в данный момент на вашем компьютере:
- Get-Service — показывает список служб с их статусом
- Get-Content — показывает содержимое указанного вами файла (например, Get-Content C:WindowsSystem32driversetchosts)
Доступные командлеты
Хорошие новости — вам не нужно запоминать все командлеты. Вы можете получить список всех командлетов, выполнив командлет Get-Help -Category, который вернет следующее:
Вы также можете создавать свои собственные командлеты.
Параметры
Каждый командлет имеет несколько параметров, определяющих его действия. PowerShell ISE автоматически предложит все допустимые параметры и их типы после ввода командлета и дефиса:
Вы также можете начать вводить значение параметра. Например, следующий командлет показывает все службы, имена которых начинаются с буквы «W»: Get-Service —Name W*
Командлет -Process: Get-Process | Получить член. («|» — это канал, по которому данные передаются от одного командлета к другому.)
Чтобы получить примеры для командлета, используйте следующий сценарий:
Get-Help Get-Process -Examples
Псевдонимы
Вы также можете использовать псевдонимы, которые являются сокращенными именами командлетов. Например, вместо «Get-Help» можно использовать просто «Help». Попробуйте запустить следующие две команды и посмотрите, получите ли вы тот же результат:
- Блокнот Start-Process
- запустить блокнот
Точно так же, чтобы остановить этот процесс, вы можете использовать любую из следующих команд:
- Блокнот Stop-Process-Name
- spps -Имя блокнота
Чтобы просмотреть все псевдонимы, выполните командлет Get-Alias.
Комментарии
Комментарии к сценарию помогут вам и вашим коллегам лучше понять, что делает сценарий. Однострочный комментарий начинается со знака номера (#), а блочный комментарий начинается с «<#» и заканчивается «#>».
Каналы
Канал передает данные от одного командлета к другому. Ранее мы использовали конвейер для получения всех свойств объекта. Вот еще один пример: Следующий скрипт предоставляет все службы, отсортированные по их статусу:
Get-Service | Sort-Object -property Status
Вы также можете использовать канал для вывода текста в файл с помощью сценария, подобного следующему:
"Hello, World!" | Out-File C:pstest.txt
Можно использовать несколько каналов. Например, в следующем сценарии перечислены все службы, причем первый канал исключает остановленные службы, а второй канал ограничивает список только отображаемыми именами:
Get-Service | ГДЕ {$_. status -eq "Выполняется"} | ВЫБЕРИТЕ отображаемое имя # "$_." определяет текущий элемент в трубе
Краткое изложение руководства по написанию сценариев Windows PowerShell
В этом учебном пособии по Windows PowerShell мы рассказали, как подготовиться к сценариям PowerShell и запустить их, что такое командлет, как передавать данные с помощью каналов и как получить свойства объекта. Имейте в виду, что если вы что-то забудете, вы всегда можете воспользоваться командлетом Get-Help.
Надеюсь, этот PowerShell для начинающих был вам полезен!
В следующих частях этого бесплатного руководства по Windows PowerShell я расскажу, как включать переменные, массивы и циклы в сценарии PowerShell.
Дополнительные ресурсы
Полезные сценарии PowerShell
Управление пользователями AD
- Список всех учетных записей пользователей в системе Windows
- Создать новых пользователей Active Directory
- Откройте для себя новых пользователей AD
- Отчет о членстве в группе AD
- Найти отключенных пользователей AD
- Список просроченных учетных записей пользователей AD
- Найти заблокированные учетные записи пользователей AD
- Получать уведомления о просроченных паролях
- Настройте неограниченный срок действия паролей пользователей в Office 365
Управление компьютерами AD
- Создание, удаление, переименование, отключение и присоединение компьютеров в AD
- Список неактивных компьютеров в Active Directory
Управление группами и подразделениями
- Получать уведомления об изменениях в группах локальных администраторов
- Добавление и удаление групп и объектов AD в группах
- Управление OU и их объектами
Управление другими вещами
- Мониторинг журналов событий
- Запрос журналов событий
- Пересылка журналов событий в Windows Server 2008
- Управление списками управления доступом к файловой системе (ACL)
- Оптимизация управления файлами
Получите дополнительные возможности с PowerShell
- Знайте, когда использовать Windows PowerShell и когда использовать командную строку
- Основные сочетания клавиш для системных администраторов
- Узнайте, как автоматизировать сценарии PowerShell с помощью планировщика заданий
Другие ресурсы
- Введение в PowerShell
- Документация PowerShell
- Блог сообщества PowerShell
Часто задаваемые вопросы
- Сложно ли освоить PowerShell?
Начать работу с Microsoft PowerShell может быть очень просто, так как язык простой и вы можете легко получить информацию о любом командлете.