2
votes

Comment supprimer tous les appareils d'Azure IoT Hub à l'aide d'Azure CLI?

J'ai un Azure IoT Hub avec un tas d'appareils générés par les tests E2E de notre équipe. Je souhaite purger le Hub de temps en temps à l'aide de l'interface de ligne de commande Azure.

J'exécute Azure CLI localement sur Powershell , à l'aide de Extension Azure IoT .

D'après mes recherches, il existe un moyen d'obtenir une liste de tous les appareils d'un hub imprimée sur la console au format JSON:

az iot hub device-identity delete --device-id "test-id" --hub-name "test-hub"

Et il existe un moyen de supprimer une seule identité d'appareil:

az iot hub device-identity list --hub-name "test-hub"

Comment puis-je supprimer tous les appareils du hub en utilisant le cli interfaces et quelques commandes PowerShell?


1 commentaires

Pouvez-vous afficher un exemple de sortie pour az iot hub device-identity list --hub-name "test-hub" ?


3 Réponses :


1
votes

Cela ne semble pas possible aujourd'hui avec une seule commande. L'interface REST sous-jacente (qui est ce que le cli et tout le reste utilise) n'a pas non plus de suppression en bloc: https://docs.microsoft.com/en-us/rest/api/iothub/service/deletedevice

L'extension IoT Github a quelques exemples d'automatisation: https://github.com/Azure/azure-iot-cli-extension/blob/dev/docs/scenario-automation.md

Là, ils créent en masse des appareils en utilisant une simple boucle for. Vous pouvez probablement en réutiliser une partie et la combiner avec la commande az iot hub device-identity list


0 commentaires

0
votes

En plus de @silent, Azure IoT Hub prend en charge un travail en masse Export / Import Devices décrit dans l'objet blob. Jetez un œil aux liens suivants:

Ressource Iot Hub - Importer des appareils < / p>

Exemple d'importation d'appareils - suppression groupée

En gros, appeler le Exporter les appareils créera un blob de tous les appareils, puis mettra à jour cette liste pour chaque appareil avec un mode ImportMode.Delete , le blob est prêt pour en appelant une tâche groupée Importer des appareils . Dans le cas où tous les périphériques sont des DeviceID connus, l'étape Exporter les périphériques peut être ignorée et en utilisant un objet blob d'entrée prédéfini.

Notez que le travail en bloc est un processus d'arrière-plan de longue durée, nous pouvons donc utiliser l'interrogation de son état ou l'utilisation d'une Azure Event Grid pour les événements IoT Hub. La suppression de 100 appareils prendra environ 1 minute.


0 commentaires

2
votes

Exécutez simplement une boucle For dans PowerShell.

Installez d'abord Azure CLI pour Powershell:

$iotHubName = "test-hub"
$json = az iot hub device-identity list --hub-name $iotHubName
$devices = $json | ConvertFrom-Json
Foreach ($device in $devices)
{
  az iot hub device-identity delete --device-id $device.deviceId --hub-name $iotHubName
}

Ajoutez ensuite les modules d'extensions Azure IoT pour PowerShell, connectez-vous à Azure et passez à l'abonnement approprié (changez ):

az extension add --name azure-cli-iot-ext
az login
az account set -s <subscription_id>

Après cela, exécutez la boucle Foreach suivante qui supprimera tous les appareils (changez test-hub ):

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'

Remarque: Il s'agit d'un processus extrêmement lent à partir de 2019. Vous pouvez suivre la progression en consultant le Appareils IoT dans l'interface principale de portal.azure.


0 commentaires