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 для сокращения количества написанного кода имеется большое количество уже преднастроенных алиасов, а также предоставлена возможность создавать свои собственные алиасы
Добавить комментарий