PowerShell 101: альтернатива командной строке в Linux и Mac

Интерфейс командной строки (CLI) в Windows® существует и сопротивляется течению времени, начиная с тех далеких дней MS-DOS® и заканчивая современным PowerShell 101. Рассмотрим базовый PowerShell.

Когда я учился в колледже в 1980-х годах, там царило несвободное программное обеспечение. Старые немецкие компьютеры с Unix®, на которых печатались наши расписания, заменялись “современными” персональными компьютерами. Программный дом Microsoft® – в то время – был привязан к MS-DOS®, поэтому мы учились использовать команды: dir, cls, format для наших дискет…

Чуть более десяти лет назад в Редмонде решили смахнуть пыль, модернизировать и расширить возможности CLI. Рожденный как Monad® и переименованный в PowerShell®, сегодня мы представляем вам основы PowerShell или PowerShell 101.

powershell 101 1

Описание: Основы Powershell – логотип
(Википедия https://commons.wikimedia.org/wiki/File:PowerShell_5.0_icon.png)

Основы PowerShell

Операционная система Linux набирает обороты; в блоге Pandora FMS есть много статей о ней. Также мы всегда присутствуем при мониторинге проприетарных систем; Windows®, как ее максимальный экспонент. И каждый раз, когда выходит новая версия, мы там, тестируем и проверяем.

Я думаю, что из-за этой истории с Linux, Microsoft решила сделать компиляцию инструментов вместе с новыми концепциями, как аналог возможностей GNU, которые поставляются с Linux. Учитывая, что PowerShell Core существует с 2016 года как открытое программное обеспечение (лицензия MIT), но с проприетарными компонентами Windows®, теперь он доступен в Ubuntu, CentOS (ОС, рекомендованная для Pandora FMS) и macOS и даже в другой аппаратной архитектуре, такой как ARM.

Установка PowerShell Core в Linux

В Ubuntu мы должны установить менеджер пакетов snap: с помощью sudo apt install snap мы выполним нашу миссию. Далее мы выполним команду snap install powershell -classic

powershell 101 2

Описание: snap install powershell – classic

Первые команды

Запустив команду pwsh (в Windows® нужно искать powershell.exe), мы получим окно терминала, с индикатором “PS” (prompt), за которым следует расположение каталога. В обеих средах аспекты очень похожи, поэтому далее мы будем обобщать.

Затем давайте применим наши воспоминания на практике:

  • cls: “очищает” экран, оставляя место для выполнения нового цикла команд. Это совсем не обязательно, но это похоже на то, как если бы вы писали мелом на доске и стирали, чтобы начать объяснять другую тему.
  • dir -ad: для перечисления только каталогов.
  • echo message: когда мы хотим показать определенный текст на экране. Это кажется не очень полезным, но когда мы интегрируем его в скрипт, он приносит огромную пользу, показывая прогресс выполнения какой-либо задачи или результат выполнения этой же задачи.

Мы больше не будем задерживаться на старых командах MS-DOS. В двадцать первом веке нам придется продолжать использовать такую старую технологию, и в процессе работы с теми старыми программами, которые общались или взаимодействовали с текстовыми строками (STDIN, STDOUT).

Основные команды в PowerShell 101

В 21 веке все стало сложнее, это годы накопленного опыта. PowerShell 101 – это не простой инструмент, подобный тому, который мы используем в Linux. Для этого инструмента существует команда-let, название которой сокращенно называется cmdlet. Это означает, что команды, которые мы тестировали, на самом деле не те, за которые мы их принимали: они являются псевдонимами команд по умолчанию, что обеспечивает обратную совместимость. Теперь это еще не все. Давайте проанализируем случай с командой date, используемой для вознаграждения за свидание.

Его настоящее название – Get-Date, и хотя он возвращает текущую дату и время в несколько ином формате, чем псевдоним, по сути, оба делают одно и то же. Для задач мониторинга нам нужно предоставить это значение в очень специфическом формате: в этом случае команды выполняют свою работу совершенно по-другому.

powershell 101 3

Описание: “Работа с командой с переменными даты и времени”

С помощью команды Get-Date мы можем:

  • Отображение даты компьютера.
  • Отобразите его в пользовательском формате.
  • Используйте методы; в данном случае мы визуализируем, каким номером дня является дата 20 мая 2019 года (это 140-й день года).
  • Сохраните переменную даты в пользовательском формате.
  • Преобразуйте эту переменную в текстовую строку и сохраните ее в файле.
  • Обратите внимание, что мы использовали трубу для связи одной команды с другой. Команда, которую вы получили для записи на диск, называется Add-Content. (Разве вы не помните Linux?).
  • Аналог для чтения – Get-Content, а его псевдоним называется… “cat”, точно так же, как тот, который используется в Linux для вывода содержимого текстового файла!

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

Работа с командами

Имея все это в качестве основы, мы можем перестать думать о базовом Powershell как об инструменте и начать воспринимать его как набор инструментов. Для этого мы воспользуемся командой Get-Command:

Использование его без каких-либо параметров вернет нам множество инструментов; тех, которые мы установили на нашем компьютере.

Если мы спросим о конкретной команде, то, например, Get-Command Get-Date вернет информацию о типе команды, ее имени, версии и источнике (библиотеке, к которой она принадлежит). Для Get-Date будет указано, что это команда, принадлежащая Microsoft.PowerShell.Utility, а для Clear-Host (clear screen, cls) – что это просто функция. При вводе псевдонима будет возвращена исходная команда или функция.

Если мы не помним точного имени, мы будем использовать подстановочные знаки; например, с помощью Get-Command *date* мы получим список всех команд, содержащих эту строку.

Помогите с основами Powershell

Справка также рассматривалась как хранилище, поскольку с помощью команды Get-Help мы можем загрузить содержимое на наш компьютер:

  • Get-Help Get-Date: покажет полную информацию о том, как использовать Get-Date, его синтаксис, псевдонимы и т.д.
  • Get-Help Get-Date -Online: откроет экземпляр нашего веб-браузера и откроет последнюю информацию в Интернете о команде Get-Date.
    Для работы в автономном режиме, т.е. для сохранения обновленной справки: Update-Help.

Используя Get-Help, давайте познакомимся с командами Get-Location и Set-Location.

Предположим, нам нужно создать папку или файл; для этого мы больше не будем использовать команду md или mkdir (последняя пишется точно так же в Linux), а воспользуемся командой New-Item:

New-Item “path/name” -type directory

Команда “Новый объект”.

“путь/имя” директории; кавычки необходимы, когда они пересекаются.

Параметр -type и затем то, что мы установили в качестве провайдера: File, Directory, SymbolicLink, Junction или HardLink.

Теперь поговорим о провайдерах: мы можем загрузить нужные нам провайдеры или создать собственные провайдеры и связать их с командой. Моя фантазия разгулялась: мы разрабатываем программу, которая работает как FTP-клиент, и предлагаем ее в качестве провайдера, так что мы можем продать ее кому угодно, чтобы интегрировать ее в свой PowerShell… но подождите, это еще не все. Если мы сделаем это, то, в свою очередь, – если это позволяет наша лицензия – наш клиент сможет добавить нашу FTP-программу в качестве библиотеки в свои собственные проекты. Что вы думаете?

Примечание: PowerShell также может работать через API, и даже аналитики по безопасности создали свои собственные среды PowerShell, некоторые смешанные с языком Python… которым даже не нужны исполняемые файлы Microsoft!

Pandora FMS и задачи мониторинга

Гибкость Pandora FMS позволяет нам использовать PowerShell для быстрого доступа к сложным командам. Например, в среде Windows нам нужно знать, какие исправления установлены:

Get-CimInstance -ClassName Win32_QuickFixEngineering -ComputerName

Мы сможем визуализировать компоненты с помощью команды Get-Member, извлечь содержимое и сделать наше дополнение в Pandora FMS для PowerShell!

Хотите узнать лучше, что может предложить вам Pandora FMS? Узнайте об этом здесь.

Если у вас более 100 устройств для мониторинга, вы можете связаться с командой Pandora FMS через следующую форму.

Также помните, что если ваши потребности в мониторинге более ограничены, в вашем распоряжении есть OpenSource версия Pandora FMS. Более подробную информацию можно найти здесь.

Shares