Разница между Azure CLI и PowerShell - PullRequest
4 голосов
/ 15 марта 2020

Я задаю этот вопрос как Windows пользователь, но прошу не ограничивать ответ только для windows.

Я пытался выполнить Azure CLI команды в Power-Shell , и они работают успешно, но не наоборот. В таком случае, почему у нас есть 2 отдельных набора команд? Почему бы просто не работать на Power-Shell? Я пробовал только некоторые команды basi c, и все они работают, кроме команд фильтра | find работает только на CLI и | Select работает только в Power-Shell.

Я знаю, что Azure CLI для кроссплатформенной поддержки. Но есть ли разница для пользователя Windows? Есть ли какие-либо последствия для запуска команды CLI в Power-Shell?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 15 марта 2020

Вот мои мнения об использовании обоих. Я ни в коем случае не говорю, что одно лучше другого. У них обоих есть свои плюсы и минусы.


Azure CLI - это кроссплатформенный инструмент командной строки для управления Azure ресурсами, который может работать в Windows, Ma c и Linux. Это также означает, что он может работать на Windows PowerShell. Он более гибкий, чем Azure PowerShell, поскольку является бинарным и может работать внутри любой оболочки ОС по умолчанию.

Есть ли какие-либо последствия для запуска команды CLI в Power-Shell?

Обновление может быть немного болезненным. Если вы хотите обновить его на Windows, вам необходимо переустановить MSI с инструкциями из Установить Azure CLI на Windows. Обновление проще на других платформах, и мне хочется использовать только Azure PowerShell на Windows PowerShell. Обходной путь - использовать WSL на Windows, тогда вы можете запустить Azure CLI на Linux внутри Windows машины. Вы можете установить WSL в Windows Подсистема для Linux Руководство по установке для Windows 10 . Я считаю, что обновлять пакет azure-cli гораздо проще на Linux, используя apt-get, чем эквивалент Windows. Вы можете взглянуть на Install Azure CLI с apt о том, как установить пакет Azure CLI на Linux.

Другое отличие состоит в том, что вам нужно объединить несколько команд с помощью Azure CLI, например az group list против Get-AzResourceGroup из Azure PowerShell. Вы также не можете запустить Get-Help с Azure командами CLI, как вы делаете с Azure PowerShell, что для меня очень важно, так как я считаю, что система помощи PowerShell очень полезна отображение подробной информации о командлетах PowerShell. Справочная информация по Azure CLI находится с az --help, но не такая полная, как Get-Help.

Завершение табуляции также не работает в Azure CLI при использовании Windows PowerShell. Это также делает ввод текста немного болезненным, еще одна причина, по которой я использую WSL внутри Windows. Вы можете взглянуть на другие варианты этой поддержки автозаполнения в Windows командной строке GitHub.


Azure PowerShell - это набор командлетов PowerShell для управления Azure ресурсами из командной строки, и только работает в Windows PowerShell и PowerShell Core. Это также означает, что если другая ОС, такая как Ma c или Linux, работает под управлением PowerShell Core, то она также может запускать Azure PowerShell.

Я пробовал только некоторые команды basi c, и все они работают, кроме команд фильтра | найти только работы на CLI и | Select работает только в Power-Shell.

Select-Object или сокращение Select - это командлеты PowerShell, поэтому он работает только с объектами PowerShell. find может искать строку или текстовый файл. Кроме того, если вы ищете данные из Azure CLI, вы должны использовать параметр --query вместо find, поскольку find ограничен поиском строк внутри текст. Azure CLI использует язык запросов JMESPath для поиска данных в полученном вами выводе JSON. Если вы знакомы с этим языком запросов, то поиск данных с использованием Azure CLI не должен быть слишком большой проблемой. Кроме того, вы также можете использовать Azure команды CLI внутри скриптов PowerShell, но не наоборот.


Сводка

Если вы работаете с несколькими платформами или хотите писать скрипты для других, использующих разные платформы, использование Azure CLI - хороший выбор. Однако, если вы в основном работаете с Windows системами и работаете с другими, кто делает то же самое, то использование Azure PowerShell - хорошая идея. Если вам нравится я и вам приходится использовать разные платформы, то установка обеих - хорошая идея. Если вы по-прежнему хотите использовать Azure PowerShell на разных платформах ОС, тогда вам нужно PowerShell Core.


Обновление

Как @ AimusSage полезно указать в комментариях PowerShell 7. 0 был недавно выпущен, заменив имя PowerShell Core или PowerShell 6.x . Вы можете прочитать больше на Объявление о PowerShell 7.0 .

0 голосов
/ 15 марта 2020

Мне нравятся предыдущие ответы, я просто хочу добавить другую точку зрения для людей в корпоративном мире, которая вынуждена выбрать одну:

В таком случае, почему у нас есть 2 отдельных наборы команд? Почему бы просто не поработать над Power-Shell?

Перефразируя: и Az CLI, и Az PowerShell просто вызывают один и тот же набор API, Azure API. Это важно, потому что теоретически и в конечном итоге вы сможете делать все обоими способами

Так почему же Microsoft создает и поддерживает два способа сделать одно и то же?

Мартин Фаулер сказал: но помните, умение команды перевесит любой выбор монолита / микросервиса

Если вы измените монолит / микросервис by PowerShell / Bash, тогда это отвечает на вопрос.

Я полагаю, что есть люди, которые десятилетиями разрабатывали системы, использующие Bash, и есть другие команды, которые тяжело пользователи PowerShell. Microsoft не хочет, чтобы они изучали совершенно новый язык программирования , чтобы иметь возможность использовать Azure.

Резюме:

Если ваша команда знакома с PowerShell go с PowerShell и делайте как можно больше встроенных функций PowerShell. Таким образом, вы получаете выгоду от таких вещей, как обработка ошибок, OOP концепции, настройки среды, распараллеливание и т. Д. c

Если ваша команда состоит из linux администраторов, активных пользователей jenkins, с миллионами строк Bash чтобы автоматизировать другие вещи, которые уже есть, и работать с Bash на всю жизнь, go с CLI и поддерживать согласованность всех уже созданных инструментов

0 голосов
/ 15 марта 2020

существующий ответ - глупый способ взглянуть на этот вопрос. и вводит в заблуждение.

Самое большое отличие состоит в том, что azure cli - это binary (который может работать на разных платформах), а Powershell - shell, который работает на разных платформах. Azure Powershell - это набор модулей Powershell, все остальное вытекает из этого.

find не может работать в cli, потому что нет in the cli, потому что это не оболочка. find отлично работает в Powershell на Windows, потому что это binary в Windows OS, тогда как select это командлет в Powershell и, следовательно, он не будет работать в командной строке на Windows (или * 1023) * on Linux).

Кроме того, если вы ищете данные из Azure CLI, вы должны использовать параметр --query вместо find

это тоже спорно, JMESPath язык запросов усложненный без особой причины, и я не знаю, как Azure Кли фактически совместит с официальной документацией JMESPath. Я предпочитаю использовать Powershell для запуска Azure команд Cli и просто анализировать вывод JSON с Powershell. Очевидно, вам может быть не так комфортно с Powershell, как мне, и вам может показаться, что это не удобно.

...