【发布时间】:2019-06-28 14:00:02
【问题描述】:
我正在将 Azure 部署脚本从 AzureRM 迁移到 Az,新模块似乎无法打开文件。
有什么想法吗?
我尝试用正斜杠替换反斜杠; 我什至从脚本所在的文件夹中调用它,所以我不需要将完整的文件名传递给它,它会正确地将它解析为全名,但它仍然无法打开它。
PS C:\dev\pq\service\scripts\azure\NestedTemplates> Set-AzStorageBlobContent -Container "florin-container" -Context $storageAccount.Context -File ApplicationInsights.json
Set-AzStorageBlobContent : Failed to open file C:\dev\pq\service\scripts\azure\NestedTemplates\ApplicationInsights.json: Illegal characters in path..
At line:1 char:1
+ Set-AzStorageBlobContent -Container "florin-container" -Context $stor ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Set-AzStorageBlobContent], TransferException
+ FullyQualifiedErrorId : TransferException,Microsoft.WindowsAzure.Commands.Storage.Blob.SetAzureBlobContentCommand
2/13/19 更新:
我在我们更大的脚本套件之外创建了一个非常简单的测试用例场景,并且可以很容易地重现问题。我在 c:\ 中放置了一个名为 test.json 的文件,它包含一个空的 json 对象,只是花括号,如下面的输出所示。我正在使用 AzureRM Alias 方案:
PS C:\> type test.json
{}
PS C:\> type C:\test.json
{}
PS C:\> Enable-AzureRmAlias
PS C:\> $sa = Get-AzureRmStorageAccount -ResourceGroupName florin-rg -Name florinsa
PS C:\> Set-AzureStorageBlobContent -Container florin-container -Context $sa.Context -File test.json -Blob test
Set-AzureStorageBlobContent : Failed to open file C:\test.json: Illegal characters in path..
At line:1 char:1
+ Set-AzureStorageBlobContent -Container florin-container -Context $sa. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Set-AzStorageBlobContent], TransferException
+ FullyQualifiedErrorId : TransferException,Microsoft.WindowsAzure.Commands.Storage.Blob.SetAzureBlobContentCommand
PS C:\>
【问题讨论】:
-
JSON文件中的路径只是磁盘路径吗?
-
是的。而且我尝试了不同的方式,相对路径,绝对路径,它正确解析为全名,但无法打开它。顺便说一句,同一部分在 AzureRM 版本上运行良好,所以我相当确信路径本身没有任何问题。
-
它可能不喜欢 JSON 文件中的逗号或冒号吗?快速谷歌并没有发现任何重要的东西。作为测试,您能否使用仅包含一行的不同 JSON 文件来查看括号、冒号或逗号是否使解释器吠叫?
-
我会尝试,尽管错误消息显示“PATH 中有非法字符”。我以为这是我的文件路径...
-
不熟悉 Azure 命令,但我猜 JSON 中有一些它不喜欢的东西。之前在自动化 JSON 配置方面遇到过类似问题,但纯粹是从这里猜测
标签: azure powershell azure-storage