Parcourir ses ressources Azure avec SHiPS
Introduction
Peut-être avez-vous vu passer cette news il y a quelques jours ?
Pour ceux qui ont testé Azure Cloud Shell vous avez peut-être remarqué qu’il était possible de parcourir vos ressources Azure via la commande Dir :
Et bien il est désormais possible de faire de même au sein de votre bonne vieille console PowerShell !
Installation
On va donc installer le module AzurePSDrive via la commande suivante :
1 |
PS C:\Scripts> Install-Module AzurePSDrive |
Une fois notre module installé on va charger notre nouveau module via la commande :
1 |
PS C:\Scripts> Import-Module AzurePSDrive |
On va ensuite se connecter à Azure, si vous avez bien suivi mon premier post plus besoin de la fastidieuse commande Add-AzureRmAccount !
Une fois connecté, on va créer un nouveau PSDrive pour Azure via la commande suivante :
1 2 3 4 5 |
PS C:\Scripts> New-PSDrive -Name Azure -PSProvider SHiPS -root 'AzurePSDrive#Azure' Name Used (GB) Free (GB) Provider Root ---- --------- --------- -------- ---- Azure SHiPS AzurePSDrive#Azure |
Utilisation
Désormais on aura la possibilité de parcourir nos ressources Azure via les simple commandes cd et dir :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PS C:\Scripts> cd Azure: #On liste l’ensemble de nos souscriptions PS Azure:\> dir Directory: Azure: Mode SubscriptionName SubscriptionId TenantId State ---- ---------------- -------------- -------- ----- + Prod 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf Enabled + Sandbox 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf Enabled + Customer 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf 11111111-cccc-bbbb-aaaa-xxxxxxxxxxcf Enabled |
On navigue au sein d’une souscription :
1 |
PS Azure:\> cd .\Sandbox\ |
Lister le premier niveau d’une souscription :
1 2 3 4 5 6 7 8 9 10 11 12 |
PS Azure:\Sandbox> dir Directory: Azure:\Sandbox Mode Name ---- ---- + AllResources + ResourceGroups + StorageAccounts + VirtualMachines + WebApps |
Aller plus loin au sein de nos ressources :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
#Lister l'ensemble des ressources de la souscription PS Azure:\Sandbox> cd .\AllResources\ PS Azure:\Sandbox\AllResources> dir #Rechercher une ressource via un mot clé PS Azure:\Sandbox\AllResources> dir *demoexp* Name ResourceType ResourceGroupName Location ---- ------------ ----------------- -------- demoexp001 Microsoft.Compute/virtualMachines demoexp westeurope demoexp002 Microsoft.Compute/virtualMachines demoexp westeurope #Lister l'ensemble des VMs PS Azure:\Sandbox> cd .\VirtualMachines\ PS Azure:\Sandbox\VirtualMachines>dir #Rechercher une VM dont le nom démarre par d* PS Azure:\Sandbox\VirtualMachines> dir d* ResourceGroupName Name Location VmSize OsType NIC ProvisioningState PowerState ----------------- ---- -------- ------ ------ --- ----------------- ---------- demoexp demoexp001 eastus Standard_DS1_v2 Windows demoexp001-nic Succeeded deallocated demoexp demoexp002 westus Standard_F1s Linux demoexp001-nic Succeeded running #Démarrer ou Stopper une VM dir demoexp001 | Stop-AzureRmVM PS Azure:\Sandbox\VirtualMachines> dir .\demoexp001 | Stop-AzureRmVM #Lister l'ensemble des comptes de stockage de la souscription PS Azure:\Sandbox\StorageAccounts> dir Mode Name ---- ---- + stor001 + stor002 + stor003 #Naviguer au sein d'un compte de stockage PS Azure:\Sandbox\StorageAccounts> cd .\stor002\ PS Azure:\Sandbox\StorageAccounts\stor002> dir Mode Name ---- ---- + Blobs + Files + Tables + Queues #Lister les containeurs d'un compte de stockage PS Azure:\Sandbox\StorageAccounts\stor002> cd .\Blobs\ PS Azure:\Sandbox\StorageAccounts\stor002\Blobs> dir Directory: Azure:\Sandbox\StorageAccounts\enit000stor000\Blobs Mode Name ---- ---- + commonscriptslinux + diagnostics + eit-docker-swarm + insights-logs-auditevent #Lister l'ensemble des providers déployés au sein d'un groupe de ressource PS Azure:\Sandbox> cd .\ResourceGroups\AZDEMO001RG001\ PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001> dir Directory: Azure:\Sandbox\ResourceGroups\AZDEMO001RG001 Mode ProviderName ---- ------------ + Microsoft.Automation + Microsoft.Compute + Microsoft.KeyVault + Microsoft.Network + Microsoft.Storage #Lister l'ensemble des VMs au sein de ce groupe de ressource PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001> cd .\Microsoft.Compute\virtualMachines\ PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> dir Directory: Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines VMName Location ProvisioningState VMSize OS SKU OSVersion AdminUserName NetworkInterfaceName ------ -------- ----------------- ------ -- --- --------- ------------- -------------------- AZDEMO001VM001 westeurope Succeeded Standard_A2_v2 WindowsServer 2012-R2-Datacenter latest admcloud AZDEMO001VM001-NIC001 AZDEMO001VM002 westeurope Succeeded Standard_A2_v2 WindowsServer 2012-R2-Datacenter latest admcloud AZDEMO001VM002-NIC001 |
Voyons maintenant comment aller plus loin :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#Regardons plus en profondeur ce qui nous est retourné PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> $VM = dir .\AZDEMO001VM001 PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> $vm | Get-Member TypeName: Microsoft.Compute.virtualMachines Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() Location NoteProperty string Location=westeurope Name NoteProperty string Name=AZDEMO001VM001 Properties NoteProperty System.Management.Automation.PSCustomObject Properties=@{vmId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; availabilitySet=; hardwareProfile=; storageProfile=; osProfile=; networkProfile=; diagnosticsProfile=; provisioningState=Succeeded} PSChildName NoteProperty string PSChildName=AZENIT001VM001 PSDrive NoteProperty SHiPSDrive PSDrive=Azure PSIsContainer NoteProperty bool PSIsContainer=False PSParentPath NoteProperty string PSParentPath=Microsoft.PowerShell.SHiPS\SHiPS::AzurePSDrive#Azure\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines PSPath NoteProperty string PSPath=Microsoft.PowerShell.SHiPS\SHiPS::AzurePSDrive#Azure\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines\AZDEMO001VM001 PSProvider NoteProperty ProviderInfo PSProvider=Microsoft.PowerShell.SHiPS\SHiPS ResourceGroupName NoteProperty string ResourceGroupName=AZDEMO001RG001 ResourceId NoteProperty string ResourceId=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AZDEMO001RG001/providers/Microsoft.Compute/virtualMachines/AZDEMO001VM001 ResourceName NoteProperty string ResourceName=AZDEMO001VM001 ResourceType NoteProperty string ResourceType=Microsoft.Compute/virtualMachines SSItemMode NoteProperty string SSItemMode=. SubscriptionId NoteProperty string SubscriptionId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Tags NoteProperty hashtable Tags=System.Collections.Hashtable |
Listons l’ensemble des propriétés de notre objet $VM :
1 2 3 4 5 6 7 8 9 10 |
PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> $vm.Properties vmId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx availabilitySet : @{id=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AZDEMO001RG001/providers/Microsoft.Compute/availabilitySets/AZDEMO001AS001} hardwareProfile : @{vmSize=Standard_A2_v2} storageProfile : @{imageReference=; osDisk=; dataDisks=System.Object[]} osProfile : @{computerName=AZDEMO001VM001; adminUsername=myadmin; windowsConfiguration=; secrets=System.Object[]} networkProfile : @{networkInterfaces=System.Object[]} diagnosticsProfile : @{bootDiagnostics=} provisioningState : Succeeded |
On va creuser du côté du “StorageProfile” :
1 2 3 4 5 6 7 8 9 |
PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> $VM.Properties.storageProfile | fl imageReference : @{publisher=MicrosoftWindowsServer; offer=WindowsServer; sku=2012-R2-Datacenter; version=latest} osDisk : @{osType=Windows; name=AZDEMO001VM001-OS; createOption=FromImage; vhd=; caching=ReadWrite; diskSizeGB=127} dataDisks : {@{lun=0; name=AZDEMO001VM001-DATA0; createOption=Empty; vhd=; caching=None; diskSizeGB=40}} #Obtenir l'uri du disque OS de notre VM via la commande suivante : PS Azure:\Sandbox\ResourceGroups\AZDEMO001RG001\Microsoft.Compute\virtualMachines> $VM.Properties.storageProfile.osDisk.vhd.uri https://demo001stor001.blob.core.windows.net/vhds/AZDEMO001VM001-OS.vhd |
Conclusion
Vous êtes désormais capable de parcourir l’ensemble de vos ressources Azure sans à avoir à apprendre par coeur le nom de l’ensemble de vos groupes de ressources et de vos VMs !