Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Команды Azure CLI можно выполнять в оболочке командной строки Bash, PowerShell и Windows (cmd) на языках сценариев. Однако существуют тонкие различия в скриптах. На этом этапе учебника узнайте, как создать свою первую учетную запись хранения Azure и отформатировать значения параметров для всех трех языков сценариев.
Предпосылки
- Вы выполнили все необходимые условия, чтобы подготовить вашу среду.
- У вас есть доступ к группе ресурсов с
contributorили более высокими разрешениями на уровне группы ресурсов.
Помните о символах продолжения строки
Большинство документации Azure CLI написано и протестировано в Bash с использованием Azure Cloud Shell. Одним из первых вещей, которые следует помнить при копировании синтаксиса Azure CLI, является проверка символов продолжения строки для выбранного языка сценариев, так как они не взаимозаменяемы.
| Язык сценария | Символ продолжения строки |
|---|---|
| Бить | Обратная косая черта (\) |
| PowerShell | Обратная кавычка (`) |
| Cmd | Caret (^) |
Подсказка
Кнопка Копировать в правом верхнем углу блоков кода Azure CLI намеренно удаляет обратную наклонную черту (\) и обратный апостроф (`). Чтобы скопировать отформатированный блок кода, используйте клавиатуру или мышь для выбора и копирования примера.
Понимание различий в синтаксисе при использовании переменных
Синтаксис для использования переменных немного отличается между языками сценариев. Вот сравнение:
| Сценарий использования | Бить | PowerShell | Командная строка (Cmd) |
|---|---|---|---|
| Создать переменную | variableName=varValue | $variableName="varValue" | установить переменную variableName=varValue |
| Использование переменной в качестве значения параметра | имя_переменной | $variableName | %variableName% |
Используйте переменную в параметре --query. |
"$variableName" | "$variableName" | "$variableName" |
Существует несколько различных способов вернуть информацию о переменной на экран консоли, но echo работает в большинстве случаев. Вот сравнение:
- Bash: выполнить $varResourceGroup
- PowerShell: Write-Output $varResourceGroup
- Cmd: echo %varResourceGroup%
На шаге 3 заполнение переменных для использования в скриптах выполняется с помощью подробных примеров синтаксиса переменных.
Узнайте о различиях в кавычках между языками сценариев
Каждый параметр 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
Замечание
Вы получили сообщение об ошибке "Подписка не найдена"? Эта ошибка возникает, когда 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
Использование параметра отладки
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. - "Ссылка на переменную недопустима" получается, если строка не форматируется правильно, часто из-за объединения или отсутствующих escape-символов.
- "Нераспознанные аргументы" часто возникают из-за некорректного символа для продолжения строки.
- "Сообщение 'Отсутствует выражение после унарного оператора' появляется, когда отсутствует символ продолжения строки."
Дополнительные советы по устранению неполадок см. в разделе "Устранение неполадок с командами Azure CLI".
Узнать больше деталей
Хотите подробнее об одном из тем, описанных на этом шаге руководства? Чтобы узнать больше, воспользуйтесь ссылками в этой таблице.
| Тема | Подробнее |
|---|---|
| Различия в скриптах | Цитирование различий между языками сценариев |
| Правила цитирования в Bash | |
| Правила кавычек PowerShell | |
| Рекомендации по запуску Azure CLI на языке сценариев PowerShell | |
| Советы по командной строке Windows | |
| Параметры | Используйте кавычки в параметрах Azure CLI |
| Найдите больше примеров синтаксиса для Bash, PowerShell и Cmd в результатах выполнения команды с использованием JMESPath | |
| Устранение неполадок | Устранение неполадок команд Azure CLI |
Следующий шаг
Теперь, когда вы узнали, как писать синтаксис Azure CLI для Bash, PowerShell и Cmd, перейдите к следующему шагу, чтобы узнать, как извлечь значения в переменную.