Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Save AzureRmVMImage强制创建无效的blob容器名称_Azure_Azure Storage_Azure Powershell_Azure Resource Manager - Fatal编程技术网

Save AzureRmVMImage强制创建无效的blob容器名称

Save AzureRmVMImage强制创建无效的blob容器名称,azure,azure-storage,azure-powershell,azure-resource-manager,Azure,Azure Storage,Azure Powershell,Azure Resource Manager,我正在捕获一个ARM VM映像,以便在“从映像创建”操作中使用它。 但是,Save AzureRmVMImage命令强制(或默认情况下?)创建这样一个容器和blob名称,这对于其他命令来说似乎是无效的 容器名称中的“/Microsoft.Compute/”部分和blob名称中的“osDisk.xxxx”部分由Save-AzureRmVMImage命令隐式放置 澄清: 我使用了Save AzureRmVMImage-DestinationContainerName'vhds'-VHDNamePre

我正在捕获一个ARM VM映像,以便在“从映像创建”操作中使用它。 但是,Save AzureRmVMImage命令强制(或默认情况下?)创建这样一个容器和blob名称,这对于其他命令来说似乎是无效的

容器名称中的“/Microsoft.Compute/”部分和blob名称中的“osDisk.xxxx”部分由Save-AzureRmVMImage命令隐式放置

澄清: 我使用了
Save AzureRmVMImage-DestinationContainerName'vhds'-VHDNamePrefix'template'…
命令,但该命令创建了容器系统/Microsoft.Compute/Images/vhds+“发明”了包含osdisk.(点)部分的blobname。这两个命令都不是来自我…也无法阻止-

首先,这个名称在新的AzureRmVM操作中似乎不可用

作为上述错误的解决方法,我发现我会将图像复制到另一个不包含。(点)的blob名称。但是,结果证明,我的完全测试和其他工作复制脚本也会为该blob名称抛出错误

复制源代码(同样,它对于其他blob也是完全可用的)

(注意:这个问题与Save AzureRmVMImage问题有关,或者它如何在后续操作中解决其奇怪和无效的名称问题。因此,这个问题与此复制脚本无关。这里的脚本只是演示了一种诊断体验

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName "Visual Studio Premium with MSDN"


$sourceRgName = "rg-wp"
$sourceName = "mystorage"
$sourceContainerName = "system/Microsoft.Compute/Images/vhds" #the dots seems to be invalid
$sourceBlobName = "template-osDisk.be7b0cf4-a28b-47f9-89c7-43887f1570ab.vhd" #the dots seems to be invalid

$destinationRgName = "rg-wp"
$destinationName = "mystorage"
$destinationContainerName = "vhds"
$destinationBlobName = "template.vhd"

$sourceKeys = Get-AzureRmStorageAccountKey -Name $sourceName -ResourceGroupName $sourceRgName
$destinationKeys = Get-AzureRmStorageAccountKey -Name $destinationName -ResourceGroupName $destinationRgName

$contextSource = New-AzureStorageContext -StorageAccountName $sourceName -StorageAccountKey $sourceKeys.Key1
$contextDestination = New-AzureStorageContext -StorageAccountName $destinationName -StorageAccountKey $destinationKeys.Key1


Start-AzureStorageBlobCopy -Context $contextSource -SrcContainer $sourceContainerName -SrcBlob $sourceBlobName -DestContext $contextDestination -DestContainer $destinationContainerName -DestBlob $destinationBlobName

# Wait for copy to complete
Get-AzureStorageBlobCopyState -Context $contextDestination -Container $destinationContainerName -Blob $destinationBlobName -WaitForComplete
完整错误消息:

[ERROR] Start-AzureStorageBlobCopy : Container name 'system/Microsoft.Compute/Images/vh
[ERROR] ds' is invalid. Valid names start and end with a lower case letter or a number 
[ERROR] and has in between a lower case letter, number or dash with no consecutive dash
[ERROR] es and is 3 through 63 characters long.
[ERROR] At D:\work\.vsonline\Azure\PowerShell\PowerShell\copy blob.ps1:40 char:1
[ERROR] + Start-AzureStorageBlobCopy -Context $contextSource -SrcContainer $sourceConta
[ERROR] ine ...
[ERROR] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ERROR] ~~~
[ERROR]     + CategoryInfo          : NotSpecified: (:) [Start-AzureStorageBlobCopy],  
[ERROR]    ArgumentException
[ERROR]     + FullyQualifiedErrorId : System.ArgumentException,Microsoft.WindowsAzure. 
[ERROR]    Commands.Storage.Blob.Cmdlet.StartAzureStorageBlobCopy
[ERROR]  

代码失败的原因是您在脚本中指定的容器名称无效。请参阅此链接以获取有效的容器名称:

根据您在上述评论中提供的信息,请尝试以下操作:

$sourceContainerName = "system"
$sourceBlobName = "Microsoft.Compute/Images/vhds/template-osDisk.be7b0cf4-a28b-47f9-89c7-43887f1570ab.vhd

如错误所示,blob容器的名称
system/Microsoft.Compute/Images/vhds
无效。它应该是
vhds
。我建议使用存储资源管理器查看存储帐户的内容,以查看blob容器和blob的正确名称。我明确给出了“vhds”。(保存AzureRmVMImage-DestinationContainerName'vhds'…)但是该命令创建了容器系统/Microsoft.Compute/Images/vhds.Inase I know…,它就在那里。我使用了azure门户blob属性(复制剪贴板)可以将完整url插入到我的脚本中…您可以共享blob的完整url吗?在SO注释中不会看到https,并且我已将真实存储名称更改为“mystorage”