PowerShell

PowerShell

PowerShell - мощнейший инструмент, незаменимый помощник любого Windows администратора, а с недавнего времени, после того, как компания Майкрософт выпустила PowerShell для Linux - он стал отвоевывать сердца и Linux админов.

На данный момент, компании Майкрософт удалось реализовать поддержку следующих платформ: Windows, Linux, macOS и ARM.

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

Чем же так хорош PowerShell?

PowerShell - это командная оболочка, и язык программирования в одном лице, в основе которого лежит Платформа .Net.

Главным его отличием от большинства командных оболочек есть то, что он является объектно ориентированным, то-есть все данные, которыми оперирует программа, рассматриваются как совокупность объектов, имеющих свой тип, свойства и методы. В отличие от командных оболочек, оперирующих текстовыми данными, данные в PowerShell обрабатывать намного легче.

Давайте рассмотрим пример. Для этого запустим командлет Get-ComputerInfo:

 PS C:\Users\Oleksandr> Get-ComputerInfo
 
WindowsBuildLabEx : 19041.1.amd64fre.vb_release.191206-1406
WindowsCurrentVersion : 6.3 
WindowsEditionId : Professional
WindowsInstallationType : Client 
WindowsInstallDateFromRegistry : 31.12.2020 2:23:53 
WindowsProductId : 00331-10000-00001-AA709 
WindowsProductName : Windows 10 Pro
 ... 

Теперь давайте запишем вывод командлета Get-ComputerInfo в переменную и обратимся к ее Методу GetType():

PS C:\Users\Oleksandr> $ci = Get-ComputerInfo
PS C:\Users\Oleksandr> $ci.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    ComputerInfo                             System.Object

Мы видим, что выполнение командлета Get-ComputerInfo не просто вывело текст на экран, а создало объект, имеющий тип ComputerInfo, базовым типом для которго есть System.Object. Далее командная оболочка распарсила этот объект и ваывела его для нас в виде списка.

В объектно ориентированных языках программирования, базирующихся на .Net все есть объекты и прародителем у всех этих объектов есть System.Object.

Конвейеры

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

Например вывод командлета Get-ComputerInfo можно перенаправить на вход командлета Select-Object, которому в качестве параметра можно указать какие поля объекта  ComputerInfo нужно выбрать. Далее вывод можно перенаправить на вход следующего комадлета и так до тех пор, пока не будет получен желаемый результат.

Расширение путем установки модулей

Если уж так получилось, что чего-то в PowerShell не хватает, это легко исправить написав свой модуль, или установив готовый.

Найти модули можно на сайте PowerShell Gallery а установить используя командлет Install-Module, в качестве параметра указав имя модуля который надо установить. Модуль будет самостоятельно скачан и установлен.

Алиасы

Если вам показалось, что имена командлетов длинные и неудобные в использвании, не спешите расстраиваться - в PowerShell для сокращения количества написанного кода имеется большое количество уже преднастроенных алиасов, а также предоставлена возможность создавать свои собственные алиасы

 

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

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <s> <u> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <hr> <dd> <sub> <sup>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Защита от СПАМ ботов. Подтвердите, пожалуйста, что вы человек.
2 + 11 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.