Je pose cette question en tant qu'utilisateur Windows mais je vous demande de ne pas limiter la réponse pour Windows uniquement.
J'ai essayé d'exécuter des commandes Azure CLI dans Power-Shell et elles s'exécutent avec succès, mais pas l'inverse. Dans ce cas, pourquoi avons-nous 2 jeux de commandes séparés? Pourquoi ne pas simplement travailler sur Power-Shell? Je n'ai essayé que quelques commandes de base et elles fonctionnent toutes sauf les commandes de filtre | find
ne fonctionne que sur CLI et | Select
ne fonctionne que dans Power-Shell.
Je sais qu'Azure CLI est destiné à la prise en charge multiplateforme. Mais y a-t-il une différence pour l'utilisateur Windows? Y a-t-il des conséquences à exécuter la commande CLI sur Power-Shell?
Merci d'avance.
la réponse existante est une façon stupide de regarder cette question. et trompeur.
La plus grande différence est qu'Azure cli est un binary
(qui peut s'exécuter sur différentes plates-formes) et Powershell est un Shell
qui fonctionne sur toutes les plates-formes. Azure Powershell est un ensemble de modules Powershell, tout le reste en découle.
find
ne peut pas fonctionner dans le cli, car il n'y a pas de in the cli
, car ce n'est pas un Shell. find fonctionne parfaitement bien dans Powershell sur Windows, car c'est un binary
dans le système d'exploitation Windows, alors que select
est une applet de commande dans Powershell et donc il ne fonctionnera pas en ligne de commande sous Windows (ou bash sur Linux).
De plus, si vous recherchez des données à partir d'Azure CLI, vous devez utiliser le paramètre --query au lieu de find
cela est également discutable, le langage de requête JMESPath est trop compliqué sans raison particulière et je ne sais pas comment Azure Cli est réellement compatible avec la documentation officielle de JMESPath. Je préfère utiliser Powershell pour exécuter des commandes Azure Cli et analyser simplement la sortie JSON avec Powershell. De toute évidence, vous n'êtes peut-être pas aussi à l'aise avec Powershell que moi et vous ne trouverez peut-être pas cela pratique.
J'aime les réponses précédentes, je veux juste ajouter un point de vue différent pour les gens du monde de l'entreprise qui sont obligés d'en choisir un:
Dans ce cas, pourquoi avons-nous 2 jeux de commandes séparés? Pourquoi ne pas simplement travailler sur Power-Shell?
Reformulation: Az CLI et Az PowerShell appellent simplement le même ensemble d'API, les API Azure. Ceci est important car théoriquement et éventuellement vous pourrez tout faire dans les deux sens
Alors pourquoi Microsoft a-t-il créé et maintient deux façons de faire la même chose?
Ceux de Martin Fowler ont dit: mais rappelez-vous, la compétence de l'équipe l'emportera sur tout choix de monolithe/microservice
Si vous modifiez monolith/microservice par PowerShell/Bash, cela répond à la question.
Je crois qu'il y a des gens avec des décennies de développement de systèmes utilisant Bash, et il y a d'autres équipes qui sont de gros utilisateurs de PowerShell. Microsoft ne veut pas qu'ils aient à apprendre un tout nouveau langage de programmation pour pouvoir utiliser Azure.
Résumé:
Si votre équipe est familière avec PowerShell, utilisez PowerShell et faites autant de choses que possible avec PowerShell natif. De cette façon, vous bénéficiez de choses comme la gestion des erreurs, OOP concepts, paramètres d'environnement, parallélisation, etc.
Si votre équipe est composée d'administrateurs Linux, de gros utilisateurs de jenkins, avec des millions de lignes de Bash pour automatiser d'autres choses déjà là, et travaillant avec Bash toute leur vie, optez pour la CLI et maintenez la cohérence dans tous les outils déjà construits