我是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`
但是如何将其作为条件陈述书写,任何帮助或想法都将受到赞赏。
您可以检查容器是否已存在(或)不使用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
一种反模式,但你可以包装调用以在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
)并专门处理它。