Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Příkazy Azure CLI se dají spouštět v jazycích skriptování Bash, PowerShell a příkazového řádku Windows (cmd). Existují však drobné rozdíly ve skriptování. V tomto kurzu se dozvíte, jak vytvořit první hodnoty účtu služby Azure Storage a formátovat hodnoty parametrů pro všechny tři skriptovací jazyky.
Požadavky
- Dokončili jste požadavky pro přípravu prostředí.
- Máte přístup ke skupině prostředků s oprávněními
contributornebo vyššími na úrovni skupiny prostředků.
Mějte na paměti znaky pokračování na řádku.
Většina dokumentace k Azure CLI je napsaná a otestovaná v Bash pomocí Azure Cloud Shellu. Jednou z prvních věcí, které je potřeba si zapamatovat při kopírování syntaxe Azure CLI, je ověřit znaky pokračování řádku pro zvolený skriptovací jazyk, protože se nedají zaměnit.
| Skriptovací jazyk | Znak pokračování řádku |
|---|---|
| Bash | Zpětné lomítko (\) |
| PowerShell | Zpětná uvozovka (`) |
| Cmd | Stříška (^) |
Návod
Tlačítko Kopírovat v pravém horním rohu bloků kódu Azure CLI záměrně odstraní zpětné lomítko (\) a zpětný apostrof (`). Pokud chcete zkopírovat formátovaný blok kódu, vyberte a zkopírujte příklad pomocí klávesnice nebo myši.
Vysvětlení rozdílů v syntaxi při použití proměnných
Syntaxe použití proměnných se mírně liší mezi skriptovacími jazyky. Tady je porovnání:
| Případ použití | Bash | PowerShell | Cmd |
|---|---|---|---|
| Vytvoření proměnné | variableName=varValue | $variableName="varValue" | set variableName=varValue |
| Použijte proměnnou jako hodnotu parametru | Název proměnné | $variableName | %variableName% |
Použití proměnné v --query parametru |
"$variableName" | "$variableName" | "$variableName" |
Informace týkající se proměnných můžete vrátit na konzolový displej různými způsoby, ale echo funguje ve většině okolností. Tady je porovnání:
- Bash: echo $varResourceGroup
- PowerShell: $varResourceGroup echo
- Cmd: echo %varResourceGroup%
V kroku 3 pracujete s proměnnými pro použití ve skriptech pomocí podrobných příkladů syntaxe proměnných.
Informace o citování rozdílů mezi skriptovacími jazyky
Každý parametr Azure CLI je řetězec. Každý skriptovací jazyk má ale vlastní pravidla pro zpracování jednoduchých a dvojitých uvozovek, mezer a hodnot parametrů.
| Řetězcová hodnota | Azure CLI (příkazový řádek nástroje Azure) | PowerShell | Cmd |
|---|---|---|---|
| Text | "text" nebo "text" | "text" nebo "text" | "text" |
| Číslo | \'50\' | ''50'' | 50 |
| logický | \`pravda\` | ''false'' | pravda |
| Datum | '2021-11-15' | '2021-11-15' | '2021-11-15' |
| JSON | `{"key":"value"} nebo {"key":"value"}` | {"key": "value"} nebo "{`"key`": `"value`"}" nebo "{""key"": ""value""}" | {"key":"value"} |
Mnoho parametrů Azure CLI přijímá seznam hodnot oddělených mezerami. Tento formát ovlivňuje citace.
- Seznam oddělený mezerami bez citování: --parameterName firstValue secondValue
- Seznam v uvozovkách oddělený mezerami: --parameterName "firstValue" "secondValue"
- Hodnoty, které obsahují mezeru: --parameterName "value1a value1b" "value2a value2b" "value3"
Pokud si nejste jistí, jak se řetězec vyhodnocuje skriptovacím jazykem, vraťte hodnotu řetězce do konzoly nebo použijte --debug , jak je vysvětleno v referenčních příkazech k ladění Azure CLI.
Vytvořte účet úložiště, abyste použili, co jste se naučili.
Zbývající část tohoto kroku výukového programu ukazuje pravidla pro citace v příkazech Azure CLI pomocí skupiny prostředků vytvořené při přípravě prostředí pro Azure CLI. Nahraďte <msdocs-tutorial-rg-00000000> jménem vaší skupiny zdrojů.
Vytvořte účet úložiště Azure, který se použije v tomto kurzu. Tento příklad přiřadí náhodné ID názvu účtu úložiště. Pokud ale chcete použít jiný název, projděte si přehled účtů úložiště pro pravidla názvů účtů úložiště.
Důležité
Než budete moct vytvořit účet úložiště, musí být poskytovatel prostředků Microsoft.Storage zaregistrován ve vašem předplatném. Další informace o registraci typů prostředků najdete v tématu Registrace poskytovatele prostředků.
Následující příklad skriptu ukazuje syntaxi specifickou pro skriptování pro následující:
- Pokračování řádku
- Použití proměnných
- Náhodné identifikátory
- Příkaz
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
Poznámka:
Zobrazila se vám chyba "Předplatné se nenašlo"? K této chybě dochází v případě, že Microsoft.Storage není zaregistrované v aktivním předplatném. Pro registraci poskytovatele prostředků si prohlédněte poskytovatele prostředků Azure a typy.
Azure CLI vrátí při vytvoření nového účtu úložiště více než 100 řádků JSON jako výstup. Následující výstup slovníku JSON obsahuje pole vynechána pro stručnost.
{
"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"
}
Vytvořte značky pro procvičení rozdílů v uvozování
Pomocí příkazu az storage account update přidejte značky, které vám pomohou identifikovat váš účet úložiště a dozvědět se o rozdílech v uvozovkách. Tyto příklady skriptů demonstrují syntaxi specifickou pro skriptování pro následující:
- Hodnoty obsahující mezery
- Uvozování prázdných míst
- Vyhnutí se speciálním znakům
- Použití proměnných
Parametr --tags přijímá seznam párů klíč:hodnota oddělených mezerami. Nahraďte <msdocs-tutorial-rg-00000000> názvem vaší skupiny prostředků a <msdocssa00000000> názvem svého účtu úložiště 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"
Pokud nechcete při práci v tomto kroku kurzu přepsat předchozí značky, použijte příkaz az tag update a nastavte --operation parametr na 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
Porovnejte více skriptů specifických pro skriptovací jazyk
Podívejte se podrobněji na tyto rozdíly mezi skripty. Tyto příklady ukazují rozdíly v použití uvozovek u následujících:
- Předání řetězce JSON jako hodnoty parametru
- Filtrování výsledků pomocí parametru
--query- Čísla
- Logické hodnoty
- Kalendářní data
Příklad parametru obsahujícího řetězec JSON Tento skript se poskytuje pro budoucí referenci, protože v tomto kurzu nepracujeme s 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}}}'
Příklad filtrování číselné hodnoty Pokud ve svém aktuálním předplatném nemáte virtuální počítač, zobrazí se tento příklad pro budoucí referenci.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Příklad filtrování logické hodnoty pomocí účtu úložiště vytvořeného v tomto kurzu
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Příklady filtrování data s použitím účtu úložiště, který byl vytvořen v tomto kurzu.
# 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}"
Ladit referenční příkazy Azure CLI
Použijte parametr ladění
Azure CLI nabízí --debug parametr, který lze použít s libovolným příkazem. Výstup ladění je rozsáhlý a zároveň vám poskytuje informace včetně následujících:
- Argumenty příkazů (hodnoty parametrů) interpretované skriptovacím jazykem
- Umístění souboru protokolu
- Podrobnosti volání rozhraní API
- Chyby spuštění
Pokud při práci s příkazy Azure CLI narazíte na potíže s pochopením a opravou chyby spuštění, --debug je odpovědí na kroky, které azure CLI spouští.
Tady je část výstupu z ladění během vytváření úložného účtu:
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
...
Další tipy pro řešení potíží najdete v tématu Řešení potíží s Azure CLI.
Použití příkazu echo
I když --debug vám přesně řekne, co Azure CLI interpretuje, druhou možností je vrátit hodnotu výrazu do konzoly. Tato metoda je užitečná při ověřování výsledků --query, která je podrobně popsána v přípravě proměnných pro použití ve skriptech.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Řešení problémů
Tady jsou běžné chyby, když syntaxe referenčního příkazu Azure CLI není správně napsaná:
- "Chybný požadavek... {něco} je neplatné" může být způsobeno mezerou, jednoduchou nebo dvojitou uvozovkou nebo nedostatkem uvozovek.
- Neočekávaný token... se objeví, když je přítomna přebytečná mezera nebo uvozovka.
- Chyba "Neplatná hodnota jmespath_type" často pochází z nesprávného uvozovek v parametru
--query. - Došlo k chybě 'Odkaz na proměnnou není platný', ke které dochází, pokud není řetězec správně naformátován, často kvůli zřetězení nebo chybějícímu únikovému znaku.
- Nerozpoznané argumenty jsou často způsobeny nesprávným znakem pokračování řádku.
- "Chybějící výraz za unárním operátorem" se zobrazí, když chybí znak pokračování řádku.
Další tipy pro řešení potíží najdete v tématu Řešení potíží s příkazy Azure CLI.
Získání dalších podrobností
Chcete podrobnější informace o jednom z témat popsaných v tomto kroku kurzu? Další informace získáte pomocí odkazů v této tabulce.
| Předmět | Další informace |
|---|---|
| Rozdíly skriptování | Citování rozdílů mezi skriptovacími jazyky |
| Pravidla citace Bash | |
| Pravidla použití uvozovek v PowerShellu | |
| Důležité informace o spuštění Azure CLI ve skriptovacím jazyce PowerShellu | |
| Tipy pro příkazový řádek Windows | |
| Parametry | Použití uvozovek v parametrech Azure CLI |
| Další příklady syntaxe prostředí Bash, PowerShell a Cmd ve výstupu příkazu dotazu pomocí JMESPath | |
| Řešení problémů | Řešení potíží s příkazy Azure CLI |
Další krok
Teď, když jste se naučili psát syntaxi Azure CLI pro Bash, PowerShell a Cmd, přejděte k dalšímu kroku, kde se dozvíte, jak extrahovat hodnoty do proměnné.