代码之家  ›  专栏  ›  技术社区  ›  Pradeep

远程服务器返回错误:(400)错误请求。位于C:\Program Files\WindowsPowerShell\modules\cosmossdb\3.1.0.293\cosmossdb.psm1

  •  0
  • Pradeep  · 技术社区  · 6 年前

    我有一个PowerShell脚本,用于在AzureCosmos数据库中创建数据库和集合。我正试图使用下面的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\cosmossdb\3.1.0.293\cosmossdb.psm1:5275 char:30 +…$requestresult=invoke webrequest@invokebrequestParameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +categoryInfo:无效操作:(system.net.httpwebrequest:httpwebrequest)[调用webrequest],webexception +完全限定错误ID:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

    那么,有人能建议我如何解决上述问题吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Joy Wang    6 年前

    您使用 $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"
    
    }
    }
    
    推荐文章