从ARM上下文创建存储容器

时间:2017-07-13 11:18:29

标签: powershell azure azure-storage azure-powershell

我正在尝试使用存储帐户和容器设置新的资源组。除容器部分外,所有步骤均有效。从资源在线我已经读过这个API功能没有移植到新的ARM cmdlet - 是否有可用的变通方法?

尝试#1

Login-AzureRmAccount

Set-AzureRmContext -SubscriptionName "Visual Studio Professional"

$resourceGroup = "MyResourceGroup4"
$location = "West Europe"

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

Write-Host "Created resource group"

New-AzureRmStorageAccount -ResourceGroupName $resourceGroup -AccountName "xzcczxda" -Type Standard_RAGRS -Location $location -AccessTier Cool -Kind BlobStorage
New-​Azure​Storage​Container -Name "images" -Permission Off

错误:

  

新Azure存储容器:术语“新建Azure存储容器”不会被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并尝试   试。

尝试#2(基于this

与之前相同,但添加Import-Module AzureRM.Storage并使用New-​AzureRm​Storage​Container代替。

错误:

  

新AzureRm存储容器:术语“New-AzureRm存储容器”未被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确   再试一次。

尝试#3(基于thisthis

Login-AzureRmAccount

Set-AzureRmContext -SubscriptionName "Visual Studio Professional"

$resourceGroup = "MyResourceGroup9"
$location = "West Europe"
$storageAccountName = "teststorageaccount"

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

Write-Host "Created resource group"

New-AzureRmStorageAccount -ResourceGroupName $resourceGroup -AccountName $storageAccountName -Type Standard_RAGRS -Location $location -AccessTier Cool -Kind BlobStorage

Write-Host "Fetching storage account information"
$storageKey = (Get-AzureStorageKey -StorageAccountName $storageAccountName).Primary
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

New-​Azure​Storage​Container -Name "images" -Permission Off -Context $storageContext

错误:

  

Get-AzureStorageKey:ResourceNotFound:找不到存储帐户“teststorageaccount”。   New-AzureStorageContext:无法验证参数'StorageAccountKey'的参数。参数为null或空。提供非null或空的参数,然后再次尝试该命令。   新Azure存储容器:术语“新建Azure存储容器”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并尝试   试。

尝试#4(基于this

Login-AzureRmAccount

Set-AzureRmContext -SubscriptionName "Visual Studio Professional"

$resourceGroup = "MyResourceGroup10"
$location = "West Europe"
$storageAccountName = "dasdaaadmb"

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

Write-Host "Created resource group"

New-AzureRmStorageAccount -ResourceGroupName $resourceGroup -AccountName $storageAccountName -Type Standard_RAGRS -Location $location -AccessTier Cool -Kind BlobStorage

Write-Host "Fetching storage account information"
$storageKey = (Get-AzureRmStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroup).Value[0]
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

New-​Azure​Storage​Container -Name "images" -Permission Off -Context $storageContext

错误:

  

新Azure存储容器:术语“新建Azure存储容器”不会被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并尝试   试。

尝试#5(基于this

Login-AzureRmAccount

Set-AzureRmContext -SubscriptionName "Visual Studio Professional"

$resourceGroup = "MyResourceGroup11"
$location = "West Europe"
$storageAccountName = "addadadsadad"

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

Write-Host "Created resource group"

New-AzureRmStorageAccount -ResourceGroupName $resourceGroup -AccountName $storageAccountName -Type Standard_RAGRS -Location $location -AccessTier Cool -Kind BlobStorage
Set-AzureRmCurrentStorageAccount -StorageAccountName $storageAccountName -ResourceGroupName $resourceGroup

New-​Azure​Storage​Container -Name "images" -Permission Off

错误:

  

新Azure存储容器:术语“新建Azure存储容器”不会被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并尝试   试。

此时我没有想法。如何从ARM上下文创建存储容器? This似乎表明这个问题是因为我混合了ASM和ARM,我希望通过传递上下文来解决这个问题(参见尝试3& 4)

1 个答案:

答案 0 :(得分:1)

归功于@GauravMantri搞清楚了!

当我逐字重新输入所有内容时,它完美无缺。我已经改编了我的原始脚本,它没有问题。

接下来我看看这两个字符串是什么组成的。

void Main()
{
    var correct = "New-AzureStorageContainer -Name \"images\" -Permission Off -Context $storageContext";
    var wrong = "New-​Azure​Storage​Container -Name \"images\" -Permission Off -Context $storageContext";


    for (var i = 0; i < Math.Max(correct.Length, wrong.Length); i++)
    {
        Console.Write("correct: " + (int) correct[i]);
        Console.WriteLine("\twrong: " + (int) wrong[i]);
    }
}

我已经突出显示了两个字符串的分歧。

enter image description here

带我到this question:“什么是HTML字符代码8203?”,其中包含神奇的答案“ It's the Unicode Character 'ZERO WIDTH SPACE' (U+200B).