Azure: Utworzenie File Shares z poziomu PowerShell

Jak utworzyć File Shares w Azure z użyciem PowerShell’a? Musimy mieć konto w Microsoft Azure, podpiętą aktywną subskrypcje, zainstalowany moduł Azure PowerShell i chwile wolnego czasu. Poniżej sprawdzony sposób.

Zanim zbudujemy gotowy skrypt sprawdźmy jakich elementów będziemy używać, czyli co krok po kroku musimy zrobić. Zacznijmy od importu modułu Azure (w przypadku skryptu to istotne, w sesji terminalowej możemy pominąć):

Import-Module Az.Accounts,Az.Resources,Az.Storage

Następnie łączymy się z usługą Microsoft Azure

Connect-AzAccount

Po zalogowaniu mamy informacji o kilku subskrypcjach dostępnych dla konta, dlatego wybierzmy właściwą dla naszych prac:

Get-AzSubscription
Set-AzContext -Subscription 4fb1482b-c5b6-XXXXXX-XXXXXXX

Jesteśmy połączeni, mamy wskazaną subskrypcje – przygotujmy niezbędne elementy, w naszym przykładzie utworzymy nową Resource Group w lokalizacji East US, aby to zrobić zdefiniujemy wcześniej parametry i wywołamy je w poleceniu:

#lokalizacja
$Location="eastus"

#nazwa Resource Group
$ResourceGroup="rg-sprawdzone-it" 

#tworzymy grupe zasobów o określonej nazwie i w określonej lokalizacji
New-AzResourceGroup -Name $ResourceGroup -Location $location

Następnie w nowej grupie zasobów tworzymy Storage Account o określonej nazwie (użyjemy parametru), typie sku HOT i wersji StorageV2 (to też możemy sproletaryzować):

#nazwa Storage Account
$StorageAccount="sasprawdzoneittest"  

#tworzymy Storage Account w okreslonej grupie zasobow, o okreslonej nazwie i we wskazanej lokalizacji, wybieramy SKU i typ
New-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccount -Location $Location -SkuName Standard_LRS -Kind StorageV2

Mamy już Storage Account dodajmy do niego nasz File Share, sparmetryzujemy tylko nazwę, wskazujemy poziom dostępu HOT i Quota (je też oczywiście możemy sparametryzować):

#nazwa File Share
$FileShare = "fstestsprawdzoneit"

#tworzymy File Share w określonej grupie zasobow, w danym Storage Account, o określonej nazwie, na danym poziomie dostepu i o wskazanym Quota
New-AzRmStorageShare -ResourceGroupName $ResourceGroup -StorageAccountName $StorageAccount -Name $FileShare -AccessTier Hot -QuotaGiB 1024

To wszystko! Zalogujmy się do panelu Microsoft Azure i sprawdźmy

Poniżej skrypt, z trochę zmienioną kolejnością w/w parametrów (wszystkie podajemy na początku i to z GUI), dodałem też warunki sprawdzające istnienie grupy zasobów, określonej nazwy konta magazynu i nazwy File Share. Dodanie takiego konta z tym skryptem to dosłownie chwila – używam przy backupach i innych pracach w których potrzebuje na szybko storage:

#sprawdzone.it
#Azure File Share creator
#https://github.com/sprawdzoneit/azure
#version 1.0


#import potrzebnych modułów
Import-Module Az.Accounts,Az.Resources,Az.Storage

#powerhhell gui
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') 


#logujemy sie do Azure
Connect-AzAccount

#wybieramy subskrypcje
$AZSubscription = Get-AzSubscription | Out-GridView -Title "Choose Subscription" -PassThru
Set-AzContext -Subscription $AZSubscription



#lokalizacja
$Location = [Microsoft.VisualBasic.Interaction]::InputBox("Enter location: ", "Location name", "eastus")

#nazwa Resource Group
$ResourceGroup = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Resource Group: ", "Resource Group name", "rg-sprawdzoneit-testy")

#nazwa Storage Account
$StorageAccount = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Storage Account: ", "Storage account name", "sasprawdzoneittesty")

#nazwa File Share
$FileShare = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Storage Account: ", "Storage account name", "fssprawdzoneittesty")




#warunek sprawdzający czy istnieje Resource Group o podanej nazwie     
if(Get-AzResourceGroup -Name $ResourceGroup -ErrorAction SilentlyContinue)  
    {  
         #komunikat
         Write-Host -BackgroundColor Yellow -ForegroundColor Black $ResourceGroup " Warning: Resource Group with this name already exists!"  
    }  
    else  
    {  
         #komunikat
         Write-Host -ForegroundColor Green $ResourceGroup "  Resource Group with this name don't exist. Creating. "  
 
         #tworzymy grupe zasobów o określonej nazwie i w określonej lokalizacji
         New-AzResourceGroup -Name $ResourceGroup -Location $Location  
    }  



#warunek sprawdzający czy istnieje Storage Account o podanej nazwie     
if(Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccount -ErrorAction SilentlyContinue)  
    {  
         #komunikat
         Write-Host -BackgroundColor Yellow -ForegroundColor Black $StorageAccount " Warning: Storage Account with this name already exists!"     
    }  
    else  
    {  
         #komunikat
         Write-Host -ForegroundColor Green $StorageAccount " Storage Account with this name don't exist. Creating. "  
 
         #tworzymy Storage Account w okreslonej grupie zasobow, o okreslonej nazwie i we wskazanej lokalizacji, wybieramy SKU i typ  
         New-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccount -Location $location -SkuName Standard_LRS -Kind StorageV2
    }  



#warunek sprawdzający czy istnieje Storage Account o podanej nazwie     
if(Get-AzRmStorageShare -ResourceGroupName $ResourceGroup -StorageAccountName $StorageAccount -Name $FileShare -ErrorAction SilentlyContinue)  
    {  
         #komunikat 
         Write-Host -BackgroundColor Yellow -ForegroundColor Black $FileShare " Warning: File Share with this name already exists!"     
    }  
    else  
    { 
         #komunikat 
         Write-Host -ForegroundColor Green $StorageAccount " File Share with this name don't exist. Creating. "  
 
         #tworzymy File Share w określonej grupie zasobow, w danym Storage Account, o określonej nazwie, na danym poziomie dostepu i o wskazanym Quota
         New-AzRmStorageShare -ResourceGroupName $ResourceGroup -StorageAccountName $StorageAccount -Name $FileShare -AccessTier Hot -QuotaGiB 1024
    }  


#wylgowanie
Disconnect-AzAccount

Wystarczy zapisać skrypt i wywołać go z wiersza poleceń i udział gotowy:

Skrypt jest dostępny do pobrania z naszego repozytorium na GitHub