我试图在命令行上使用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
答案 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
我的测试样本:
有关New-AzureStorageBlobSASToken
的用法的更多详细信息,请参阅此link。