Set-AzureStorageBlobContent помещает все файлы в корень - PullRequest
0 голосов
/ 11 июля 2019

Я использую Set-AzureStorageBlobContent для загрузки файлов в мой BLOB-объект:

foreach ($file in Get-ChildItem -Path $path -File -Recurse) {  
  Set-AzureStorageBlobContent 
    -Blob $file.Name 
    -Container $container 
    -File $file.FullName 
    -Context $context -Properties $prop -Force
}

Это работает, но все файлы в подпапках в папке $path помещаются в корневую папку хранилища.blob.

Например, в моей папке $path (исходные файлы) у меня есть папка с именем graphic, внутри которой находятся мои изображения image1.png, поэтому структура:

graphic
  image1.png
index.html

Когда я запускаю задачу Set-AzureStorageBlobContent, она загружает image1.png в корневую папку, а не создает папку graphic и помещает ее туда.

Можно ли сохранить структуру папок, когдазагрузка файлов с использованием Set-AzureStorageBlobContent?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

На самом деле, я упоминал об этом в моем предыдущем ответе.

Это связано с -Blob $file.Name, например, если файл a.txt расположен в d:\temp\sub\a.txt, то $ file.name является a.txt. Поэтому при загрузке в bloo statorage с помощью командлета Set-AzureStorageBlobContent он всегда находится в корневой папке.

Решение состоит в том, что вы должны передать sub\a.txt вместо a.txt для параметра -Blob.

Сначала определите переменную для корневого пути локальной папки, например $path = "D:\temp\", затем для параметра -Blob для Set-AzureStorageBlobContent используйте -Blob $_.FullName.Replace($path,'').

Затем вы можете проверить это на портале Azure, файл a.txt должен быть в root/sub/a.txt

0 голосов
/ 11 июля 2019

Как сказал Иван, проблема была в -Blob значении. В итоге я использовал немного другое решение. Поскольку значение FullName выглядит примерно так:

D:\a\r1\a\_ClientWeb-Build-CI\ShellArtifact\out\build\graphic\email-empty.svg

Я использовал функцию .split(), чтобы получить нужную подпапку:

-Blob $file.FullName.split('\', 9)[8]

графический \ электронная почта-empty.svg

Полная команда:

Set-AzureStorageBlobContent -Blob $file.FullName.split('\', 9)[8] -Container $container -File $file.FullName -Context $context -Properties $prop -Force
...