Obowiązkowe uwierzytelnianie wieloskładnikowe:
Przygotuj się teraz na wpływ uwierzytelniania wieloskładnikowego w interfejsie wiersza polecenia platformy Azure.Dowiedz się więcej
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Poznaj różnice składni interfejsu wiersza polecenia platformy Azure w powłokach Bash, programie PowerShell i programie Cmd
Artykuł
Polecenia interfejsu wiersza polecenia platformy Azure można wykonywać zarówno w językach skryptów powłoki Bash, programu PowerShell, jak i powłoki poleceń systemu Windows (Cmd). Istnieją jednak różnice między skryptami podrzędnymi. W tym kroku samouczka dowiesz się, jak utworzyć pierwsze konto usługi Azure Storage i sformatować wartości parametrów dla wszystkich trzech języków skryptów.
Masz dostęp do grupy zasobów z uprawnieniami contributor lub wyższymi na poziomie grupy zasobów.
Należy pamiętać o znakach kontynuacji wiersza
Większość dokumentacji interfejsu wiersza polecenia platformy Azure jest napisana i przetestowana w powłoce Bash przy użyciu usługi Azure Cloud Shell. Jedną z pierwszych kwestii, które należy zapamiętać podczas kopiowania składni interfejsu wiersza polecenia platformy Azure jest sprawdzenie znaków kontynuacji wiersza dla wybranego języka skryptowego, ponieważ nie są one wymienne.
język skryptów
Znak kontynuacji wiersza
Bash
Ukośnik odwrotny (\)
Program PowerShell
Backtick (`)
Cmd
Marchew (^)
Porada
Przycisk Kopiuj w prawym górnym rogu bloków kodu interfejsu wiersza polecenia platformy Azure usuwa ukośnik odwrotny (\) i backtick (`) zgodnie z projektem. Jeśli chcesz skopiować sformatowany blok kodu, użyj klawiatury lub myszy, aby wybrać i skopiować przykład.
Omówienie różnic składni podczas korzystania ze zmiennych
Składnia używania zmiennych różni się nieco między językami skryptowymi. Oto porównanie:
Przypadek użycia
Bash
PowerShell
Cmd
Tworzenie zmiennej
variableName=varValue
$variableName="varValue"
set variableName=varValue
Użyj zmiennej jako wartości parametru
nazwa_zmiennej
$variableName
%variableName%
Używanie zmiennej w parametrze --query
"$variableName"
"$variableName"
"$variableName"
Istnieje kilka różnych sposobów zwracania informacji o zmiennej na ekranie konsoli, ale echo działa w większości przypadków. Oto porównanie:
Dowiedz się więcej o cytowaniu różnic między językami skryptów
Każdy parametr interfejsu wiersza polecenia platformy Azure jest ciągiem. Jednak każdy język skryptowy ma własne reguły obsługi pojedynczych i podwójnych cudzysłowów, spacji i wartości parametrów.
Wartość ciągu
Interfejs wiersza polecenia platformy Azure
PowerShell
Cmd
Text
"text" lub "text"
"text" lub "text"
"tekst"
Liczba
\'50\'
''50''
"50"
Wartość logiczna
\'true\'
''false''
"true"
Data
'2021-11-15'
'2021-11-15'
'2021-11-15'
JSON
"{"key":"value"}" lub "{"key":"value"}"
"{"key": "value"}" lub "{'"key": '"value'"}" lub "{""key"": ""value"}"
"{"key":"value"}"
Wiele parametrów interfejsu wiersza polecenia platformy Azure akceptuje rozdzielaną spacjami listę wartości. Ma to wpływ na cytowanie.
Lista rozdzielona spacjami: --parameterName firstValue secondValue
Lista rozdzielona spacjami: --parameterName "firstValue" "secondValue"
Wartości zawierające spację: --parameterName "value1a value1b" "value2a value2b" "value3"
Tworzenie konta magazynu w celu zastosowania poznanych informacji
W pozostałej części tego kroku samouczka przedstawiono cytowanie reguł w poleceniach interfejsu wiersza polecenia platformy Azure i użyto grupy zasobów utworzonej w sekcji Przygotowywanie środowiska dla interfejsu wiersza polecenia platformy Azure. Zastąp <msdocs-tutorial-rg-00000000> ciąg nazwą grupy zasobów.
Utwórz konto usługi Azure Storage do użycia w tym samouczku. W tym przykładzie przypisano losowy identyfikator do nazwy konta magazynu, ale jeśli chcesz użyć innej nazwy, zobacz Omówienie konta magazynu dla reguł nazw kont magazynu.
Ważne
Aby można było utworzyć konto magazynu, Microsoft.Storage dostawca zasobów musi być zarejestrowany w ramach subskrypcji. Aby dowiedzieć się więcej na temat rejestrowania typów zasobów, zobacz Rejestrowanie dostawcy zasobów.
W tym następnym przykładzie skryptu pokazano składnię specyficzną dla języka skryptów dla następujących elementów:
:: 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
Uwaga
Czy po prostu wystąpił błąd "Nie znaleziono subskrypcji"? Ten błąd występuje, gdy Microsoft.Storage nie jest zarejestrowany w aktywnej subskrypcji. Aby zarejestrować dostawcę zasobów, zobacz Dostawcy zasobów i typy platformy Azure.
Interfejs wiersza polecenia platformy Azure zwraca ponad 100 wierszy kodu JSON jako dane wyjściowe po utworzeniu nowego konta magazynu. Następujące dane wyjściowe słownika JSON zawierają pola pominięte w celu zwięzłości.
Tworzenie tagów w celu praktykowania różnic w cudzysłów
Za pomocą polecenia az storage account update dodaj tagi, aby ułatwić identyfikowanie konta magazynu i uzyskiwanie informacji na temat cytowania różnic. Te przykłady skryptów przedstawiają składnię specyficzną dla języka skryptów dla następujących elementów:
Wartości zawierające spacje
Cudzysłów puste spacje
Ucieczka znaków specjalnych
Używanie zmiennych
Parametr --tags akceptuje rozdzielaną spacjami listę par key:value. Zastąp <msdocs-tutorial-rg-00000000> ciąg nazwą grupy zasobów i <msdocssa00000000> nazwą konta usługi Azure Storage.
# 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"
Jeśli nie chcesz zastępować poprzednich tagów podczas pracy z tym krokiem samouczka, użyj polecenia az tag update , ustawiając parametr na --operationmergewartość .
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"
Jeśli nie chcesz zastępować poprzednich tagów podczas pracy z tym krokiem samouczka, użyj polecenia az tag update , ustawiając parametr na --operationmergewartość .
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="''""
Jeśli musisz zmodyfikować zasób platformy Azure przy użyciu zmiennej, sugerujemy użycie powłoki Bash. Cmd często nie interpretuje wartości zmiennych ze znakami specjalnymi zgodnie z oczekiwaniami. Często występuje błąd "InvalidCharacters" lub wartość tagu jest pusta.
Porównanie większej liczby skryptów specyficznych dla języka
Przyjrzyj się bliżej tym różnicom skryptów. W poniższych przykładach pokazano różnice w cudzysłów:
Przykład filtrowania wartości liczbowej. Jeśli nie masz maszyny wirtualnej w bieżącej subskrypcji, ten przykład zostanie podany do użycia w przyszłości.
Azure CLI
az vm list --resource-group<myResourceGroup> \
--query"[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Przykład filtrowania wartości logicznej przy użyciu konta magazynu utworzonego w tym samouczku.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> \
--query"[?allowBlobPublicAccess == \`true\`].id"
Przykłady filtrowania daty przy użyciu konta magazynu utworzonego w tym samouczku.
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}"
Przykład parametru zawierającego ciąg JSON. Ten skrypt jest podawany do użytku w przyszłości, ponieważ nie pracujemy z az rest tym samouczkiem.
Przykład filtrowania wartości liczbowej. Jeśli nie masz maszyny wirtualnej w bieżącej subskrypcji, ten przykład zostanie podany do użycia w przyszłości.
Azure CLI
az vm list --resource-group<myResourceGroup> `
--query"[?storageProfile.osDisk.diskSizeGb >=``50``].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb }" `
--output table
Przykład filtrowania wartości logicznej przy użyciu konta magazynu utworzonego w tym samouczku.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> `
--query"[?allowBlobPublicAccess == ``true``].id"
Przykłady filtrowania daty przy użyciu konta magazynu utworzonego w tym samouczku.
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}"
Przykład filtrowania wartości liczbowej. Jeśli nie masz maszyny wirtualnej w bieżącej subskrypcji, ten przykład zostanie podany do użycia w przyszłości.
Azure CLI
az vm list --resource-group<myResourceGroup> `
--query"[?storageProfile.osDisk.diskSizeGb >=`50`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb }" `
--output table
Przykład filtrowania wartości logicznej przy użyciu konta magazynu utworzonego w tym samouczku.
Azure CLI
az storage account list --resource-group<msdocs-tutorial-rg-00000000> ^
--query"[?allowBlobPublicAccess == `true`].id"
Przykłady filtrowania daty przy użyciu konta magazynu utworzonego w tym samouczku.
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}"
Interfejs wiersza polecenia platformy Azure oferuje --debug parametr, który może być używany z dowolnym poleceniem. Dane wyjściowe debugowania są obszerne, ale zawierają one następujące informacje:
Argumenty poleceń (wartości parametrów) interpretowane przez język skryptowy
Lokalizacja pliku dziennika
Szczegóły wywołania interfejsu API
Błędy wykonania
Jeśli podczas pracy z poleceniami interfejsu wiersza polecenia platformy Azure występują trudności z zrozumieniem i poprawianiem błędu wykonywania, --debug odpowiadasz na kroki wykonywane przez interfejs wiersza polecenia platformy Azure.
Poniżej przedstawiono niewielką część danych wyjściowych debugowania podczas tworzenia konta magazynu:
Chociaż --debug informuje o dokładnie tym, co interpretuje interfejs wiersza polecenia platformy Azure, drugą opcją jest zwrócenie wartości wyrażenia do konsoli. Ta metoda jest przydatna podczas weryfikowania wyników --query , które zostały szczegółowo omówione w temacie Wypełnianie zmiennych do użycia w skryptach.
Polecenie powłoki Bash echo po uruchomieniu w języku skryptowym programu PowerShell jest aliasem polecenia Write-Host programu PowerShell.
W poleceniu echo Cmd polecenie zwraca ciąg literału, w tym znaki ucieczki. Porównaj dane wyjściowe i --debugecho cmd:
Interfejs wiersza polecenia
Wyjście
az "{"key":"value"}" --debug
Argumenty poleceń: ['{"key":"value"}', '--debug']
set strExpression='"{"key": "value"}"
echo %strExpression%
"{\"key\": \"value\"}"
Rozwiązywanie problemów
Poniżej przedstawiono typowe błędy, gdy składnia polecenia referencyjnego interfejsu wiersza polecenia platformy Azure nie jest poprawnie napisana:
"Nieprawidłowe żądanie ... Element {something} jest nieprawidłowy" może być spowodowany spacją, pojedynczym lub podwójnym cudzysłowem albo brakiem cudzysłowu.
"Nieoczekiwany token..." jest widoczny, gdy jest dodatkowe miejsce lub cudzysłów.
Błąd "Nieprawidłowa wartość jmespath_type" często pochodzi z niepoprawnego cudzysłów w parametrze --query .
"Odwołanie do zmiennej jest nieprawidłowe" jest odbierane, gdy ciąg nie jest poprawnie sformatowany z powodu łączenia lub brakującego znaku ucieczki.
"Nierozpoznane argumenty" jest często spowodowane nieprawidłowym znakiem kontynuacji wiersza.
"Brak wyrażenia po operatorze jednoargumentowym" jest wyświetlany, gdy brakuje znaku kontynuacji wiersza.
Czy chcesz uzyskać więcej szczegółowych informacji na temat jednego z tematów omówionych w tym kroku samouczka? Skorzystaj z linków w tej tabeli, aby dowiedzieć się więcej.
Teraz, gdy wiesz już, jak napisać składnię interfejsu wiersza polecenia platformy Azure dla powłoki Bash, programu PowerShell i narzędzia Cmd, przejdź do następnego kroku, aby dowiedzieć się, jak wyodrębnić wartości do zmiennej.
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie Azure CLI
Azure CLI to projekt typu open source. Wybierz link, aby przekazać opinię:
Poznaj podstawowe pojęcia dotyczące infrastruktury jako kodu, zapoznaj się z kluczowymi różnicami między interfejsem wiersza polecenia platformy Azure, programem Azure PowerShell, aplikacją Bicep i programem Terraform oraz zdecyduj, które narzędzia wiersza polecenia najlepiej spełniają potrzeby organizacji.
Zaprezentuj kluczowe umiejętności do konfigurowania, zabezpieczania i administrowania kluczowymi funkcjami zawodowymi na platformie Microsoft Azure oraz zarządzania nimi.
Dowiedz się, jak używać powłoki Bash z interfejsem wiersza polecenia platformy Azure. Wykonywanie zapytań, formatowanie danych wyjściowych, filtrowanie, używanie zmiennych i używanie konstrukcji powłoki Bash pętli, if/exists/then i instrukcji case.
Znajdź linki do przykładów interfejsu wiersza polecenia platformy Azure. Wyszukaj według usługi platformy Azure, nazwy polecenia lub nazwy pliku Usługi GitHub.
Znajdź linki do artykułów interfejsu wiersza polecenia platformy Azure demonstrujących użycie poleceń referencyjnych. Wyszukaj według nazwy grupy referencyjnej lub polecenia.
Szybkie dołączanie przy użyciu interfejsu wiersza polecenia platformy Azure. Uzyskaj odpowiedzi na typowe pytania dotyczące interfejsu wiersza polecenia i dowiedz się, jak używać interfejsu wiersza polecenia platformy Azure.