Azure New-AzureStorageBlobSasToken 返回不正确的 fulluri 字符串
Azure New-AzureStorageBlobSasToken incorrect fulluri string being returned
我正在尝试使用 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 -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&sp=r
如果我导航到门户并手动生成新的 SAS 令牌,则 FullURI 在内容和格式方面都是正确的。
PowerShell v5.1
Windows10
问题是由您的最后一条命令引起的:
$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
我的测试样本:
更多关于New-AzureStorageBlobSASToken
的用法,请参考link。
我正在尝试使用 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 -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&sp=r
如果我导航到门户并手动生成新的 SAS 令牌,则 FullURI 在内容和格式方面都是正确的。
PowerShell v5.1 Windows10
问题是由您的最后一条命令引起的:
$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
我的测试样本:
更多关于New-AzureStorageBlobSASToken
的用法,请参考link。