Не удается преобразовать ‘System.Объект []’ в тип ‘System.Строка’, требуемая параметром ‘StorageAccountKey’ при попытке создать Blobcontainer

#azure #powershell

#azure #powershell

Вопрос:

Я пытаюсь создать контейнер внутри учетной записи хранилища, используя следующие инструкции:

 New-AzResourceGroup -Name $rg_bk -Location $Region -Tag @{CompanyName = $Customer_Name }
$StorageAccountName = "bacpacssa$(Get-Random)"
New-AzStorageAccount -ResourceGroupName $rg_bk -Name $StorageAccountName -Location $Region -SkuName Standard_GRS -Tag @{CompanyName = $Customer_Name } -Kind BlobStorage -AccessTier Cool
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $rg_bk -Name $StorageAccountName).Value 
$StorageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageKey 
$ContainerName = "databasesbacpac$(Get-Random)"
New-AzStorageContainer -Name $ContainerName -Context $StorageContext -Permission Off
  

но я также получаю следующую ошибку

 New-AzStorageContext : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'StorageAccountKey'. Specified method is not supported.
  

Комментарии:

1. это 'System.Object[]' означает, что у вас есть коллекция, а не один объект. попробуйте проверить $Var, чтобы увидеть, что он содержит … а затем попробуйте выполнить итерацию через него.

Ответ №1:

Эта строка:

 $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $rg_bk -Name $StorageAccountName).Value 
  

Возвращает два объекта, поэтому вы получаете значение для каждого из них в массиве. Ваш следующий командлет ( New-AzStorageContext ) требует одно значение для -StorageAccountKey значения.

Если вы просто хотите использовать первый, вы можете исправить это следующим образом.

 $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $rg_bk -Name $StorageAccountName)[0].Value 
  

Это означает, что вы будете использовать значение только из key1 . Если вы хотите использовать key2, вы можете изменить его на [1] .