Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure CLI-kommandon kan köras i bash-, PowerShell- och Windows-kommandogränssnittsspråk (cmd). Det finns dock subtila skriptskillnader. I det här självstudiesteget får du lära dig hur du skapar ditt första Azure Storage-konto och formaterar parametervärden för alla tre skriptspråken.
Förutsättningar
- Du har slutfört de nödvändiga stegen för att förbereda din miljö.
- Du har åtkomst till en resursgrupp med
contributoreller högre behörigheter på resursgruppsnivå.
Tänk på radfortsättningstecken
De flesta Azure CLI-dokument skrivs och testas i Bash med hjälp av Azure Cloud Shell. En av de första sakerna att komma ihåg när du kopierar Azure CLI-syntaxen är att verifiera radfortsättningstecken för det valda skriptspråket, eftersom de inte är utbytbara.
| Skriptspråk | Radfortsättningstecken |
|---|---|
| Bash | Omvänt snedstreck (\) |
| PowerShell | Backtick (`) |
| Cmd | Caret (^) |
Tips/Råd
Knappen Kopiera i det övre högra hörnet av Azure CLI-kodblocken tar bort bakåtsnedstreck (\) och backtick (`) avsiktligt. Om du vill kopiera ett formaterat kodblock använder du tangentbordet eller musen för att välja och kopiera exemplet.
Förstå syntaxskillnader när du använder variabler
Syntaxen för att använda variabler varierar något mellan skriptspråk. Här är en jämförelse:
| Användningsfall | Smäll | PowerShell | Cmd |
|---|---|---|---|
| Skapa variabel | variableName=varValue | $variableName="varValue" | sätt variableName=varValue |
| Använda variabel som parametervärde | variabelNamn | $variableName | %variableName% |
Använda variabel i --query parameter |
"$variableName" | "$variableName" | "$variableName" |
Det finns flera olika sätt att returnera variabel information till konsolskärmen, men echo fungerar i de flesta fall. Här är en jämförelse:
- ** Bash: echo $varResourceGroup
- PowerShell: eko $varResourceGroup
- Cmd: eko %varResourceGroup%
I steg 3 , Fyll i variabler för användning i skript, går du igenom djupgående exempel på variabelsyntax.
Lär dig mer om att citera skillnader mellan skriptspråk
Varje Azure CLI-parameter är en sträng. Varje skriptspråk har dock egna regler för hantering av enkla och dubbla citattecken, blanksteg och parametervärden.
| Strängvärde | Azure CLI (kommandoradsgränssnittet för Azure) | PowerShell | Cmd |
|---|---|---|---|
| Text | 'text' eller "text" | 'text' eller "text" | "text" |
| Nummer | \'50\' | ''50'' | "50" |
| Boolesk | \'true\' | ''false'' | "sant" |
| Datum | '2021-11-15' | '2021-11-15' | '2021-11-15' |
| JSON | {"key":"value"} eller "{"key":"value"}" | {"key": "value"} eller "{'"key"": '"value'"}" eller "{""key"": ""value""}" | {"key":"value"} |
Många Azure CLI-parametrar accepterar en utrymmesavgränsad lista med värden. Det här formatet påverkar citering.
- Ociterad blankstegsavgränsad lista: --parameterName firstValue secondValue
- Lista med citat-tecken och blankstegsavgränsade element: --parameterName "firstValue" "secondValue"
- Värden som innehåller ett blanksteg: --parameterName "value1a value1b" "value2a value2b" "value3"
Om du inte är säker på hur strängen utvärderas av skriptspråket returnerar du värdet för en sträng till konsolen eller använder --debug enligt beskrivningen i Felsöka Azure CLI-referenskommandon.
Skapa ett lagringskonto för att tillämpa det du har lärt dig
Resten av det här självstudiesteget visar hur du citerar regler i Azure CLI-kommandon med hjälp av resursgruppen som skapades i Förbereda din miljö för Azure CLI. Ersätt <msdocs-tutorial-rg-00000000> med namnet på resursgruppen.
Skapa ett Azure Storage-konto som ska användas i den här självstudien. I det här exemplet tilldelas lagringskontots namn ett slumpmässigt ID. Om du vill använda ett annat namn kan du dock läsa översikten över lagringskontot för regler för lagringskontonamn.
Viktigt!
Innan du kan skapa ett lagringskonto måste resursprovidern Microsoft.Storage registreras i din prenumeration. Mer information om hur du registrerar resurstyper finns i Registrera resursprovider.
I nästa skriptexempel visas skriptspråkspecifik syntax för följande:
- Radfortsättning
- Variabel användning
- Slumpmässiga identifierare
-
echokommando
# 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
Anmärkning
Fick du felet "Det gick inte att hitta prenumerationen"? Det här felet uppstår när Microsoft.Storage det inte är registrerat i den aktiva prenumerationen. För att registrera en resursleverantör, se Azure-resursleverantörer och typer.
Azure CLI returnerar över 100 rader JSON som utdata när ett nytt lagringskonto skapas. Följande JSON-ordlisteutdata innehåller fält som utelämnats för korthet.
{
"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"
}
Skapa taggar för att öva på att citera skillnader
Med az storage account update lägger du till taggar som hjälper dig att identifiera ditt lagringskonto och lära dig mer om att citera skillnader. Dessa skriptexempel visar skriptspråksspecifik syntax för följande:
- Värden som innehåller blanksteg
- Citera tomma blanksteg
- Flykt av specialtecken
- Använda variabler
Parametern --tags accepterar en blankstegsavgränsad lista över nyckel:värde-par. Ersätt <msdocs-tutorial-rg-00000000> med namnet på resursgruppen och <msdocssa00000000> med namnet på ditt Azure Storage-konto.
# 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"
Om du inte vill skriva över tidigare taggar medan du går igenom det här självstudiesteget använder du kommandot az tag update och anger parametern --operation till 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
Jämför fler skriptspråkspecifika skript
Ta en djupare titt på dessa skriptskillnader. Dessa exempel visar på citatskillnader för följande:
- Skicka en JSON-sträng som ett parametervärde
- Filtrera resultat med parametern
--query- Siffror
- Booleska värden
- Datum
Exempel på en parameter som innehåller en JSON-sträng. Det här skriptet ges för framtida bruk eftersom vi inte arbetar med az rest i den här självstudiekursen.
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}}}'
Exempel på filtrering för ett numeriskt värde. Om du inte har en virtuell dator i din aktuella prenumeration ges det här exemplet för framtida referens.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Exempel på filtrering av ett booleskt värde med hjälp av lagringskontot som skapades i den här självstudien.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Exempel på hur man filtrerar ett datum med hjälp av lagringskontot som skapades i denna handledning.
# 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}"
Felsöka Azure CLI-referenskommandon
Använda felsökningsparameter
Azure CLI erbjuder en --debug parameter som kan användas med valfritt kommando. Felsökningsutdata är omfattande, men det ger dig information, inklusive följande:
- Kommandoargument (parametervärden) som tolkas av skriptspråket
- Plats för loggfilen
- API-anropsinformation
- Körningsfel
Om du har svårt att förstå och korrigera ett körningsfel när du arbetar med Azure CLI-kommandon, kan --debug vara lösningen för att se stegen som Azure CLI utför.
Här är en del av felsökningsutdata när du skapar ett lagringskonto:
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
...
Mer felsökningstips finns i Felsöka Azure CLI.
Använd ekokommando
Även om --debug talar om exakt vad Azure CLI tolkar, är ett andra alternativ att returnera värdet för ett uttryck till konsolen. Den här metoden är användbar när du verifierar resultatet av --query, som beskrivs i detalj i Fyll i variabler för användning i skript.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Felsökning
Här är vanliga fel när en Azure CLI-referenskommandosyntax inte skrivs korrekt:
- "Felaktig begäran ... {something} är ogiltigt" kan orsakas av blanksteg, enkla eller dubbla citattecken eller brist på citattecken.
- "Oväntad symbol..." visas när det finns ett extra utrymme eller citattecken.
- Felet "Ogiltigt jmespath_type-värde" beror ofta på felaktig citering i parametern
--query. - Ett felmeddelande "Variabelreferensen är inte giltig” visas när en sträng inte är korrekt formaterad, ofta på grund av konkatenation eller ett saknat escape-tecken.
- "Okända argument" orsakas ofta av ett felaktigt radfortsättningstecken.
- "Saknade uttryck efter unary-operatorn" visas när ett radfortsättningstecken saknas.
Fler felsökningstips finns i Felsöka Azure CLI-kommandon.
Få mer information
Vill du ha mer information om något av de ämnen som beskrivs i det här självstudiesteget? Använd länkarna i den här tabellen om du vill veta mer.
| Ämne | Lära sig mer |
|---|---|
| Skillnader i skript | Citera skillnader mellan skriptspråk |
| Bashs citeringsregler | |
| Regler för PowerShell-citat | |
| Överväganden för att köra Azure CLI på ett PowerShell-skriptspråk | |
| Kommandoradstips för Windows | |
| Parameterar | Använda citattecken i Azure CLI-parametrar |
| Hitta fler syntaxexempel på Bash, PowerShell och Cmd i Frågekommandoutdata med JMESPath | |
| Felsökning | Felsöka Azure CLI-kommandon |
Nästa steg
Nu när du har lärt dig hur du skriver Azure CLI-syntax för Bash, PowerShell och Cmd går du vidare till nästa steg för att lära dig hur du extraherar värden till en variabel.