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