我无法使用此文档查询存储表。
这是我用来获取共享密钥以针对 Azure 存储表进行身份验证的函数。
function Get-SharedKeyLiteAuthHeader {
param(
[Parameter(Mandatory = $TRUE)]
[String]
$StorageAccount,
[Parameter(Mandatory = $TRUE)]
[String]
$TableName,
[Parameter(Mandatory = $TRUE)]
[String]
$AccessKey,
[Parameter(Mandatory = $FALSE)]
[String]
$Version = "2020-04-08"
)
$GMTTime = (Get-Date).ToUniversalTime().toString('R')
$StringToSign = "$GMTTime`n/$($StorageAccount)/$($TableName)"
$Hmacsha = New-Object System.Security.Cryptography.HMACSHA256
$Hmacsha.key = [Convert]::FromBase64String($AccessKey)
$Signature = $Hmacsha.ComputeHash([Text.Encoding]::UTF8.GetBytes($StringToSign))
$Signature = [Convert]::ToBase64String($Signature)
return @{
'x-ms-date' = $GMTTime
Authorization = "SharedKeyLite " + $StorageAccount + ":" + $Signature
"x-ms-version" = $Version
Accept = "application/json;odata=fullmetadata"
}
}
这是我正在进行的 REST 调用,它返回所有表条目并返回状态代码 200。
$Uri = "https://$($StorageAccount).table.core.windows.net/$($TableName)"
$Headers = Get-SharedKeyLiteAuthHeader -StorageAccount $StorageAccount -TableName $TableName -AccessKey $AccessKey
$AllEntries = Invoke-RestMethod -Method GET -Uri $Uri -Headers $Headers -ContentType application/json
这是我正在进行的返回 403 AuthenticationFailed 的 REST 调用。
$Uri = "https://$($StorageAccount).table.core.windows.net/$($TableName)()?$top=2"
$Headers = Get-SharedKeyLiteAuthHeader -StorageAccount $StorageAccount -TableName $TableName -AccessKey $AccessKey
$SomeEntries = Invoke-RestMethod -Method GET -Uri $Uri -Headers $Headers -ContentType application/json
我的最终目标是按 date 过滤,但我无法让任何查询参数正常工作。我怀疑这与缺少标题元素有关,但我无法确定这些可能是什么,因为讨论所需标题元素的文档列出了我已经指定的所有元素。
任何帮助表示赞赏 - 谢谢。