Удаленный сервер возвратил ошибку: (400) Bad Request. В C: \ Program Files \ WindowsPowerShell \ Modules \ CosmosDB \ 3.1.0.293 \ CosmosDB.psm1 - PullRequest
0 голосов
/ 22 января 2019

У меня есть сценарий PowerShell для создания базы данных и коллекции внутри Azure Cosmos DB.Я пытаюсь вставить некоторые фиктивные записи в коллекцию с помощью приведенного ниже сценария PowerShell.

    #region Parameters

$clientId= "XXXXXXXXXXXXXXX"
$clientSecret= "XXXXXXXXXXXX="
$subscriptionName= "XXXXXXXXXXXXXXX"
$tenantId= "XXXXXXXXXXXXXXXX"
$resourceGroupName= "Demo"
$connectionString='XXXXXXXXXXXXXXXXx=='
$cosmosDBAccounts= @('demo-account-01')
$databaseName='demo-db-01'
$collectionName='demo-collection-01'
$partitionkey= 'demo'

#endregion

#region Login into Azure using Interactive Mode or Service Principal details

# sign in
Write-Host "Logging in...";

#Connect-AzAccount 
$securePassword = $clientSecret | ConvertTo-SecureString -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $clientId, $securePassword
Connect-AzAccount -Credential $cred -ServicePrincipal -TenantId $tenantId

#Set the current azure subscription
Select-AzSubscription  -subscription $subscriptionName

#endregion

#region Create Collection and insert some data into it

foreach($cosmosDBAccount in $cosmosDBAccounts){

    $key = Get-CosmosDbAccountMasterKey -Name $cosmosDBAccount -ResourceGroupName $resourceGroupName
    $cosmosDbContext = New-CosmosDbContext -Account $cosmosDBAccount -Key $key
    New-CosmosDbDatabase -Context $cosmosDbContext -Id $databaseName
    New-CosmosDbCollection -Context $cosmosDbContext -Id $collectionName -PartitionKey $partitionkey -OfferThroughput 2500 -Database $databaseName
0..9 | Foreach-Object {

$document = @"
{
         "id": "$([Guid]::NewGuid().ToString())",
         "name": "pradeep",         
         "demo": "AAA"  
}
"@
New-CosmosDbDocument -Context $cosmosDbContext -CollectionId $collectionName -DocumentBody $document -PartitionKey "AAA"

}
}



#endregion

Но всякий раз, когда я запускаю приведенный выше сценарий, я получаю сообщение об ошибке, как показано ниже:

Invoke-WebRequest: удаленный сервер возвратил ошибку: (400) неверный запрос.В C: \ Program Files \ WindowsPowerShell \ Modules \ CosmosDB \ 3.1.0.293 \ CosmosDB.psm1: 5275 char: 30 + ... $ requestResult = Invoke-WebRequest @invokeWebRequestParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Итак, кто-нибудь может подсказать мне, как решить вышеуказанную проблему?

1 Ответ

0 голосов
/ 22 января 2019

Вы создали коллекцию с $partitionkey= 'demo', поэтому вам нужно добавить в нее новый документ, тогда он будет работать нормально.

 $document = @"
{
         "id": "$([Guid]::NewGuid().ToString())",
         "name": "pradeep",         
         "demo": "AAA"  
}
"@
New-CosmosDbDocument -Context $cosmosDbContext -CollectionId 'cll3' -DocumentBody $document -PartitionKey "AAA"

enter image description here

Обновление :

Попробуйте выполнить полную команду, как показано ниже, она должна работать.

$cosmosDBAccounts= @('joycosmos')
$resourceGroupName = 'joywebapp'
$partitionkey = 'demo'
$databaseName = 'db1'
$collectionName = 'clle'

foreach($cosmosDBAccount in $cosmosDBAccounts){

    $cosmosDbContext = New-CosmosDbContext -Account $cosmosDbAccount -Database $databaseName -ResourceGroup $resourceGroupName    
    New-CosmosDbDatabase -Context $cosmosDbContext -Id $databaseName
    New-CosmosDbCollection -Context $cosmosDbContext -Id $collectionName -PartitionKey $partitionkey -OfferThroughput 2500 -Database $databaseName

0..9 | Foreach-Object {

$document = @"
{
         "id": "$([Guid]::NewGuid().ToString())",
         "name": "pradeep",         
         "demo": "AAA"  
}
"@

New-CosmosDbDocument -Context $cosmosDbContext -CollectionId $collectionName -DocumentBody $document -PartitionKey "AAA"

}
}
...