Я пытаюсь написать некоторый код PowerShell для взаимодействия с API хранилища в Azure Commercial, и у меня возникают некоторые проблемы с получением правильной структуры заголовков.
Ниже приведен код, который я использую для получения токена для моего Принципала обслуживания:
# Get token for Azure Resource Manager API
$Body = @{
'resource' = $storageResourceID
'client_id' = $tf_sp_appid
'grant_type' = 'client_credentials'
'client_secret' = $terraform_sp_secret
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept' = 'application/json'}
Body = $Body
Method = 'Post'
URI = $TokenEndpoint
}
# Get token
$token = Invoke-RestMethod @params
Когда я запускаю приведенный ниже код, чтобы получить список всех контейнеров в учетной записи хранения, он выдает ошибку о неверном значении заголовка:
$getDate = ((get-date).ToUniversalTime()).ToString('R')
$RestAPIParams = @{
Uri = "https://$storageAcctName.blob.core.windows.net/?comp=list"
Method = "Get"
Verbose = $true
Headers = @{
'authorization' = "Bearer $($token.access_token)"
'x-ms-date' = "$getDate"
'x-ms-version' = "2017-10-01"
}
}
$result = (Invoke-RestMethod @RestAPIParams).value
![enter image description here](https://i.stack.imgur.com/rCZAO.jpg)