Создайте контейнер хранения Azure с помощью powershell на новом портале
Я хочу создать контейнер хранения Azure в существующей учетной записи хранения с помощью powershell. Я пробовал следующие команды:
Set-AzureSubscription -CurrentStorageAccountName "storageaccountv1" -SubscriptionId $SubscriptionId
New-AzureStorageContainer -Name $ContainerName -Permission Off
Для тех, кто знает, в Azure есть два типа учетных записей хранения: v1, v2. Учетные записи v1 доступны через http://manage.windowsazure.com/ и v2, которые можно создать на http://portal.azure.com/. Пока команда New-AzureStorageContainer работает с учетной записью хранения в v1, команда не работает для учетной записи хранения в v2. Это дает следующую ошибку:
New-AzureStorageContainer : ResourceNotFound: The storage account 'storageaccountv2' was not found.
At CreateStorageContainer.ps1:31 char:1
+ New-AzureStorageContainer -Name $ContainerName -Permission Off
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureStorageContainer], CloudException
+ FullyQualifiedErrorId : CloudException,Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet.NewAzureStorageContainerCommand
Может кто-нибудь сказать, как создать контейнер хранения Azure в v2 через PowerShell?
4 ответа
При использовании StorageAccountContext
это вариант, вы можете попробовать следующее:
$ctx = New-AzureStorageContext -StorageAccountName "account-name" -StorageAccountKey "account-key"
New-AzureStorageContainer -Name "container-name" -Context $ctx
Предварительный просмотр Azure PowerShell 1.0 ( https://azure.microsoft.com/en-us/blog/azps-1-0-pre/).
С помощью Azure PowerShell 1.0 Preview вы можете запускать следующие командлеты:
Login-AzureRMAccount -SubscriptionId [SubscriptionID]
Set-AzureRmCurrentStorageAccount -StorageAccountName [accountName] -ResourceGroupName [ResourceGroupName]
Затем вы можете запустить "New-AzureStorageContainer" с учетной записью в режиме ресурсов (создать на новом портале) без контекста.
Кстати, "Set-AzureSubscription" предназначен только для учетной записи в режиме службы, не относится к учетной записи в режиме ресурсов.
Это помогло, но мне нужна была команда ARM, а не классический метод. Надеюсь, поможет
$NewRGName = 'Lab'
$NewRGLocation = "West US"
$NewStrAccName ="Labstorage2"
$SkuName = 'Standard_LRS'
# Create new storage account
New-AzureRmStorageAccount -Location $NewRGLocation -Name $NewStrAccName -ResourceGroupName $NewRGName -SkuName $SkuName
Вот идемпотентный код
[System.String]$script:ResourceGroupNameVariable = 'resourcegroupnameone'
[System.String]$script:StorageAccountNameVariable = 'storacctnameone'
[System.String]$script:ContainerNameVariable = 'containernameone'
Write-Host "Start Container Create"
#Get/Set the AzureRmStorageAccountKey
# the below -Name parameter may be -AccountName according to documentation
[System.Object[]]$currentAzureRmStorageAccountKeys = Get-AzureRmStorageAccountKey -ResourceGroupName $script:ResourceGroupNameVariable -Name $script:StorageAccountNameVariable;
#Write-Host "about to currentAzureRmStorageAccountKeys.GetType"
#Write-Output $currentAzureRmStorageAccountKeys.GetType().FullName
### Create the AzureStorageContext (you always do this, regardless if the container itself exists or not)
[Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext]$currentAzureStorageContext = New-AzureStorageContext -StorageAccountName $script:StorageAccountNameVariable -StorageAccountKey $currentAzureRmStorageAccountKeys[0].Value;
#Write-Host "about to currentAzureStorageContext.GetType"
#Write-Output $currentAzureStorageContext.GetType().FullName
# Get/Set the AzureStorageContainer
[Microsoft.WindowsAzure.Commands.Common.Storage.ResourceModel.AzureStorageContainer]$currentAzureStorageContainerCheck=Get-AzureStorageContainer -Context $currentAzureStorageContext -Name $script:ContainerNameVariable;
if(!$currentAzureStorageContainerCheck)
{
### The container does not already exist. Create a Blob Container in the Storage Account
New-AzureStorageContainer -Context $currentAzureStorageContext -Name $script:ContainerNameVariable;
}
else{
#Write-Host "about to currentAzureStorageContainerCheck.GetType"
#Write-Output $currentAzureStorageContainerCheck.GetType().FullName
#Write-Host "about to currentAzureStorageContainerCheck"
#$currentAzureStorageContainerCheck
}
Write-Host "End Container Create"
Это работает против: Версия 4.3.1 (AzureRM)
get-module -listavailable -Имя "AzureRM"