返回的Azure New-AzureStorageBlobSasToken错误的fulluri字符串

时间:2018-11-02 17:18:23

标签: azure powershell sas azure-storage azure-powershell

我试图在命令行上使用AzureRM PowerShell模块为Blob容器(和子文件夹数据)生成新的SAS令牌。 在门户中导航并为指定文件手动创建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-容器   “ ContainerNameHere / ToolsSubFolder / randomfile.ZIP” -Blob   $ StorageAccountName-权限r-上下文$ 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&sp = r

如果我导航至门户并手动生成新的SAS令牌,则FullURI在内容和格式上都是正确的。

PowerShell v5.1 Windows 10

1 个答案:

答案 0 :(得分:0)

此问题是由您的最后一条命令引起的:

$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的用法的更多详细信息,请参阅此link