Pelajari perbedaan sintaks Azure CLI dalam Bash, PowerShell, dan Cmd
Perintah Azure CLI dapat dijalankan dalam bahasa skrip bash, PowerShell, dan windows command shell (Cmd ). Namun, ada perbedaan pembuatan skrip subtile. Dalam langkah tutorial ini, pelajari cara membuat Akun Azure Storage pertama Anda dan memformat nilai parameter untuk ketiga bahasa skrip.
Prasyarat
- Anda menyelesaikan prasyarat untuk menyiapkan lingkungan Anda.
- Anda memiliki akses ke grup sumber daya dengan
contributor
izin atau lebih tinggi di tingkat grup sumber daya.
Waspadai karakter kelanjutan baris
Sebagian besar dokumentasi Azure CLI ditulis dan diuji di Bash menggunakan Azure Cloud Shell. Salah satu hal pertama yang perlu diingat saat menyalin sintaks Azure CLI adalah memverifikasi karakter kelanjutan baris untuk bahasa skrip yang Anda pilih karena tidak dapat dipertukarkan.
bahasa skrip | Karakter kelanjutan baris |
---|---|
Bash | Garis miring terbelakang (\ ) |
PowerShell | Backtick (` ) |
Cmd | Wortel (^ ) |
Tip
Tombol Salin di sudut kanan atas blok kode Azure CLI menghapus garis miring terbelakang (\
) dan backtick (`
) menurut desain. Jika Anda ingin menyalin blok kode yang diformat, gunakan keyboard atau mouse Anda untuk memilih dan menyalin contoh.
Memahami perbedaan sintaksis saat menggunakan variabel
Sintaks untuk menggunakan variabel sedikit bervariasi di antara bahasa skrip. Berikut adalah perbandingan:
Gunakan huruf besar | Bash | PowerShell | Cmd |
---|---|---|---|
Buat variabel | variableName=varValue | $variableName="varValue" | set variableName=varValue |
Gunakan variabel sebagai nilai parameter | variableName | $variableName | %variableName% |
Gunakan variabel dalam --query parameter |
'$variableName' | '$variableName' | '$variableName' |
Ada beberapa cara berbeda untuk mengembalikan informasi variabel ke layar konsol Anda, tetapi echo
berfungsi dalam sebagian besar keadaan. Berikut adalah perbandingan:
- Bash: $varResourceGroup gema
- PowerShell: echo $varResourceGroup
- Cmd: gema %varResourceGroup%
Di langkah ketiga, Isi variabel untuk digunakan dalam skrip, Anda bekerja melalui contoh mendalam sintaks variabel.
Pelajari tentang mengutip perbedaan antara bahasa skrip
Setiap parameter Azure CLI adalah string. Namun, setiap bahasa pembuatan skrip memiliki aturannya sendiri untuk menangani tanda kutip tunggal dan ganda, spasi, dan nilai parameter.
Nilai untai (karakter) | Azure CLI | PowerShell | Cmd |
---|---|---|---|
Teks | 'teks' atau "teks" | 'teks' atau "teks" | "teks" |
Number | \'50\' | ''50'' | '50' |
Boolean | \'true\' | ''false'' | 'true' |
Tanggal | '2021-11-15' | '2021-11-15' | '2021-11-15' |
JSON | '{"key":"value"}' atau "{"key":"value"}" | '{"key": "value"}' or "{'"key'"": '"value'"}" or "{""key"": ""value""}" | "{"key":"value"}" |
Banyak parameter Azure CLI menerima daftar nilai yang dipisahkan spasi. Ini berdampak pada kutipan.
- Daftar yang dipisahkan spasi yang tidak dikutip: --parameterName firstValue secondValue
- Daftar yang dipisahkan spasi yang dikutip: --parameterName "firstValue" "secondValue"
- Nilai yang berisi spasi: --parameterName "value1a value1b" "value2a value2b" "value3"
Jika Anda tidak yakin bagaimana string Anda akan dievaluasi oleh bahasa skrip Anda, kembalikan nilai string ke konsol Anda atau gunakan --debug
seperti yang dijelaskan dalam perintah referensi Debug Azure CLI.
Membuat akun penyimpanan untuk menerapkan apa yang telah Anda pelajari
Sisa langkah tutorial ini menunjukkan aturan kutipan dalam perintah Azure CLI, dan menggunakan grup sumber daya yang dibuat di Menyiapkan lingkungan Anda untuk Azure CLI. Ganti <msdocs-tutorial-rg-00000000>
dengan nama grup sumber daya Anda.
Buat akun penyimpanan Azure untuk digunakan dalam tutorial ini. Contoh ini menetapkan ID acak ke nama akun penyimpanan, tetapi jika Anda ingin menggunakan nama yang berbeda, lihat Gambaran umum akun penyimpanan untuk aturan nama akun penyimpanan.
Contoh skrip berikutnya ini menunjukkan sintaksis khusus bahasa pembuatan skrip untuk hal berikut:
- Kelanjutan baris
- Penggunaan variabel
- Pengidentifikasi acak
- perintah
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
Catatan
Apakah Anda baru saja menerima kesalahan "Langganan tidak ditemukan"? Kesalahan ini terjadi ketika Microsoft.Storage
tidak terdaftar dalam langganan aktif. Untuk mendaftarkan penyedia sumber daya, lihat Penyedia dan jenis sumber daya Azure.
Azure CLI mengembalikan lebih dari 100 baris JSON sebagai output saat akun penyimpanan baru dibuat. Output kamus JSON berikut memiliki bidang yang dihilangkan untuk brevity.
{
"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"
}
Membuat tag untuk mempraktikkan perbedaan kutipan
Dengan menggunakan pembaruan akun penyimpanan az, tambahkan tag untuk membantu Anda mengidentifikasi akun penyimpanan Anda dan mempelajari tentang perbedaan kutipan. Contoh skrip ini menunjukkan sintaksis khusus bahasa pembuatan skrip untuk hal berikut:
- Nilai yang berisi spasi
- Mengutip spasi kosong
- Pelepasan karakter khusus
- Menggunakan variabel
Parameter --tags
menerima daftar pasangan kunci:nilai yang dipisahkan spasi. Ganti <msdocs-tutorial-rg-00000000>
dengan nama grup sumber daya Anda dan <msdocssa00000000>
dengan nama akun penyimpanan Azure Anda.
# 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"
Jika Anda tidak ingin menimpa tag sebelumnya saat Anda bekerja melalui langkah tutorial ini, gunakan perintah az tag update mengatur --operation
parameter ke 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
Membandingkan lebih banyak skrip khusus bahasa skrip
Lihat lebih dalam perbedaan skrip ini. Contoh-contoh ini menunjukkan perbedaan kutipan untuk hal berikut:
- Meneruskan string JSON sebagai nilai parameter
- Memfilter hasil dengan
--query
parameter- Angka
- Nilai Boolean
- Tanggal
Contoh parameter yang berisi string JSON. Skrip ini diberikan untuk referensi di masa mendatang karena kami tidak bekerja dengan az rest
dalam tutorial ini.
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}}}'
Contoh pemfilteran untuk nilai numerik. Kecuali Anda memiliki VM dalam langganan Anda saat ini, contoh ini diberikan untuk referensi di masa mendatang.
az vm list --resource-group <myResourceGroup> \
--query "[?storageProfile.osDisk.diskSizeGb >=\`50\`].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
--output table
Contoh pemfilteran nilai boolean menggunakan akun penyimpanan yang dibuat dalam tutorial ini.
az storage account list --resource-group <msdocs-tutorial-rg-00000000> \
--query "[?allowBlobPublicAccess == \`true\`].id"
Contoh pemfilteran tanggal menggunakan akun penyimpanan yang dibuat dalam tutorial ini.
# 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}"
Men-debug perintah referensi Azure CLI
Gunakan --debug
parameter
Azure CLI menawarkan --debug
parameter yang dapat digunakan dengan perintah apa pun. Output debug luas, tetapi memberi Anda informasi termasuk yang berikut:
- Argumen perintah (nilai parameter) seperti yang ditafsirkan oleh bahasa skrip Anda
- Lokasi file log Anda
- Detail panggilan API
- Kesalahan eksekusi
Jika saat bekerja dengan perintah Azure CLI, Anda mengalami kesulitan memahami dan memperbaiki kesalahan eksekusi, --debug
adalah jawaban Anda untuk melihat langkah-langkah yang dijalankan Azure CLI.
Berikut adalah sebagian kecil output debug saat membuat akun penyimpanan:
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
...
Untuk tips pemecahan masalah selengkapnya, lihat Pemecahan Masalah Azure CLI.
Gunakan echo
perintah
Meskipun --debug
memberi tahu Anda dengan tepat apa yang ditafsirkan oleh Azure CLI, opsi kedua adalah mengembalikan nilai ekspresi ke konsol Anda. Metode ini berguna saat memverifikasi hasil --query
yang tercakup secara rinci dalam Mengisi variabel untuk digunakan dalam skrip.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
Pemecahan Masalah
Berikut adalah kesalahan umum saat sintaks perintah referensi Azure CLI tidak ditulis dengan benar:
"Permintaan buruk ... {something} tidak valid" mungkin disebabkan oleh tanda kutip spasi, tanda kutip tunggal atau ganda, atau kurangnya tanda kutip.
"Token tak terduga..." terlihat ketika ada ruang atau kutipan tambahan.
Kesalahan "Nilai jmespath_type tidak valid" sering kali berasal dari kutipan yang
--query
salah dalam parameter."Referensi variabel tidak valid" diterima ketika string tidak diformat dengan benar sering karena penggabungan atau karakter escape yang hilang.
"Argumen yang tidak dikenali" sering disebabkan oleh karakter kelanjutan baris yang salah.
"Ekspresi hilang setelah operator unary" terlihat ketika karakter kelanjutan baris hilang.
Untuk tips pemecahan masalah tambahan, lihat Pemecahan masalah perintah Azure CLI.
Dapatkan detail selengkapnya
Apakah Anda ingin detail lebih lanjut tentang salah satu subjek yang tercakup dalam langkah tutorial ini? Gunakan tautan dalam tabel ini untuk mempelajari selengkapnya.
Subjek | Pelajari lebih lanjut |
---|---|
Perbedaan pembuatan skrip | Mengutip perbedaan antara bahasa skrip |
Aturan kutipan Bash | |
Aturan kutipan PowerShell | |
Pertimbangan untuk menjalankan Azure CLI dalam bahasa skrip PowerShell | |
Tips baris perintah Windows | |
Parameter | Menggunakan tanda kutip di parameter Azure CLI |
Temukan contoh sintaks lainnya dari Bash, PowerShell, dan Cmd dalam Output perintah Kueri menggunakan JMESPath | |
Pemecahan Masalah | Pemecahan masalah perintah Azure CLI |
Langkah Selanjutnya
Sekarang setelah Anda mempelajari cara menulis sintaks Azure CLI untuk Bash, PowerShell, dan Cmd, lanjutkan ke langkah berikutnya untuk mempelajari cara mengekstrak nilai ke variabel.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk