Lär dig skillnader i Azure CLI-syntax i Bash, PowerShell och Cmd
Artikel
Azure CLI-kommandon kan köras i skriptspråken Bash, PowerShell och Windows-kommandogränssnittet (Cmd ). Det finns dock skillnader i subtila skript. 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.
Du har åtkomst till en resursgrupp med contributor eller högre behörigheter på resursgruppsnivå.
Tänk på radfortsättningstecken
De flesta Azure CLI-dokumentationen skrivs och testas i Bash med Hjälp av Azure Cloud Shell. En av de första saker att komma ihåg när du kopierar Azure CLI-syntax är att verifiera radfortsättningstecken för det valda skriptspråket eftersom de inte är utbytbara.
skriptspråk
Radfortsättningstecken
Våldsamt slag
Omvänt snedstreck (\)
PowerShell
Backtick (`)
Cmd
Morot (^)
Tips
Knappen Kopiera i det övre högra hörnet av Azure CLI-kodblock tar bort omvänt snedstreck (\) 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
Bash
PowerShell
Cmd
Skapa variabel
variableName=varValue
$variableName="varValue"
ange variableName=varValue
Använda variabel som parametervärde
variableName
$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:
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
PowerShell
Cmd
Text
"text" eller "text"
"text" eller "text"
"text"
Antal
\'50\'
''50''
"50"
Booleskt
\'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. Detta påverkar citat.
Lista med blankstegsavgränsad: --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 kommer att 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 och använder resursgruppen som skapades i Förbered 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. Det här exemplet tilldelar ett slumpmässigt ID till lagringskontots namn, men om du vill använda ett annat namn kan du läsa Översikt över lagringskonto 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:
:: Variable block
set randomIdentifier=%RANDOM%
set location="eastus"
set resourceGroup="<msdocs-tutorial-rg-00000000>"
set 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
Anteckning
Fick du just 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. Information om hur du registrerar en resursprovider finns i Azure-resursprovidrar 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.
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
Undfly 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.
Azure CLI
# 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
Azure CLI
# 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"Floor number="''""# Create a new tag containing special characters resulting in "Path": "$G:\\myPath".# Nate the backtick as both the line continuation and the PowerShell escape character.az storage account update --name<msdocssa00000000> `
--resource-group<msdocs-tutorial-rg-00000000> `
--tags"Path=`$G:\myPath"# Create a tag from a variable.# In PowerShell, prefix your variable name with a dollar sign.$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.
Azure CLI
# 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
Azure CLI
:: 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"Floor number="''""
Om du behöver ändra en Azure-resurs med hjälp av en variabel föreslår vi att du använder Bash. Cmd tolkar ofta inte variabelvärden med specialtecken som förväntat. Du får ofta felet "InvalidCharacters" eller så är taggvärdet tomt.
Jämför fler skriptspråkspecifika skript
Ta en djupare titt på dessa skriptskillnader. De här exemplen visar på skillnader för följande:
Exempel på en parameter som innehåller en JSON-sträng. Det här skriptet ges för framtida referens eftersom vi inte arbetar med az rest i den här självstudien.
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.
Azure CLI
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.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> \
--query"[?allowBlobPublicAccess == \`true\`].id"
Exempel på filtrering av ett datum med lagringskontot som skapades i den här självstudien.
Azure CLI
# include timeaz 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 timeaz 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 variablesaDate=$(date +%F -d"-30days")
az storage account list --resource-group<msdocs-tutorial-rg-00000000> \
--query"[?creationTime >='$saDate'].{saName:name, saID: id, sku: sku.name}"
Exempel på en parameter som innehåller en JSON-sträng. Det här skriptet ges för framtida referens eftersom vi inte arbetar med az rest i den här självstudien.
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.
Azure CLI
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.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> `
--query"[?allowBlobPublicAccess == ``true``].id"
Exempel på filtrering av ett datum med lagringskontot som skapades i den här självstudien.
Azure CLI
# include timeaz 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 timeaz 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=$saDate.AddDays(-30).tostring("yyyy-mm-dd")
az storage account list --resource-group<msdocs-tutorial-rg-00000000> `
--query"[?creationTime >='$saDate'].{saName:name, saID: id, sku: sku.name}"
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.
Azure CLI
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.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> ^
--query"[?allowBlobPublicAccess == `true`].id"
Exempel på filtrering av ett datum med lagringskontot som skapades i den här självstudien.
Azure CLI
# include timeaz vm list --resource-group DevEx-Data-Analysis2 ^
--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"[?creationTime >='2021-11-15T19:14:27.103127+00:00'].{saName:name, saID: id, sku: sku.name}"# exclude timeaz 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 variablesaDate=$(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 --debug parameter
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 är --debug svaret att se de steg som Azure CLI kör.
Här är en liten del av felsökningsutdata när du skapar ett lagringskonto:
Även om --debug det visar 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.
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.
Källan för det här innehållet finns på GitHub, där du även kan skapa och granska ärenden och pull-begäranden. Se vår deltagarguide för mer information.
Feedback om Azure CLI
Azure CLI är ett öppen källkod projekt. Välj en länk för att ge feedback:
Lär dig de grundläggande begreppen infrastruktur som kod, utforska de viktigaste skillnaderna mellan Azure CLI, Azure PowerShell, Bicep och Terraform och bestäm vilka kommandoradsverktyg som bäst uppfyller organisationens behov.
Lär dig hur du använder Bash med Azure CLI. Fråga, formatera utdata, filtrera, använda variabler och använda Bash-konstruktioner av loopar, if/exists/then och case-instruktioner.