Comme je vous l’ai déjà dit dans mon précédent billet de blog, on m’a demandé de construire un script PowerShell interactif pour créer des machines virtuelles dans Azure. Dans ce billet de blog, je veux vous montrer comment j’ai créé un rapport (ou tableau) au sein de PowerShell qui :
- Visualise les objets à créer à l’utilisateur
- Autorise PowerShell à obtenir les données de ce tableau pour créer des machines virtuelles. Cela permet de s’assurer que vous avez une vue cohérente de ce que PowerShell va créer pour vous. Voyez cela comme un aperçu de la commande avant d’acheter quelque chose en ligne.
Imaginons que j’ai toutes les machines virtuelles que je veux créer dans $VMs. Cela peut être une importation d’un CSV, ou peut-être que j’ai demandé à l’utilisateur des détails avec « Read-Host » ou Out-GridView. Lorsque vous importez un CSV, le contenu sera déjà organisé dans un tableau. Mais avec ce code, vous pouvez facilement y ajouter plus de contenu et combiner à la fois les données d’un CSV et celles du script. Par exemple, un mot de passe aléatoire ou la première adresse IP disponible dans un sous-réseau d’Azure. Mon objectif final est d’avoir un bel aperçu de toutes les machines virtuelles nécessaires dans $Report, que je peux utiliser plus tard pour créer ces VM. Avec le code ci-dessous, vous allez créer un PSObject pour chaque VM dans la variable $VMs. Une fois le PSObject créé, il sera ajouté à la variable $Report. Avec « $Report = @() », vous demandez à PowerShell de créer un tableau vide. Voyez-le comme un tableau vide que vous pourrez utiliser ultérieurement pour y ajouter du contenu. Après que le déploiement ait réussi ou échoué, vous pouvez ajouter le statut à $VM.DeploymentStatus.
# Set report variable$Report = @()Foreach ($VM in $VMs) { $PSObject = New-Object PSObject -Property @{ DeploymentName = $VM.resourceGroupName + "-" + (Get-Date -Format "yyyyMMdd-hh-mm-ss") VMName = $VM.vmName Location = $VM.resourceGroupLocation ResourceGroupName = $VM.resourceGroupName AdminPassword = $VM.adminPassword VMSize = $VM.vmSize VirtualNetwork = $VM.virtualNetwork VirtualNetworkRG = $VM.virtualNetwork.ResourceGroupName SubnetName = $VM.subnetName IPAddress = $VM.ipAddress OperatingSystem = $VM.operatingSystem DeploymentStatus = $Null } $Report += $PSObject}# Show the report$Report# Or show it in Table Format# $Report | Format-Table
L’exemple ci-dessus est de loin la façon la plus simple de créer un joli tableau pour moi. Merci de votre lecture. J’espère que vous le trouverez utile aussi.