Администрирование информационных сетей или же ИС неразрывно связано с использованием интерфейса командной строки. Многие сервера в корпоративных сетях или же ЦОДах не имеют графической оболочки, так как представляют лишнюю нагрузку на систему. А так же это не всегда способствует быстрому или эффективному решению задачи.
В каждой ОС на облачном сервере или же рабочей станции присутствует своя оболочка CLI с определенным синтаксисом и семантикой. В данной инструкции мы рассмотрим проприетарную оболочку PowerShell, которая является разработкой Microsoft и активно используется в дистрибутивах Windows.
Если говорить подробней, PowerShell представляет собой объектно ориентированный язык программирования, который интегрирован с ОС и позволяет интерпретировать команды высокого уровня в команды низкого, не зная всех механизмов взаимодействия системы. Так же управлять пользователями в локальной сети или же доменной становиться намного проще!
Что такое командлеты в PowerShell?
Командлеты или же команды в PS представляют собой синтаксический набор из Глагола-Существительного, которые представляют действие и объект взаимодействия. Например, нам нужно создать нового пользователя для рабочей группы или же локальной машины. Для этого мы можем воспользоваться командой:
Что позволяет, при использовании командлета New-LocalUser с параметрами -Name и передаваемым значением GG создать нового пользователя в системе. Командлеты обращаются к объектам ОС и возвращают лишь информацию о них, для поиска новых командлетов используйте команду Get-Help или же прочтите более подробное руководство по использованию PS.
Работа с модулями в PowerShell
Перед началом работы необходимо обновить Get-Help, так как если вы захотите самостоятельно разобраться в материале, то без новых пакетов-инструкций будет не просто. Обновим командой Get-Update, текущие пакеты и установим новые:
Для самостоятельного поиска необходимых команд вы можете воспользоваться, только что обновленной базой:
Для поиска командлетов, у которых в названии или описании содержится ключевое слово user!
Обратите внимание! На текущий момент, практически все командлеты структурированы и разбиты по модулям, которые представляют собой функциональные папки. Например, в ОС есть модуль Microsoft.PowerShell.LocalAccounts, который хранит все командлеты связанные с управлением пользователей на локальных машинах без домена. Что так же помогает в поиске нужной команды. Для того, чтобы просмотреть полный список установленных и доступных модулей, загрузите его через командлет:
На выдаче может быть множество различных модулей, чтобы найти, тот который нужен вам необходимо воспользоваться фильтром через пайплайн. Иначе говоря, вывод одной команды в виде объекта передается другой и фильтруется:
Так же во многих материалах можно встретить нагроможденную конструкцию {$_.Name -like “*LocalAccounts”}. Вместо нее можем использовать новую, просто указав текущий объект или столбик для фильтрации и параметр с условием.
Обратите внимание! В ключевом запросе присутствуют звездочки, которые представляют собой маску, любой знак и количество. Тем самым расширит поиск значений.
Как создать пользователей через PowerShell?
Обратимся к одному из выше рассмотренных модулей и просмотрим все его команды:
У каждого из командлетов есть свои многочисленные опции, которые помогают выполнить более тонкую настройку или же действие над объектом. Для просмотра будем использовать Get-Help, но перед этим необходимо развернуть сервер, котором будем проводить тесты. Для того чтобы наши эксперименты не затрагивали основную систему. Перейдем к созданию VPS сервера на любой из двух платформ vStack Сloud или же VMware Сloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.
После некоторого времени сервера будут доступны по любому из основных способов подключения, для текущих задач была выбрана ОС Windows Server c ЦОДом в Стамбуле.
Просмотрим подробную информацию об опциях и принимаемых аргументах командой New-LocalUser:
Очень важно уметь читать синтаксис команды для понимания, того как ее использовать. В данном случае описано, что кроме использования самого командлета мы можем добавить опции:
- -Name которая укажет имя пользователя, принимается в формате строки;
- -AccountExpires срок, когда истекает действие пароля на аккаунте;
- -AccountNeverExpires бессрочное действие пароля;
- -Description описание аккаунта;
- -Disabled созданный аккаунт будет сразу отключен;
- -FullName полное имя пользователя;
- -NoPassword не задавать пароль аккаунту;
- -UserMayNotChangePassword пользователь не может менять пароль;
- -Confirm подтверждение создания без доп.окон.
Например для локального ПК нам необходимо создать пользователя и выдать ему права Администратора, для этого мы пропишем команду:
Мы создали пользователя со стандартными параметрами без указания сроков действия паролей и прочих аргументов, в данном случае -Name, как минимальное требование.
Как добавить пользователей в группу PowerShell?
Затем пропишем пользователя в группу Администраторы и проверим корректность выполненных действий:
В выведенной визуальной форме видим, только что созданного и добавленного пользователя в системе! Но этот модуль, как понятно из названия работает только с локальными пользователями, для роли сервера AD необходим отдельный модуль, который будет обращаться к домену контроллера.
Как добавить пользователя в AD через PowerShell?
Для начала найдем подходящий модуль для работы и отфильтруем значения:
Предварительно понимая, что в данном модуле бесчисленное множество командлетов, необходимо в заранее их отсортировать. Нам необходимы только, те командлеты, где упоминается пользователь и группа. Следовательно, user и group:
И соответствующую команду для группы:
В первом поле видим команду New-ADUser, используя которую перейдем к созданию новой сущности и сразу установим пароль:
После двойного ввода пароля, добавим пользователя к группе и проверим корректность наших действий:
На скриншотах видим, что действия выполняемые от аккаунта администратора прошли корректно!
Администрирование информационных сетей через интерфейс командной строки, в частности с использованием PowerShell, предоставляет ряд преимуществ, таких как снижение нагрузки на систему, более быстрое и эффективное решение задач и упрощение управления пользователями в локальной и доменной сети. Командлеты PowerShell позволяют автоматизировать выполнение основных операций, делая работу администратора более продуктивной и удобной.