我是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`
但是如何将其写为条件声明,将不胜感激任何帮助或想法。
答案 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