Поиск по сайту:

Как начать изучение PowerShell


«Да, я немного знаком с PowerShell», — пожалуй, одно из самых часто используемых утверждений на технических конференциях на протяжении многих лет. Не так много можно сделать утверждений, которые могут быть в равной степени преуменьшением или преувеличением.

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

Вы можете ничего не знать о PowerShell, и это нормально

Давайте уберем это с дороги. Если вы не знаете PowerShell, это совершенно нормально. Хорошо, если вы знаете о PowerShell, но можно и признаться, если вы никогда им не пользовались. Кивки в знак согласия в обсуждениях с коллегами и добавление PowerShell в ваше резюме, чтобы получить преимущество, могут стать реальностью намного быстрее, чем вы думаете. У каждого своя история PowerShell, и ваша история будет такой же уникальной, как и ваше путешествие в мир ИТ-поддержки и проектирования. Вам некуда идти, кроме как вверх!

Согласно Microsoft Docs, «PowerShell — это кроссплатформенное решение для автоматизации задач, состоящее из оболочки командной строки, языка сценариев и среды управления конфигурацией. PowerShell работает в Windows, Linux и macOS». В центре внимания этого поста будет исключительно часть PowerShell, посвященная оболочке, и основное внимание будет уделено этому. Другие аспекты становятся немного более ясными, когда вы получаете больше опыта в части оболочки PowerShell.

Microsoft разработала PowerShell и постоянно совершенствует PowerShell для взаимодействия с операционными системами Windows для настольных компьютеров, операционными системами Windows Server, ресурсами Office 365 и облачными ресурсами Azure. Он станет неотъемлемой частью почти всей вселенной продуктов Microsoft. PowerShell позволяет инженерам и вспомогательному персоналу более эффективно управлять своими обязанностями, обеспечивая массовое создание и изменение ресурсов, таких как файлы, папки, параметры и конфигурации. Он наиболее известен своей уникальной и удобной для пользователя номенклатурой глаголов и существительных командлетов, произносимых как «command-lets». Командлеты — это фактические команды, используемые для выполнения каких-либо действий в PowerShell. Некоторые командлеты можно запускать именно так, как они есть, без определяющих параметров. Вы вводите их, нажимаете ввод и БУМ! У вас есть вывод, данный вам в консоли. Если вы знакомы с всегда верной командной строкой в среде Windows, вы будете чувствовать себя очень комфортно с PowerShell. Многие команды, которые вы обычно запускаете в командной строке, также могут выполняться в консоли PowerShell. Во всяком случае, попробуйте в следующий раз, когда вы обычно используете командную строку. Посмотрите, как он может делать то же самое внутри консоли PowerShell.

Открывая завесу графического интерфейса

Большинство людей любят свой драгоценный графический интерфейс. Они могут видеть все, что, по их мнению, им нужно видеть, и они испытывают это теплое и нечеткое чувство, когда нажимают «Применить», а затем «ОК». Некоторым из них нравится жить на грани и вообще не нажимать «Применить»! В конце концов, по мере того, как вы все глубже и глубже погружаетесь в управление серверами, рабочими столами или Exchange, вы обнаружите, что бесконечно щелкаете, когда необходимо внести изменение, требующее добавления 360 пользователей в 20 различных групп безопасности Active Directory. Ваши пальцы готовы к этому щелкающему кошмару?

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

Первые шаги

Давайте начнем с нескольких командлетов, которые вы можете использовать прямо сейчас, если читаете это на ПК с Windows. Одна вещь, с которой взаимодействует большинство системных администраторов и инженеров, — это консоль служб. Если вы открываете консоль PowerShell, просто введите Get-Service и нажмите Enter, чтобы получить список установленных служб. Вы получите краткую информацию обо всех службах, установленных в локальной системе, и их текущем статусе «Работает» или «Остановлена». Этот вывод был бы удобен, чтобы увидеть, работает ли конкретная служба приложения или нет.

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

Get-Service -ServiceName spooler

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

Start-Service -ServiceName spooler
Stop-Service -ServiceName spooler

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

К счастью, PowerShell очень дружелюбен к подстановочным знакам при перечислении объектов и имен. Допустим, вам нужно проверить конкретную службу, но вы не совсем уверены, как она называется «официально». Вы только знаете, что первое слово удалено. Это легко:

Get-Service -ServiceName remote*

В этом вводе будут перечислены все службы, начинающиеся с remote, и вы сможете сузить область поиска, чтобы найти конкретную службу, которую вы ищете, и предпринять необходимые действия. Не забывайте, что есть еще командлет Restart-Service.

Сделав еще один шаг вперед, чтобы получить отдачу от этих крошечных знаний о службах, давайте проверим службы на удаленном компьютере. Предположим, вы находитесь в среде домена Windows и имеете административный доступ к удаленным компьютерам, которыми вы управляете. Вы можете использовать те же командлеты, которые обсуждались ранее, но вам нужно добавить один параметр и значение. Чтобы проверить службу диспетчера очереди печати на удаленном сервере с именем PrintServer01:

Get-Service -ComputerName PrintServer01

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

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

Где узнать больше

Теперь, когда у вас есть наименьший кусочек опыта PowerShell, вы должны продолжить квест в гору, о котором говорилось ранее. Поставить одну ногу перед другой так же просто, как просмотреть некоторые ресурсы для получения советов по PowerShell. Простой поиск в Google по командлету — хорошее начало. В Microsoft Docs есть мощная библиотека для каждого отдельного командлета с множеством примеров их использования. PowerShell сам по себе является хорошим источником объяснений и примеров. Команда Get-Help Get-Service даст вам больше информации о нашем примере выше.

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

Сообщество PowerShell также является очень открытым и полезным местом для обучения. В сабреддите r/PowerShell и на сайте PowerShell.org есть очень процветающее сообщество людей с разным уровнем опыта. Вы всегда можете получить некоторые рекомендации из этих ресурсов. Вы не сможете взобраться на эту гору, если не сделаете шаги, поэтому приступайте к делу и посмотрите, как PowerShell может помочь вам в повседневных рутинных и мирских задачах, которых вы иногда боитесь. Вы можете оказаться в бешенстве, планируя и автоматизируя большую часть своей рабочей нагрузки, чтобы у вас было время, чтобы узнать больше о PowerShell!