Set-AzStorageBlobContent выдает исключение: недопустимые символы в пути - PullRequest
0 голосов
/ 04 февраля 2019

Я переношу сценарии развертывания 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 Обновление:

Я создал очень простой сценарий тестового случая вне нашего большого набора сценариев и очень легко могу воссоздать проблему.Я поместил файл с именем test.json в c: \, он содержит пустой объект json, только фигурные скобки, как вы можете видеть в выходных данных ниже.Я использую сценарий псевдонима AzureRM:

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:\>

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

После прочтения обсуждения с https://github.com/Azure/azure-powershell/issues/8473 (отметьте комментарии выше) и перехода по ссылке на https://blogs.msdn.microsoft.com/jeremykuhne/2016/06/09/new-net-path-handling-sneak-peek/ я смог решить проблему на своем компьютере.

Второйв связанном документе написано «Перетащите файл с именем powershell.exe.config в C:\Windows\System32\WindowsPowerShell\v1.0 со следующим содержимым».У меня уже был файл, поэтому я добавил содержимое в существующий файл.

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
  </runtime>
</configuration>

После перезапуска PowerShell я теперь смог успешно выполнить свои сценарии.Проблема началась после того, как я обновил модуль Az и удалил модуль AzureRm.Мы надеемся, что это сэкономит время других пользователей на погоне за ссылками.

0 голосов
/ 05 февраля 2019

Если ваша команда AzureRM работает нормально, самый простой способ запустить команду AzureRM с модулем Az - сначала просто выполнить Enable-AzureRmAlias, затем выполнить команду AzureRM,это также будет работать.

Кроме того, я проверяю команду Az на локальном компьютере, она должна работать нормально.

$context = New-AzStorageContext -StorageAccountName "<StorageAccountName>" -StorageAccountKey "xxxxxxx"
Set-AzStorageBlobContent -Container "111" -File "C:\Users\joyw\Desktop\cosmos.json" -Context $context

enter image description here

Это мои модули PowerShell, вы можете проверить их.

enter image description here

...