Azure CLI 명령은 Bash, PowerShell 및 Windows 명령 셸 (cmd
) 스크립팅 언어로 실행할 수 있습니다. 그러나 미묘한 스크립팅 차이가 있습니다. 이 자습서 단계에서는 첫 번째 Azure Storage 계정을 만들고 세 가지 스크립팅 언어 모두에 대한 매개 변수 값의 서식을 지정하는 방법을 알아봅니다.
필수 조건
- 환경을 준비하기 위한 필수 구성 요소를 완료했습니다.
- 리소스 그룹 수준에서
contributor
이상의 사용 권한이 있는 리소스 그룹에 액세스할 수 있습니다.
줄 연속 문자에 주의
대부분의 Azure CLI 설명서는 Azure Cloud Shell을 사용하여 Bash에서 작성 및 테스트됩니다. Azure CLI 구문을 복사할 때 기억해야 할 첫 번째 사항 중 하나는 선택한 스크립팅 언어의 줄 연속 문자를 교환할 수 없으므로 확인하는 것입니다.
스크립트 언어 | 줄 연결 문자 |
---|---|
배쉬 | 백슬래시(\ ) |
PowerShell | 백틱(` ) |
Cmd | Caret(^ ) |
팁 (조언)
Azure CLI 코드 블록의 오른쪽 위 모서리에 있는 복사 단추는 합니다. 서식이 지정된 코드 블록을 복사하려면 키보드 또는 마우스를 사용하여 예제를 선택하고 복사합니다.
변수를 사용할 때 구문 차이점 이해
변수를 사용하는 구문은 스크립팅 언어마다 약간 다릅니다. 비교는 다음과 같습니다.
사용 사례 | 배쉬 | PowerShell | Cmd 명령어 |
---|---|---|---|
변수 만들기 | variableName=varValue | $variableName="varValue" | 변수 이름을 varValue로 설정합니다. |
변수를 매개 변수 값으로 사용 | 변수 이름 (variableName) | $variableName | %variableName% |
매개 변수에 --query 변수 사용 |
'$variableName' | '$variableName' | '$variableName' |
콘솔 화면에 변수 정보를 반환하는 방법에는 여러 가지가 있지만 echo
대부분의 경우 작동합니다. 비교는 다음과 같습니다.
- Bash: echo $varResourceGroup
- PowerShell: 출력 $varResourceGroup
- Cmd: 에코 %varResourceGroup%
3단계에서는 스크립트에서 사용할 변수를 채웁니다. 변수 구문의 심층적인 예제를 살펴봅니다.
스크립팅 언어 간의 차이점 인용에 대해 알아보기
모든 Azure CLI 매개 변수는 문자열입니다. 그러나 각 스크립팅 언어에는 작은따옴표와 큰따옴표, 공백 및 매개 변수 값을 처리하는 고유한 규칙이 있습니다.
문자열 값 | Azure 커맨드 라인 인터페이스 (CLI) | PowerShell | Cmd 명령어 |
---|---|---|---|
문자 메시지 | ‘text’ 또는 “text” | ‘text’ 또는 “text” | "텍스트" |
숫자 | \'50\' | ''50'' | '50' |
불리언 (Boolean) | \'true\' | ''false'' | 참 |
날짜 | 2021년 11월 15일 | 2021년 11월 15일 | 2021년 11월 15일 |
JSON (자바스크립트 객체 표기법) | '{"key":"value"}' 또는 "{"key":"value"}" | '{"key": "value"}' 또는 "{'"key'": '"value'"}" 또는 "{""key"": ""value""}" | {"key":"value"} |
많은 Azure CLI 매개 변수는 공백으로 구분된 값 목록을 허용합니다. 이 형식은 인용에 영향을 줍니다.
- 따옴표가 지정되지 않은 공백으로 구분된 목록: --parameterName firstValue secondValue
- 따옴표로 묶인 공백으로 구분된 목록: --parameterName "firstValue" "secondValue"
- 공백을 포함하는 값: --parameterName "value1a value1b" "value2a value2b" "value3"
스크립팅 언어로 문자열을 평가하는 방법을 잘 모르는 경우 문자열 값을 콘솔에 반환하거나 --debug
설명된 대로 사용합니다.
학습한 내용을 적용할 스토리지 계정 만들기
이 자습서 단계의 다음 부분에서는 Azure CLI 명령어의 따옴표 규칙을 설명하며, Azure CLI 환경 준비 단계에서 생성된 리소스 그룹을 사용합니다.
<msdocs-tutorial-rg-00000000>
리소스 그룹의 이름으로 대체합니다.
이 자습서에서 사용할 Azure Storage 계정을 만듭니다. 다음은 스토리지 계정 이름에 임의 ID를 할당하는 예제입니다. 그러나 다른 이름을 사용하려면 스토리지 계정 이름 규칙에 대한 Storage 계정 개요 를 참조하세요.
중요합니다
스토리지 계정을 만들려면 먼저 리소스 공급자를 Microsoft.Storage
구독에 등록해야 합니다. 리소스 종류 등록에 대한 자세한 내용은 리소스 공급자 등록을 참조하세요.
다음 스크립트 예제에서는 다음에 대한 언어별 구문을 스크립팅하는 방법을 보여 줍니다.
- 줄 연결
- 가변 사용량
- 임의 식별자
-
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
비고
"구독을 찾을 수 없음" 오류가 발생했나요? 이 오류는 활성 구독에 등록되지 않은 경우에 Microsoft.Storage
발생합니다. 리소스 공급자를 등록하려면 Azure 리소스 공급자 및 유형을 참조 하세요.
Azure CLI는 새 스토리지 계정을 만들 때 100줄이 넘는 JSON을 출력으로 반환합니다. 다음 JSON 사전 출력에는 간결성을 위해 생략된 필드가 있습니다.
{
"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"
}
따옴표 차이를 연습하는 태그 만들기
az storage account update를 사용하여 스토리지 계정을 식별하고 따옴표 차이에 대해 알아보는 데 도움이 되는 태그를 추가합니다. 이러한 스크립트 예제에서는 다음에 대한 언어별 구문을 스크립팅하는 방법을 보여 줍니다.
- 공백을 포함하는 값
- 공백 인용
- 특수 문자 탈출
- 변수 사용
매개 변수는 --tags
공백으로 구분된 키:값 쌍 목록을 허용합니다. 리소스 그룹의 <msdocs-tutorial-rg-00000000>
이름과 Azure Storage 계정의 이름으로 대체 <msdocssa00000000>
합니다.
# 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"
이 자습서 단계를 진행하는 동안 이전 태그를 덮어쓰지 않으려면 매개 변수를 로 설정하는 --operation
az tag updatemerge
.
# 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
더 많은 스크립팅 언어별 스크립트 비교
이러한 스크립트 차이점을 자세히 살펴보세요. 다음 예제에서는 인용 부호의 차이점을 보여 줍니다.
- JSON 문자열을 매개 변수 값으로 전달
- 매개 변수를 사용하여
--query
결과 필터링- 숫자
- 불리언 값
- 날짜
JSON 문자열을 포함하는 매개 변수의 예입니다. 이 스크립트는 이 자습서에서 az rest
를 사용하지 않으므로 향후 참조를 위해 제공됩니다.
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}}}'
숫자 값 필터링의 예입니다. 현재 구독에 VM이 없는 한 이 예제는 향후 참조를 위해 제공됩니다.
az vm list --resource-group <myResourceGroup> \
--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 "[?allowBlobPublicAccess == \`true\`].id"
이 자습서에서 만든 스토리지 계정을 사용하여 날짜를 필터링하는 예제입니다.
# 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}"
Azure CLI 참조 명령 디버그
디버그 매개 변수 사용
Azure CLI는 모든 명령과 함께 사용할 수 있는 매개 변수를 제공합니다 --debug
. 디버그 출력은 광범위하지만 다음을 포함한 정보를 제공합니다.
- 스크립팅 언어로 해석되는 명령 인수(매개 변수 값)
- 로그 파일의 위치
- API 호출 세부 정보
- 실행 오류
Azure CLI 명령을 --debug
사용할 때 실행 오류를 이해하고 수정하는 데 어려움이 있는 경우 Azure CLI가 실행 중인 단계를 확인하는 것이 답입니다.
스토리지 계정을 만들 때 디버그 출력의 일부는 다음과 같습니다.
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
...
자세한 문제 해결 팁은 Azure CLI 문제 해결을 참조하세요.
echo 명령 사용
Azure CLI가 해석하는 내용을 정확히 알려주지만 --debug
두 번째 옵션은 식 값을 콘솔에 반환하는 것입니다. 이 메서드는 --query
에 자세히 설명된 결과를 확인할 때 유용합니다.
strExpression='{"key":"value"}'
echo $strExpression
{"key":"value"}
문제 해결
Azure CLI 참조 명령 구문이 제대로 작성되지 않은 일반적인 오류는 다음과 같습니다.
- "잘못된 요청 ... {something}이(가) 유효하지 않습니다"는 공백, 작은따옴표, 큰따옴표 또는 따옴표 부족으로 인해 발생할 수 있습니다.
- "예기치 않은 토큰..." 은 추가 공간 또는 따옴표가 있을 때 표시됩니다.
- "잘못된 jmespath_type 값" 오류는
--query
매개 변수에서 잘못된 따옴표로 인해 발생하는 경우가 많습니다. - 문자열의 형식이 올바르게 지정되지 않은 경우 연결 또는 누락된 이스케이프 문자로 인해 "변수 참조가 유효하지 않습니다."가 수신됩니다.
- "인식할 수 없는 인수"는 종종 잘못된 줄 연속 문자로 인해 발생합니다.
- 줄 연결 문자가 누락된 경우 "단항 연산자 뒤의 식 누락"이 표시됩니다.
자세한 문제 해결 팁은 Azure CLI 명령 문제 해결을 참조하세요.
자세한 정보 가져오기
이 자습서 단계에서 다루는 주제 중 하나에 대해 자세히 알아보시겠습니까? 자세한 내용은 이 표의 링크를 사용합니다.
주제 | 더 알아보세요 |
---|---|
스크립팅 차이점 | 스크립팅 언어 간의 차이점 인용 |
Bash 따옴표 규칙 | |
PowerShell 따옴표 규칙 | |
PowerShell 스크립팅 언어로 Azure CLI를 실행하기 위한 고려 사항 | |
Windows 명령줄 팁 | |
매개 변수 | Azure CLI 매개 변수에서 따옴표 사용 |
JMESPath를 사용하여 쿼리 명령 출력에서 Bash, PowerShell 및 Cmd의 더 많은 구문 예제 찾기 | |
문제 해결 | Azure CLI 명령 문제 해결 |
다음 단계
이제 Bash, PowerShell 및 Cmd에 대한 Azure CLI 구문을 작성하는 방법을 배웠으므로 다음 단계를 진행하여 변수에 값을 추출하는 방법을 알아봅니다.
Azure CLI