Azure New-AzureStorageBlobSasToken возвращается неверная строка fulluri - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь использовать модуль PowerShell AzureRM для создания нового токена SAS для контейнера BLOB-объектов (и данных подпапок) в командной строке. Этот процесс работает при навигации по порталу и создании токена SAS для указанного файла вручную, но при использовании PS

происходит сбой.
$SAResourceGroupName="someresourcegroupname"
$StorageAccountName="randomstorageaccountnamehere"

$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $SAResourceGroupName -AccountName $StorageAccountName).Value[1]
$Context=New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

$tmpStart = Get-Date
$tmpEnd = $tmpStart.AddHours(0.5)

$Starttime = ($tmpStart).ToString("yyyy-MM-ddTHH:mm:ssZ")
$EndTime = ($tmpEnd).ToString("yyyy-MM-ddTHH:mm:ssZ")


$SASToken = New-AzureStorageBlobSASToken -Blob $StorageAccountName -Container "ContainerNameHere/ToolsSubFolder/randomfile.ZIP" -Context $Context -Permission r -StartTime $StartTime -ExpiryTime $EndTime -FullURI

Получаемый в результате токен SAS дважды имеет $ StorageAccountName, а форматирование выполняется в HTML, поэтому сам токен не содержит правильных символов.

(данные очищены)

PS C: \ Users \ lsierra> New-AzureStorageBlobSASToken -Container "ContainerNameHere / ToolsSubFolder / randomfile.ZIP" -Blob $ StorageAccountName -Permission r -Context $ Context -FullUri https://randomstorageaccountnamehere.blob.core.windows.net/ContainerNameHere/ToolsSubFolder/randomfile.ZIP/randomstorageaccountnamehere?sv=2017-07-29&sr=b&sig=kXzYwqW%2BjKH1BAXwsBovVzCbGY2XzLxUY BxKQNkeqns% 3D & SE = 2018-11-02T18% 3A02% 3A02Z & зр = г

Если я перехожу на Портал и вручную генерирую новый токен SAS, то FullURI верен как по содержанию, так и по форматированию.

PowerShell v5.1 Windows 10

1 Ответ

0 голосов
/ 06 ноября 2018

Проблема была вызвана вашей последней командой:

$SASToken = New-AzureStorageBlobSASToken -Blob $StorageAccountName -Container "ContainerNameHere/ToolsSubFolder/randomfile.ZIP" -Context $Context -Permission r -StartTime $StartTime -ExpiryTime $EndTime -FullURI

В вашем случае это должно быть:

$SASToken = New-AzureStorageBlobSASToken -Blob "ToolsSubFolder/randomfile.ZIP" -Container "ContainerNameHere" -Context $Context -Permission r -StartTime $StartTime -ExpiryTime $EndTime -FullURI

Итак, ваш полный скрипт powershell будет похож на ниже, просто попробуйте, он отлично работает на моей стороне.

$SAResourceGroupName="someresourcegroupname"
$StorageAccountName="randomstorageaccountnamehere"

$StorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $SAResourceGroupName -AccountName $StorageAccountName).Value[1]
$Context=New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

$tmpStart = Get-Date
$tmpEnd = $tmpStart.AddHours(0.5)

$Starttime = ($tmpStart).ToString("yyyy-MM-ddTHH:mm:ssZ")
$EndTime = ($tmpEnd).ToString("yyyy-MM-ddTHH:mm:ssZ")

$SASToken = New-AzureStorageBlobSASToken -Blob "ToolsSubFolder/randomfile.ZIP" -Container "ContainerNameHere" -Context $Context -Permission r -StartTime $StartTime -ExpiryTime $EndTime -FullURI

Мой тестовый образец:

enter image description here

Подробнее об использовании New-AzureStorageBlobSASToken см. По ссылке .

...