Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure CLI-Befehle können in den Skriptsprachen Bash, PowerShell als auch der Windows-Befehlsshell (Cmd) ausgeführt werden. Es gibt jedoch subtile Unterschiede bei den Skripten. In diesem Lernprogrammschritt erfahren Sie, wie Sie Ihr erstes Azure Storage-Konto erstellen und Parameterwerte für alle drei Skriptsprachen formatieren.
Voraussetzungen
- Sie haben die erforderlichen Schritte zum Vorbereiten Ihrer Umgebung ausgeführt.
- Sie haben Zugriff auf eine Ressourcengruppe mit
contributor
-Berechtigungen oder höheren auf der Ebene der Ressourcengruppe.
Achten Sie auf Zeilenfortsetzungszeichen
Die meisten Azure CLI-Dokumentationen werden mithilfe von Azure Cloud Shell in Bash geschrieben und getestet. Eines der ersten Punkte, die Sie beim Kopieren der Azure CLI-Syntax beachten sollten, besteht darin, die Zeilenfortsetzungszeichen für die ausgewählte Skriptsprache zu überprüfen, da sie nicht austauschbar sind.
Skriptsprache | Zeilenfortsetzungszeichen |
---|---|
Bash | Umgekehrter Schrägstrich (\ ) |
PowerShell | Backtick (` ) |
Cmd | Karotte (^ ) |
Tipp
Die Schaltfläche Kopieren in der oberen rechten Ecke von Azure CLI-Codeblöcken entfernt entwurfsbedingt den umgekehrten Schrägstrich (\
) und den Backtick (`
). Wenn Sie einen formatierten Codeblock kopieren möchten, verwenden Sie die Tastatur oder Maus, um das Beispiel auszuwählen und zu kopieren.
Grundlegendes zu den Syntaxunterschieden beim Verwenden von Variablen
Die Syntax für die Verwendung von Variablen variiert geringfügig zwischen Skriptsprachen. Hier ist ein Vergleich:
Anwendungsfall | Schlagen | PowerShell | Cmd |
---|---|---|---|
Variable erstellen | variableName=varValue | $variableName="varValue" | setze variableName=varValue |
Verwenden einer Variablen als Parameterwert | variableName | $variableName | %variableName% |
Verwenden einer Variablen im Parameter --query |
"$variableName" | "$variableName" | "$variableName" |
Es gibt verschiedene Möglichkeiten, Variableninformationen an den Konsolenbildschirm zurückzugeben, aber echo
funktioniert in den meisten Fällen. Hier ist ein Vergleich:
- Bash: Echo $varResourceGroup
- PowerShell: Echo-$varResourceGroup
- Cmd: Echo %varResourceGroup%
In Schritt 3 (Auffüllen der Variablen für die Verwendung in Skripts) arbeiten Sie ausführliche Beispiele für die Variablensyntax durch.
Erfahren Sie mehr über die Unterschiede im Zitieren zwischen Skriptsprachen
Jeder Azure CLI-Parameter ist eine Zeichenfolge. Jede Skriptsprache verfügt jedoch über eigene Regeln für die Behandlung einzelner und doppelter Anführungszeichen, Leerzeichen und Parameterwerte.
String-Wert | Azure-Befehlszeilenschnittstelle (Azure CLI) | PowerShell | Cmd |
---|---|---|---|
Text | „Text“ oder ‚Text‘ | „Text“ oder ‚Text‘ | "Text" |
Nummer | '50' | ''50'' | "50" |
Boolescher Typ (Boolean) | `wahr` | falsch | wahr |
Datum | '2021-11-15' | '2021-11-15' | '2021-11-15' |
JSON | '{"key":"value"}' oder "{"key":"value"}" | '{"key": "value"}' oder "{'"key'"": '"value'"}" oder "{"key"": ""value""}" | {"key":"value"} |
Viele Azure CLI-Parameter akzeptieren eine durch Leerzeichen getrennte Liste von Werten. Dies wirkt sich auf das Zitieren aus.
- Unquotierte durch Leerzeichen getrennte Liste: --parameterName firstValue secondValue
- Liste in Anführungszeichen, getrennt durch Leerzeichen: --parameterName "firstValue" "secondValue"
- Werte mit einem Leerzeichen: --parameterName "value1a value1b" "value2a value2b" "value3"
Wenn Sie nicht sicher sind, wie Ihre Zeichenfolge von Ihrer Skriptsprache ausgewertet wird, geben Sie den Wert einer Zeichenfolge an Ihre Konsole zurück oder verwenden --debug
Sie sie, wie in Debug Azure CLI-Referenzbefehlen erläutert.
Erstellen eines Speicherkontos, um das Gelernte anzuwenden
Im Rest dieses Tutorialschritts werden Regeln zu Anführungszeichen in Azure CLI-Befehlen veranschaulicht. Dabei wird die unter Vorbereiten der Umgebung für die Azure CLI erstellte Ressourcengruppe verwendet. Ersetzen Sie <msdocs-tutorial-rg-00000000>
durch den Namen Ihrer Ressourcengruppe.
Erstellen Sie ein Azure-Speicherkonto für dieses Tutorial. In diesem Beispiel wird dem Namen des Speicherkontos eine zufällige ID zugewiesen. Wenn Sie jedoch einen anderen Namen verwenden möchten, lesen Sie die Informationen zu Regeln für Speicherkontonamen in der Speicherkontoübersicht.
Von Bedeutung
Bevor Sie ein Speicherkonto erstellen können, muss der Microsoft.Storage
Ressourcenanbieter in Ihrem Abonnement registriert sein. Informationen zum Registrieren von Ressourcentypen finden Sie unter Registrieren des Ressourcenanbieters.
In diesem nächsten Skriptbeispiel wird die sprachspezifische Skriptsyntax für Folgendes veranschaulicht:
- Zeilenfortsetzung
- Variablenverwendung
- Zufällige Bezeichner
-
echo
-Befehl
# 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
Hinweis
Haben Sie gerade den Fehler "Abonnement nicht gefunden" erhalten? Dieser Fehler tritt auf, wenn Microsoft.Storage
nicht im aktiven Abonnement registriert ist. Informationen zum Registrieren eines Ressourcenanbieters finden Sie unter Azure-Ressourcenanbieter und -Typen.
Die Azure CLI gibt mehr als 100 Zeilen JSON-Code als Ausgabe zurück, wenn ein neues Speicherkonto erstellt wird. In der folgenden JSON-Wörterbuchausgabe wurden Felder aus Platzgründen weggelassen:
{
"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"
}
Tags erstellen, um die Unterschiede bei Anführungszeichen zu üben.
Fügen Sie mithilfe von az storage account update Tags hinzu, um Ihr Speicherkonto zu identifizieren und mehr über die Unterschiede bei der Verwendung von Anführungszeichen zu erfahren. In diesen Skriptbeispielen wird die sprachspezifische Skriptsyntax für Folgendes veranschaulicht:
- Werte, die Leerzeichen enthalten
- Leerzeichen zitieren
- Sonderzeichen escapen
- Variablen verwenden
Der Parameter --tags
akzeptiert eine durch Leerzeichen getrennte Liste von Schlüssel-Wert-Paaren. Ersetzen Sie <msdocs-tutorial-rg-00000000>
durch den Namen Ihrer Ressourcengruppe und <msdocssa00000000>
durch den Namen Ihres Azure-Speicherkontos.
# 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"
Wenn Sie vorherige Tags nicht überschreiben möchten, während Sie diesen Tutorialschritt durcharbeiten, verwenden Sie den Befehl az tag update, um den Parameter --operation
auf merge
festzulegen.
# 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
Vergleich weiterer skriptsprachenbezogener Skripte
Sehen Sie sich diese Skriptunterschiede genauer an. In diesen Beispielen werden die Unterschiede bei der Verwendung von Anführungszeichen für Folgendes veranschaulicht:
- Übergeben einer JSON-Zeichenfolge als Parameterwert
- Filtern von Ergebnissen mit dem Parameter
--query
- Zahlen
- Boolesche Werte
- Datumsangaben
Beispiel eines Parameters mit einer JSON-Zeichenfolge. Dieses Skript dient als zukünftige Referenz, da wir in diesem Tutorial nicht mit az rest
arbeiten.
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}}}'
Beispiel für das Filtern nach einem numerischen Wert. Sofern Sie nicht über eine VM in Ihrem aktuellen Abonnement verfügen, dient dieses Beispiel als zukünftige Referenz.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Beispiel für das Filtern eines booleschen Werts mithilfe des in diesem Tutorial erstellten Speicherkontos.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Beispiele für das Filtern nach einem Datum mithilfe des in diesem Tutorial erstellten Speicherkontos.
# 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}"
Debuggen von Azure CLI-Referenzbefehlen
Verwenden des Parameters --debug
Die Azure CLI bietet einen --debug
-Parameter, der mit jedem Befehl verwendet werden kann. Die Debugausgabe ist umfangreich, bietet Ihnen jedoch folgende Informationen:
- Befehlsargumente (Parameterwerte), wie sie von Ihrer Skriptsprache interpretiert werden
- Speicherort der Protokolldatei
- API-Aufrufdetails
- Ausführungsfehler
Wenn beim Arbeiten mit Azure CLI-Befehlen Schwierigkeiten beim Verstehen und Beheben eines Ausführungsfehlers auftreten, ist --debug
die Lösung, um die Schritte zu sehen, die die Azure CLI ausführt.
Hier ist ein kleiner Teil der Debugausgabe beim Erstellen eines Speicherkontos:
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
...
Weitere Tipps zur Problembehandlung finden Sie unter "Problembehandlung bei Azure CLI".
Verwenden des Befehls echo
--debug
gibt genau an, was die Azure CLI interpretiert. Eine zweite Option besteht jedoch darin, den Wert eines Ausdrucks an Ihre Konsole zurückzugeben. Diese Methode ist hilfreich, wenn sie die Ergebnisse des --query
-Elements überprüfen, das unter Auffüllen der Variablen für die Verwendung in Skript ausführlich behandelt wird.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Problembehandlung
Im Anschluss sind häufige Fehler aufgeführt, die auftreten, wenn eine Azure CLI-Verweisbefehlssyntax nicht ordnungsgemäß geschrieben wird:
„Ungültige Anforderung ... {etwas} ist ungültig“: Dieser Fehler kann durch ein Leerzeichen, ein einfaches Anführungszeichen oder doppelte Anführungszeichen oder durch fehlende Anführungszeichen verursacht werden.
„Unerwartetes Token...“ erscheint, wenn ein zusätzliches Leer- oder Anführungszeichen vorhanden ist.
Der Fehler „Ungültiger Wert für jmespath_type“ tritt oft aufgrund falscher Anführungszeichen im Parameter
--query
auf.„Ungültiger Variablenverweis“ wird angezeigt, wenn ein String falsch formatiert ist, oft aufgrund einer Verkettung oder eines fehlenden Escapezeichens.
„Unbekannte Argumente“ werden fälschlicherweise durch ein falsches Zeilenfortsetzungszeichen verursacht.
„Fehlender Ausdruck nach dem unären Operator“ wird angezeigt, wenn ein Zeilenfortsetzungszeichen fehlt.
Weitere Tipps zur Problembehandlung finden Sie unter "Problembehandlung bei Azure CLI-Befehlen".
Weitere Details
Möchten Sie weitere Details zu einem der in diesem Tutorialschritt behandelten Themen? Weitere Informationen finden Sie unter den Links in dieser Tabelle:
Betreff | Erfahren Sie mehr |
---|---|
Skriptunterschiede | Unterschiede zwischen Skriptsprachen aufzeigen |
Bash-Quotierungsregeln | |
PowerShell-Quotingregeln | |
Überlegungen zum Ausführen der Azure CLI in einer PowerShell-Skriptsprache | |
Tipps zur Windows-Befehlszeile | |
Die Parameter | Verwenden von Anführungszeichen in Azure CLI-Parametern |
Weitere Syntaxbeispiele für Bash, PowerShell und Cmd finden Sie unter Abfragen von Befehlsausgaben mit JMESPath. | |
Problembehandlung | Problembehandlung bei Azure CLI-Befehlen |
Nächster Schritt
Sie haben gelernt, wie Sie die Azure CLI-Syntax für Bash, PowerShell und Cmd schreiben. Fahren Sie nun mit dem nächsten Schritt fort, um zu erfahren, wie Sie Werte in eine Variable extrahieren.