Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Команды Azure CLI могут выполняться в обеих средах: Bash, PowerShell, и в оболочке команд Windows (Cmd). Однако существуют тонкие различия в сценариях. На этом этапе учебника узнайте, как создать свою первую учетную запись хранения Azure и отформатировать значения параметров для всех трех языков сценариев.
Предпосылки
- Вы выполнили все необходимые условия, чтобы подготовить вашу среду.
- У вас есть доступ к группе ресурсов с
contributor
или более высокими разрешениями на уровне группы ресурсов.
Помните о символах продолжения строки
Большинство документации Azure CLI написано и протестировано в Bash с использованием Azure Cloud Shell. Одним из первых моментов, которые следует помнить при копировании синтаксиса Azure CLI, является проверка символов продолжения строки для выбранного вами языка сценариев, так как они не являются взаимозаменяемыми.
язык сценариев | Символ продолжения строки |
---|---|
Бить | Обратная косая черта (\ ) |
PowerShell | Обратная кавычка (` ) |
Cmd | Морковь (^ ) |
Подсказка
Кнопка Копировать в правом верхнем углу блоков кода Azure CLI намеренно удаляет обратную наклонную черту (\
) и обратный апостроф (`
). Если вы хотите скопировать форматированный блок кода, используйте клавиатуру или мышь для выбора и копирования примера.
Понимание различий в синтаксисе при использовании переменных
Синтаксис для использования переменных немного отличается между языками сценариев. Вот сравнение:
Сценарий использования | Бить | PowerShell | Командная строка (Cmd) |
---|---|---|---|
Создать переменную | variableName=varValue | $variableName="varValue" | установить переменную variableName=varValue |
Использование переменной в качестве значения параметра | имя_переменной | $variableName | %variableName% |
Используйте переменную в параметре --query . |
"$variableName" | "$variableName" | "$variableName" |
Существует несколько различных способов вернуть информацию о переменной на экран консоли, но echo
работает в большинстве случаев. Вот сравнение:
- Bash: echo $varResourceGroup
- PowerShell: Write-Output $varResourceGroup
- Cmd: echo %varResourceGroup%
На третьем этапе, Заполните переменные для использования в скриптах, вы работаете с подробными примерами синтаксиса переменных.
Узнайте о различиях в кавычках между языками сценариев
Каждый параметр Azure CLI является строкой. Однако, каждый язык сценариев имеет свои собственные правила для обработки одинарных и двойных кавычек, пробелов и значений параметров.
Значение строки | Azure CLI (Интерфейс командной строки для Azure) | PowerShell | Командная строка (Cmd) |
---|---|---|---|
Текст | «текст» или «текст» | «текст» или «текст» | "текст" |
Номер | \'50\' | ''50'' | '50' |
Булев | истина | ложь | истина |
Дата | '2021-11-15' | '2021-11-15' | '2021-11-15' |
JSON (JavaScript Object Notation) | "{"key":"value"}" или "{"key":"value"}" | "{"key": "value"}" или "{`"key`": `"value`"}" или "{""key"": ""value""}" | {"ключ":"значение"} |
Параметры командной строки Azure CLI принимают значения в виде списка, разделенного пробелами. Это влияет на цитирование.
- Нецитируемый список, разделенный пробелами: --имяПараметра firstValue secondValue
- Список в кавычках, разделенный пробелами: --parameterName "firstValue" "secondValue"
- Значения, содержащие пробел: --parameterName "value1a value1b" "value2a value2b" "value3"
Если вы не уверены, как ваша строка будет оцениваться вашим языком сценариев, верните значение строки в консоль или используйте --debug
, как объяснено в разделе Отладка команд справки Azure CLI.
Создайте учетную запись хранилища, чтобы применить изученное вами.
Остальная часть этого шага руководства демонстрирует правила использования кавычек в командах Azure CLI и использует группу ресурсов, созданную в разделе Подготовка вашей среды для Azure CLI. Замените <msdocs-tutorial-rg-00000000>
на имя вашей группы ресурсов.
Создайте учетную запись хранилища Azure для использования в этом руководстве. В этом примере присваивается случайный идентификатор имени учетной записи хранения, но если вы хотите использовать другое имя, ознакомьтесь с обзором учетной записи хранения для правил имени учетной записи хранения.
Это важно
Прежде чем вы сможете создать учетную запись хранилища, поставщик ресурсов Microsoft.Storage
должен быть зарегистрирован в вашей подписке. Чтобы узнать о регистрации типов ресурсов, см. Register resource provider.
Этот следующий пример сценария демонстрирует синтаксис, специфический для языка сценариев, для следующего:
- Продолжение строки
- Использование переменной
- Случайные идентификаторы
-
echo
команда
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="eastus"
resourceGroup="<msdocs-tutorial-rg-00000000>"
storageAccount="msdocssa$randomIdentifier"
# Create a storage account.
echo "Creating storage account $storageAccount in resource group $resourceGroup"
az storage account create --name $storageAccount \
--resource-group $resourceGroup \
--location $location \
--sku Standard_RAGRS \
--kind StorageV2 \
--output json
Замечание
Вы получили ошибку «Subscription not found»? Эта ошибка возникает, когда Microsoft.Storage
не зарегистрирован в активной подписке. Для регистрации поставщика ресурсов см. раздел поставщики ресурсов Azure и их типы.
Azure CLI возвращает более 100 строк JSON в качестве вывода, когда создается новый учетная запись хранения. Следующий вывод словаря JSON содержит поля, которые опущены ради краткости.
{
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"creationTime": "yyyy-mm-ddT19:14:26.962501+00:00",
"enableHttpsTrafficOnly": true,
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/msdocssa00000000",
"keyCreationTime": {
"key1": "yyyy-mm-ddT19:14:27.103127+00:00",
"key2": "yyyy-mm-ddT19:14:27.103127+00:00"
},
"kind": "StorageV2",
"location": "eastus",
"name": "msdocssa00000000",
"primaryEndpoints": {
"blob": "https://msdocssa00000000.blob.core.windows.net/"
},
"primaryLocation": "eastus",
"provisioningState": "Succeeded",
"resourceGroup": "msdocs-tutorial-rg-00000000",
"sku": {
"name": "Standard_RAGRS",
"tier": "Standard"
},
"statusOfPrimary": "available",
"statusOfSecondary": "available",
"tags": {},
"type": "Microsoft.Storage/storageAccounts"
}
Создание тегов для практики использования различий в кавычках.
Используя az storage account update, добавьте теги, чтобы помочь вам идентифицировать вашу учетную запись хранилища и узнать о различиях в кавычках. Эти примеры скриптов демонстрируют синтаксис, специфичный для языков программирования, для следующего:
- Значения, содержащие пробелы
- Цитирование пробелов
- Экранирование специальных символов
- Использование переменных
Параметр --tags
принимает список пар ключ:значение, разделённых пробелами. Замените <msdocs-tutorial-rg-00000000>
на имя вашей группы ресурсов и <msdocssa00000000>
на имя вашей учетной записи хранения Azure.
# Create new tags. This syntax works with or without quotes around each key-value pair.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags Team=t1 Environment=e1
# Create new tags containing spaces. You must use quotes.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Floor number=f1" "Cost center=cc1"
# Create a new tag with an empty value.
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Department="''""
# Create a new tag containing special characters resulting in "Path": "$G:\\myPath".
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "Path=\$G:\myPath"
# Create a tag from a variable.
newTag="tag1=tag value with spaces"
az storage account update --name <msdocssa00000000> \
--resource-group <msdocs-tutorial-rg-00000000> \
--tags "$newTag"
Если вы не хотите перезаписывать предыдущие теги, выполняя этот шаг учебника, используйте команду az tag update, установив параметр --operation
в merge
.
# Get the resource ID of your storage account.
saID=$(az resource show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa00000000> \
--resource-type Microsoft.Storage/storageAccounts \
--query "id" \
--output tsv)
echo My storage account ID is $saID
# Append new tags.
az tag update --resource-id $saID \
--operation merge \
--tags <tagName>=<tagValue>
# Get a list of all tags.
az tag list --resource-id $saID
Сравните больше скриптов, специфичных для языков программирования
Более пристально рассмотрите эти различия в сценариях. В этих примерах демонстрируются различия в кавычках для следующих случаев:
- Передача строки JSON в качестве значения параметра
- Отфильтруйте результаты с помощью параметра
--query
- Числа
- Логические значения
- Даты
Пример параметра, содержащего строку JSON. Этот скрипт предоставлен для дальнейшего использования, так как в этом учебном пособии мы не работаем с az rest
.
az rest --method patch \
--url https://management.azure.com/subscriptions/<mySubscriptionID>/resourceGroups/<myResourceGroup>/providers/Microsoft.HybridCompute/machines/<machineName>?api-version=yyyy-mm-dd-preview \
--resource https://management.azure.com/ \
--headers Content-Type=application/json \
--body '{"properties": {"agentUpgrade": {"enableAutomaticUpgrade": false}}}'
Пример фильтрации по числовому значению. За исключением случаев, когда у вас уже есть виртуальная машина в вашей текущей подписке, этот пример дан для будущей справки.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Пример фильтрации булевого значения с использованием аккаунта хранилища, созданного в этом руководстве.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Примеры фильтрации даты с использованием учетной записи хранилища, созданной в этом руководстве.
# include time
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='2021-11-15T19:14:27.103127+00:00'].{saName:name, saID: id, sku: sku.name}"
# exclude time
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='2021-11-15'].{saName:name, saID: id, sku: sku.name}"
# subtract days and use a variable
saDate=$(date +%F -d "-30days")
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?creationTime >='$saDate'].{saName:name, saID: id, sku: sku.name}"
Отладка команд справки Azure CLI
Используйте параметр --debug
Azure CLI предоставляет параметр --debug
, который можно использовать с любой командой. Отладочный вывод обширен, но он предоставляет информацию, включая следующее:
- Аргументы команды (значения параметров), как интерпретируется вашим языком сценариев
- Местоположение вашего лог-файла
- Детали вызова API
- Ошибки выполнения
Если при работе с командами Azure CLI у вас возникают трудности с пониманием и исправлением ошибки выполнения, --debug
— это ваш ответ, чтобы увидеть шаги, которые выполняет Azure CLI.
Вот небольшая часть результата отладки при создании учетной записи хранилища.
cli.knack.cli: Command arguments: ['storage', 'account', 'create', '--name', 'msdocssa00000000', '--resource-group', 'msdocs-rg-test', '--location', 'eastus', '--sku', 'Standard_RAGRS', '--kind', 'StorageV2', '--output', 'json', '--debug']
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2023-01-01'
cli.azure.cli.core.sdk.policies: Request method: 'POST'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies: 'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies: 'Content-Length': '73'
cli.azure.cli.core.sdk.policies: 'Accept': 'application/json'
cli.azure.cli.core.sdk.policies: 'x-ms-client-request-id': '00000000-0000-0000-0000-000000000000'
cli.azure.cli.core.sdk.policies: 'CommandName': 'storage account create'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '--name --resource-group --location --sku --kind --output --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.61.0 (DEB) azsdk-python-core/1.28.0 Python/3.11.8 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.35)'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: {"name": "msdocssa00000000", "type": "Microsoft.Storage/storageAccounts"}
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "POST /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/checkNameAvailability?api-version=2023-01-01 HTTP/1.1" 200 22
cli.azure.cli.core.sdk.policies: Response status: 200
...
Для получения дополнительных советов по устранению неполадок см. Устранение неполадок Azure CLI.
Используйте команду echo
Хотя --debug
точно сообщает, что интерпретирует Azure CLI, второй вариант — вернуть значение выражения в вашу консоль. Этот метод полезен при проверке результатов --query
, которые подробно описаны в разделе "Заполнение переменных" для использования в скриптах.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Устранение неполадок
Вот распространенные ошибки, которые возникают, когда синтаксис команды ссылки Azure CLI написан неправильно:
"Неправильный запрос ... {что-то} недопустимо" может быть вызвано пробелом, одним или двойным кавычками или отсутствием кавычки.
"Непредвиденный токен..." отображается, когда есть дополнительное пространство или цитата.
Ошибка «Invalid jmespath_type value» часто возникает из-за неправильного заключения в кавычки в параметре
--query
."Сообщение 'Ссылка на переменную недопустима' возникает, если строка не отформатирована должным образом, часто из-за объединения или отсутствия символа экранирования."
Нераспознанные аргументы часто вызваны неправильным символом продолжения строки.
"Сообщение 'Отсутствует выражение после унарного оператора' появляется, когда отсутствует символ продолжения строки."
Дополнительные советы по устранению неполадок см. в разделе "Устранение неполадок с командами Azure CLI".
Узнать больше деталей
Хотите подробнее об одном из тем, описанных на этом шаге руководства? Чтобы узнать больше, воспользуйтесь ссылками в этой таблице.
Тема | Подробнее |
---|---|
Различия в скриптах | Цитирование различий между языками сценариев |
Правила цитирования в Bash | |
Правила кавычек PowerShell | |
Рекомендации по запуску Azure CLI на языке сценариев PowerShell | |
Советы по командной строке Windows | |
Параметры | Используйте кавычки в параметрах Azure CLI |
Найдите больше примеров синтаксиса Bash, PowerShell и Cmd в Запрос выхода команды с использованием JMESPath | |
Устранение неполадок | Устранение неполадок команд Azure CLI |
Следующий шаг
Теперь, когда вы научились писать синтаксис Azure CLI для Bash, PowerShell и Cmd, перейдите к следующему шагу, чтобы узнать, как извлекать значения в переменную.