Megosztás a következőn keresztül:


Kimeneti formátumok az Azure CLI-parancsokhoz

Az Azure CLI a JSON-t használja alapértelmezett kimeneti formátumként, de más formátumokat is kínál. Az Azure CLI-kimenet formázásához használja a --output (--out vagy -o) paramétert. Az argumentumértékek és a kimenettípusok a következők:

--kimenet Leírás
json JSON-string. Ez a beállítás az alapértelmezett
jsonc Színezett JSON
table ASCII-tábla oszlopfejlécként kulcsokkal
tsv Tabulátorral elválasztott értékek, kulcsok nélkül
yaml YAML, a JSON ember által olvasható alternatívája
yamlc Színezett YAML
none A hibákon és figyelmeztetéseken kívül más kimenet nem jelenik meg

Figyelmeztetés

Az olyan titkos kódok felfedésének elkerülése érdekében, mint az API-kulcsok és a hitelesítő adatok, használjon kimeneti formátumot vagy tárolja a parancs kimenetét none egy változóban. Jegyzet: Egyes CI/CD-környezetek naplókban tárolhatják a végrehajtott parancsok kimenetét. Célszerű ellenőrizni a naplófájlok tartalmát, és hogy kik férhetnek hozzá a naplókhoz. További információ: Nincs kimeneti formátum.

JSON kimeneti formátum (alapértelmezett)

Az alábbi példa az előfizetésekben lévő virtuális gépek listáját jeleníti meg alapértelmezett JSON formátumban.

az vm list --output json

Az alábbi kimenetben néhány mező a tömörség érdekében hiányzik, és azonosító adatok helyettesítve lettek.

[
  {
    "availabilitySet": null,
    "diagnosticsProfile": null,
    "hardwareProfile": {
      "vmSize": "Standard_DS1"
    },
    "id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
    "instanceView": null,
    "licenseType": null,
    "location": "westus",
    "name": "DemoVM010",
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
          "primary": null,
          "resourceGroup": "demorg1"
        }
      ]
    },
          ...
          ...
          ...
]

YAML kimeneti formátum

A yaml formátum YAML formátumban nyomtatja ki a kimenetet, amely egyszerű szöveges adat szerializálási formátum. A YAML általában könnyebben olvasható, mint a JSON, és erre a formátumra van leképezve. Egyes alkalmazások és az Azure CLI-parancsok a YAML-t veszik konfigurációs bemenetként JSON helyett.

az vm list --output yaml

Az alábbi kimenetben néhány mező a tömörség érdekében hiányzik, és azonosító adatok helyettesítve lettek.

- availabilitySet: null
  diagnosticsProfile: null
  hardwareProfile:
    vmSize: Standard_DS1_v2
  id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
  identity: null
  instanceView: null
  licenseType: null
  location: westus
  name: ExampleVM1
  networkProfile:
    networkInterfaces:
    - id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
      primary: null
      resourceGroup: DemoRG1
  ...
...

Táblázat kimeneti formátum

A table formátum ASCII-táblázatként nyomtatja ki a kimenetet, így könnyen olvasható és beolvasható. A beágyazott objektumok nem szerepelnek a tábla kimenetében, de továbbra is szűrhetők egy lekérdezés részeként. Egyes mezők nem szerepelnek a táblában, ezért ez a formátum akkor a legjobb, ha gyors, ember által kereshető áttekintést szeretne az adatokról.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

A --query paraméter használatával testre szabhatja a lista kimenetében megjeleníteni kívánt tulajdonságokat és oszlopokat. Az alábbi példa bemutatja, hogyan választhatja ki csak a virtuális gép nevét és az erőforráscsoport nevét a list parancsban.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Megjegyzés:

Egyes kulcsok alapértelmezés szerint nem jelennek meg a táblázat nézetben. Ezek a kulcsok a következők: id, typeés etag. Ha szüksége van rájuk a kimenetben, a JMESPath újrakulcsolási funkciójával módosíthatja a kulcs nevét, és elkerülheti a szűrést.

az vm list --query "[].{objectID:id}" --output table

További információ a lekérdezések adatok szűréséről: JMESPath-lekérdezések használata az Azure CLI-vel.

TSV kimeneti formátum

A tsv kimeneti formátum a tabulátort és az új vonallal elválasztott értékeket adja vissza további formázás, kulcsok és egyéb szimbólumok nélkül. Ezzel a formátummal egyszerűen felhasználhatja a kimenetet más parancsokba és eszközökbe, amelyeknek valamilyen formában kell feldolgozni a szöveget. A formátumhoz tabletsv hasonlóan nem nyomtat beágyazott objektumokat.

Az előző példa tsv opció használatával tabulátorral elválasztott eredményt ad.

az vm list --output tsv
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    None    None    westus    DemoVM010            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    cbd56d9b-9340-44bc-a722-25f15b578444
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    None    None    westus    demovm212            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    4bdac85d-c2f7-410f-9907-ca7921d930b4
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    None    None    westus    demovm213            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    2131c664-221a-4b7f-9653-f6d542fbfa34
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM    None    None    westus    KBDemo001VM            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    14e74761-c17e-4530-a7be-9e4ff06ea74b
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020   None    None    westus    KBDemo020            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    36baa9-9b80-48a8-b4a9-854c7a858ece

A tsv kimeneti formátum egyik korlátozása, hogy a kimenet sorrendjére nincs garancia. Az Azure CLI mindent megtesz annak érdekében, hogy megőrizze a sorrendet a válasz JSON-kulcsainak betűrendbe rendezésével, majd az értékek nyomtatásával a kimenet érdekében tsv . Nincs garancia arra, hogy a megrendelés mindig azonos, mivel az Azure szolgáltatás válaszformátuma változhat.

A konzisztens rendezés kényszerítéséhez a --query paramétert és a többválasztásos listaformátumot kell használnia. Amikor egy Azure CLI-parancs egyetlen JSON-szótárt ad vissza, az általános formátum használatával [key1, key2, ..., keyN] kényszerítse ki a kulcssorrendet. Tömböt visszaíró Azure CLI-parancsok esetén az általános formátum [].[key1, key2, ..., keyN] használatával rendezze az oszlopértékeket.

Például az azonosító, a hely, az erőforráscsoport és a virtuális gép neve szerint megjelenített információk sorrendje:

az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    westus    DEMORG1    DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    westus    DEMORG1    demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    westus    DEMORG1    demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM     westus  RGDEMO001       KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020       westus  RGDEMO001       KBDemo020

A következő példa bemutatja, hogyan csövezheti tsv a kimenetet más parancsokba a Bashben. A lekérdezés a kimenet szűrésére és a rendezés kényszerítésére szolgál, grep kijelöli azokat az elemeket, amelyekben szöveg RGD található, majd a cut parancs a negyedik mezőt választja ki a kimenetben lévő virtuális gép nevének megjelenítéséhez.

az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

A tsv kimeneti formátumot gyakran használják értékek változókhoz való hozzárendeléséhez. Ez a példa lekéri az aktív előfizetés azonosítóját, és egy szkriptben használható változóban tárolja.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

További --query paraméteres példákért tekintse meg az Azure CLI parancskimenetének lekérdezését ismertető témakört.

Nincs kimeneti formátum

Egyes Azure CLI-parancsok kimeneti adatait védenie kell. Íme négy példa:

  • Jelszavak
  • Kapcsolati karakterláncok
  • Titkos kódok
  • Kulcsok

Az Azure CLI-parancsok használatakor a titkos kódok és kulcsok védelméhez válasszon az alábbi lehetőségek közül:

Lehetőség Előny Felhasználási eset
--output none kimeneti formátum A bizalmas információk nem jelennek meg a konzolon. Ha a parancs sikertelen, továbbra is hibaüzenetek érkeznek. 1. Akkor használható, ha a parancs kimenete később lekérhető .
2. Akkor használja, ha nincs szüksége kimenetre.
3. Gyakori választás, ha felügyelt identitást vagy szolgáltatásnevet használnak az Azure-erőforrások kezeléséhez.
--query paraméter A kimenetet változóban tárolja. 1. Akkor használja, ha a parancs kimenete később nem kérhető le.
2. Akkor használja, ha parancskimeneti értéket kell használnia egy szkriptben.

Biztonsági adatok lekérése későbbi időpontban

Néhány Az Azure titkos kulcsai később lekérhetők. Ilyen például az Azure Key Vaultban tárolt titkos kódok. Ebben a példában hozzon létre egy Azure Key Vault-titkot az keyvault secret set paranccsal a --output none opció használatával. A titkos kulcsot később az az keyvault secret show paranccsal is lekérheti.

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Biztonsági információk tárolása változókban

A kimenet változókban való tárolásának használata --query technikailag nem kimeneti formátum. Ez egy megoldás a titkos kódok védelmére, és alternatívája a használatnak --output none. Például, ha visszaállít egy szolgáltatási főazonosító hitelesítési adatokat, a jelszót nem lehet újra lekérni.

A szolgáltatási fiók hitelesítő adatának alaphelyzetbe állítása, amely a kimenetet az alapértelmezett JSON formátumban adja vissza.

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

A konzol kimenete az új jelszót jeleníti meg a konzolon.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

Jobb megoldás, ha bizalmas adatokat ad vissza egy változónak.

# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)

# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"

További példák a kimenet változókra való tárolására: Az Azure CLI sikeres használata – értékek átadása egy másik parancsnak. A paraméterszintaxisról --query további információt az Azure CLI parancskimenetének lekérdezése című témakörben talál.

Az alapértelmezett kimeneti formátum beállítása

Az Azure CLI-parancsok kétféleképpen vezérelhető kimenetet biztosítanak:

Kimeneti vezérlés Előny Használati útmutató
Globális beállítás Válasszon ki egy alapértelmezett kimeneti értéket, amelyet a leggyakrabban használ, hogy ne kelljen folyamatosan paramétert --output megadnia az egyes referenciaparancsokhoz. Adja meg az alapértelmezett kimeneti formátumot az az config set használatával.
Parancsparaméter Adja meg a kimenetet a parancs szintjén, és maximális rugalmasságot biztosítson a szkripteknek. Az egyes referenciaparancsok konzolkimenetét és változó bemenetét szabályozhatja. Felülbírálja az alapértelmezett beállítást egy referenciaparancs paraméterével --output .

Az Azure CLI alapértelmezett kimenete a json. Állítsa be az alapértelmezett kimenetet arra az állapotra, none amikor nincs szükség konzolkimenetre.

az config set core.output=none

A paraméterrel felülírhatja bármely Azure CLI-referenciaparancs alapértelmezett kimenetét --output . Íme egy parancsprogram, amely módosítja és teszteli a parancs kimenetét:

# set your default output to table
az config set core.output=table

# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show

# override your table default and show your active subscription in jsonc format
az account show --output jsonc

# reset your default output to json
az config set core.output=json

Lásd még