Polytech-soft.com

ПК журнал
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Powershell как средство автоматического администрирования

Как легко начать писать на PowerShell или несложная автоматизация для управления Active Directory

Изучить основы PowerShell

Данная статья представляет собой текстовую версию урока из нашего бесплатного видеокурса PowerShell и Основы Active Directory (для получения полного доступа используйте секретное слово «blog»).

Данный видеокурс оказался необычайно популярным по всему миру и он проведет вас по всем ступеням для создания полного набора инструментов по управлению службой каталогов Active Directory начиная с самых азов.

Кодирование с помощью PowerShell

Выполнение Команд

Консоль PowerShell – это интерактивная среда, которая позволяет запускать различные команды в реальном времени. Здесь не нужно сперва редактировать скрипт в блокноте и лишь затем запускать его в командной строке, что также значительно съэкономит ваше время.

Если вы сейчас работаете в какой-либо организации, которая при этом существует не один день, то у вас уже наверняка есть несколько маленьких скриптов на каждый день, которые вы запускаете из командной строки cmd.exe. И это отличная новость! Значит вы так же легко сможете выполнять все это и из PowerShell. Это было поистине мудрое дизайнерское решение со стороны Microsoft, так они сделали переход на новое решение более легким для администораторов.

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

Все ваши часто используемые утилиты, такие как ping, ipconfig, nslookup, и т. п. будут работать именно так, как вы ожидаете.

Как найти команды PowerShell

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

К счастью, прямо в редакторе встроено несколько инструментов, чтобы помочь вам справиться с этим.

Авто-завершение команд по нажатию Tab

Нет необходимости запоминать различные команды или точное написание команды. Наберите

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

Несмотря на то, что автодополнение по Tab работает превосходно, что произойдет, если Вы не знаете правильное имя команды, которая вам нужна? В этом случае можно использовать команду чтобы найти другие доступные команды: Get-Command.

В поиске имени команды, важно иметь в виду, что есть синтаксис для них: Глагол-Существительное. Как правило, Глаголы такие как – Get (Получить), Set (Установить), Add (Добавить), Clear (Очистить), Read (Читать) и Write (Писать) и Существительные – файлы, серверы или другими сущности в вашей сети и приложениях.

Читать еще:  Администратор хранилища данных

Get-Command – это инструмент для поиска и изучения команд, доступных на вашем компьютере.

Синтаксис команд в PowerShell

Кто-то когда-то описал язык скриптов Perl, как “шум из исполняемых строк кода” (ориг. “executable line noise”) – невероятно полезный инструмент, с дико непрозрачным синтаксисом и соответственно с высоким порогом входа для его изучения.

Хотя если разобраться то и традиционная командная строка в Windows не так уж далеко от этого ушла. Рассмотрим общую задачу как найти все файлы в каталоге, имена которых начинаются с ‘foo’.

FOR и DO указывают на то, что это цикл.
Флаг /D указывает, что это цикл по всем папкам
Флаг /R указывает, что нужно включать все файлы и папки, включая подкаталоги
Шаблон поиска, который определяет интересующий нас набор файлов, обозначается с помощью “IN”
ECHO указывает, что сценарий должен вывести на экран результат каждого цикла и, наконец,
%G – это “вынужденный параметр” и выбран потому, что ранее программисты Microsoft уже использовали при разработке буквы A, D, F, N, P, S, T, и X. Поэтому, начинать с G, является хорошим тоном, т.к. это дает вам самый большой набор неиспользованных букв для форматов путей возвращенных переменных (G, H, I, J, K, L, M) – другими словами, это лайфхак.

Сравните теперь эквивалент на PowerShell:

Результат – тот же, но даже на таком достаточно тривиальном примере, будет намного легче понять, что происходит. Сразу становится очевидно, что делает каждый элемент в команде и как можно их изменить. Ну разве что подстановочный знак ‘*’ используемый в обоих примерах, но я думаю что вы и так прекрасно знаете, что он означает – что все элементы должны начинаться с ‘Foo’ и в конце еще что-нибудь.

Чувствуете как ваше настроение постепенно улучшается? А теперь, что если вы захотите узнать, как выбрать только файлы (а не папки) в пути? Вы можете покопаться в мануалах, или ваш лучший друг Google вам в помощь или может попытаться разобраться из командной строки? Маленькая подсказка: если вы находитесь в PowerShell, введите “-” и нажмите клавишу Tab, пройдитесь по нужным флагам, пока очевидное решение не появится.

Одна Длинная Строка против Объекта

Сайты никому не нужны, если они не в онлайне. Именно поэтому люди тратят огромное количество времени, притворяясь, что они операторы сонара на подводной лодке и «пингуют» доступность своих серверов (да-да, именно поэтому он так называется).

Несмотря на то что вывод команды Ping полезен (и вы можете использовать ping с тем же успехом и в консоли PowerShell), в конце концов это просто большая и длинная строка – ряд букв и цифр с некоторыми перерывами между ними.

Читать еще:  Как стать администратором телефона

В PowerShell есть команда, которая похожа на Ping, но возвращает данные в структурированном виде. Это команда Test-Connection.

Ниже приведен результат работы этой команды по обмену пакетами с сервером ‘DC’ в совершенно ином полностью структурированном виде:

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

Встроенная помощь

До этого момента мы были сосредоточены на выполнении определенных команд, используя дополнение по Tab, но как только вы начнете работать с PowerShell все больше и больше команды становятся все более сложными c еще более сложными параметрами. В то время как синтаксис Глагол-Существительное (Verb-Noun) помогает, но еще больше помогает наличие под рукой:

1. Актуальной документации
2. Обилие примеров

Помочь по Командлетам

На практике, следует комбинировать команду Get-Command (чтобы найти то, что следует использовать), а затем использовать Get-Help чтобы узнать, как пользоваться этой конкретной командой.

Практический пример, как это сделать: допустим, вам нужно определить, все запущенные службы Windows на компьютере.

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

Которая сообщит вам сразу, что вы на правильном пути. Обдумывая вернуться в стандартный синтаксис команд PowerShell Глагол-Существительное, вы бы хотели выяснить, как правильно использовать команду ‘Get-Service’.

Документация Microsoft по команде Get-Service
Для этого стоит использовать команду ‘Get-Help’. Начните печатать
“Get-Help -” и затем нажмите клавишу Tab
Вы быстро обнаружите доступные опции, наиболее явно подходит один “Name”, так что стоит попробовать:

Тут же вы получите полный синтаксис команды (и что из опций вы можете включить или исключить на базе фильтров).

Если вы захотите исследовать команду глубже и детализировать ее вплоть до каждого параметра, то наберите:

Помощь с примерами на PowerShell

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

Введя “-examples” или добавив флаг “-detail” к команде “Get-Help”, вам будет предоставлен набор примеров для использования команды.
Вот, к примеру, вывод для команды:

Оставаясь в курсе

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

Чтобы обойти эти проблемы и заодно получить новые примеры и исправления введите:

и начнется процесс загрузки обновленной контекстной помощи.

PowerShell как средство автоматического администрирования

Точнее, купил давно,два месяца назад, как только она вышла, но написать о ней как-то не получалось.

Читать еще:  Чем занимается системный администратор на работе

Замечу сразу, что год назад была закуплена другая книга автора (поскольку я очень люблю читать и покупать книги 😉 ) , “Администрирование сетей Windows с помощью сценариев”. Книжка показалось тогда неплохим справочником средней руки- небольшой объем, легкое изложение и море бумажного кода.:( На этот раз увидел в новостях RSS новую книжку про любимый пош, и поспешил закупить.Прочитал краткую аннотацию, покивал головой, да, надо брать.Т.к. много времени свободного не имел, порешил заказать домой. Это и стало главной ошибкой, и сейчас я расскажу, почему.

Интересным открытием стало то, что тираж составляет 200 экземпляров, так что мне повезло попасть в число счастливчиков ). На книжных ресурсах я, к сожалению, не нашел оглавления, которое мог бы пролистать и ознакомиться с книгой до покупки- надо было не лениться и пойти подержать ее в руках. Итак, автор предлагает нам 222 страницы покетбука: (по объему примерно как пятая часть Руководство по сценариям Windows PowerShell сэра Эда Уилсона)

2)Установка и настройка PowerShell

3)Управление каталогом AD

5)Вот тут мы подошли к основе книжки: Задачи, решаемые сценариями. Автор расскажет нам в этой главе, что же наскриптовать мы сможем при помощи пошика.

6) Инвентаризация – можем.

7)Управление сетевыми ресурсами – можем.

8) Глава по управлению сетевыми дисками

9) Глава по управлению сетевыми принтерами

10) Подключение баз 1С (все очень красиво – Мария Карловна, входящая в группу “Secret Project” получает именно свои базы и никакие другие). И все скриптом.

11) Централизованное управление ярлыками (казалось бы?)

12)Полезная глава – а как же внедрять наши сценарии. Даны советы, как правильно использовать группы, фильтры, и конечно рассмотрен основной инструмент внедрения -Групповые Политики.

13)Распределенная файловая система. В главе рассказывается о преимуществах использования DFS в союзе с GPO и Powershell.

14)Глава называется “Управление безопасностью”. Рассказывается о наследовании ГП, отключении наследования и всем таком.

15) Управление АВЕ (Acess Based Enumeration) Логическое продолжение главы, посвященной безопасности, ACLы, ACE и их друзья.

16) Глава – Приложение к книге. В ней нам кратко напоминают о синтаксисе команд лихих 80-х: goto, for, echo и перечислены другие полезные команды cmd для пошадмина.

Вот такой вот перечень глав – берем в руки Powershell, дополняем его всем чем можно -vbs, c#, wsh и реализуем свои скрипты, используя Gplinkи. Наверное, автор забыл о Group policy preferences. И о возможностях GPP. А может, это попытка рассказать читателю, что эту задачу можно решить еще одним способом….

Читая книгу, постоянно испытывал ощущение, что держу в руках “Администрирование сетей Windows с помощью сценариев”, предыдущую работу Ивана. Эта же работа, по моему мнению, могла быть опубликована серией статей в СА, а не отдельной книгой -автор же решил иначе.

Все познается в сравнении

Надеюсь, книжка будет для кого-то полезной. Читайте книги, занимайтесь Powershell и будьте здоровы.

Ссылка на основную публикацию
Adblock
detector