Azure Blob容器

时间:2018-10-20 16:20:17

标签: azure powershell azure-blob-storage

我是Azure PowerShell脚本的新手。

如何检查存储帐户下是否存在Blob容器,如果不存在则创建它。

我尝试了以下代码:

$StorageAccountName = "autodeploystorageacc1818"
$ContainerName = "acceleratorblobcontainer"
$ResourceGroupName =  "autodeploy"
$skuName = "Standard_LRS"
Try
{  
   Get-AzureRmContext -ErrorAction Continue  
}  
Catch [System.Management.Automation.PSInvalidOperationException]  
{  
   Login-AzureRmAccount  
}
Set-AzureRmCurrentStorageAccount -StorageAccountName $StorageAccountName  -ResourceGroupName $ResourceGroupName 
$StorageAccountName  = Get-AzureStorageBlob -Container $ContainerName -Context $StorageAccountName
New-AzureStorageContainer -Name $ContainerName -Permission Off`

但是如何将其写为条件声明,将不胜感激任何帮助或想法。

2 个答案:

答案 0 :(得分:1)

种类繁多的反模式,但是您可以将创建容器的调用包装在try / catch块中,然后捕获异常以确定该容器是否存在。

$AccountName = "account name"
$AccountKey = "account key"
$StorageContainerName = "container name"
Try
{
     $ctx = New-AzureStorageContext -StorageAccountName $AccountName  -StorageAccountKey $AccountKey
     $container = New-AzureStorageContainer -Name $StorageContainerName -Context $ctx -ErrorAction Stop
}
Catch
{
    Write-Warning "Container $StorageContainerName already exists."
}

创建容器的代码可能由于各种原因而失败,因此您应该做的是捕获特定的异常(在这种情况下为ResourceAlreadyExistException)并专门处理该异常。

答案 1 :(得分:0)

您可以使用Get-AzureStorageContainer命令检查容器是否已经存在(或不存在)

## Get Parameters
Param(
    [string] $ResourceGroupName,
    [string] $StorageAccountName,
    [string] $StorageContainerName
)

## Static Parameters
#Login-AzureRmAccount
#Set-AzureRmContext -SubscriptionID 11111111-1111-1111-1111-111111111111
#$ResourceGroupName = "GroupName"
#$StorageAccountName = "AccountName"
#$StorageContainerName = "ContainerName"

$Keys = Get-AzureRmStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName;

$StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $Keys[0].Value;

if (!(Get-AzureStorageContainer -Context $StorageContext | Where-Object { $_.Name -eq $StorageContainerName })){
New-AzureStorageContainer -Context $StorageContext -Name $StorageContainerName -Permission Container;  
}
 else {
Write-Warning "Container $StorageContainerName already exists."
}

引用here