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 – логотип
(Википедия 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
Описание: 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, и хотя он возвращает текущую дату и время в несколько ином формате, чем псевдоним, по сути, оба делают одно и то же. Для задач мониторинга нам нужно предоставить это значение в очень специфическом формате: в этом случае команды выполняют свою работу совершенно по-другому.
Описание: “Работа с командой с переменными даты и времени”
С помощью команды 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. Более подробную информацию можно найти здесь.
![](https://pandorafms.com/blog/wp-content/uploads/2020/09/monitoring-for-more-than-a-decade-icon-pandora-fms.png)
Pandora FMS’s editorial team is made up of a group of writers and IT professionals with one thing in common: their passion for computer system monitoring. Pandora FMS’s editorial team is made up of a group of writers and IT professionals with one thing in common: their passion for computer system monitoring.