API:尝试设置appveyor项目的名称

API:尝试设置appveyor项目的名称,api,powershell,appveyor,Api,Powershell,Appveyor,我正在尝试使用powershell创建appveyor项目并设置自己的名称 function Invoke-AppveyorCreateProject { param ( [System.String] $appveyorProjectName, [System.String] $repositoryName ) # step 1, create project $project = @{ repositoryPr

我正在尝试使用powershell创建appveyor项目并设置自己的名称

function Invoke-AppveyorCreateProject {
    param (
        [System.String] $appveyorProjectName,
        [System.String] $repositoryName
    )

    # step 1, create project
    $project = @{
        repositoryProvider="gitHub"
        repositoryName="esskar/$repositoryName"
        isPrivate=$true
    }
    $json = $project | ConvertTo-Json
    $project = Invoke-RestMethod -Method Post -Uri "$AppveyorApiUrl/projects" -Headers $AppveyorRestHeaders -Body $json -ContentType "application/json"

    # step 2, update project
    $project.name = $appveyorProjectName
    $json = $project | ConvertTo-Json
    $project = Invoke-RestMethod -Method Put -Uri "$AppveyorApiUrl/projects" -Headers $AppveyorRestHeaders -Body $json -ContentType "application/json"
}

# Globals
$AppveyorApiUrl = 'https://ci.appveyor.com/api'
$AppveyorApiToken = $env:AppveyorApiToken
$AppveyorRestHeaders = @{
  "Authorization" = "Bearer $AppveyorApiToken"
  "Content-type" = "application/json"
}
$AppveyorAccountName = $env:AppveyorAccountName

Invoke-AppveyorCreateProject "foo.bar" "repo1"
第1步起作用,创建项目,但当我尝试更改名称时,会出现异常

Invoke-RestMethod : {"message":"Object reference not set to an instance of an object."}
At appveyortest.ps1:20 char:16
+ ...  $project = Invoke-RestMethod -Method Put -Uri "$AppveyorApiUrl/proje ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

当我在步骤1的创建过程中尝试设置名称时,将不使用名称,并且project与未设置名称的项目具有相同的名称。

在步骤2中使用以下代码:

$settings = Invoke-RestMethod -Uri "$AppveyorApiUrl/projects/$($project.accountName)/$($project.slug)/settings" -Headers $AppveyorRestHeaders  -Method Get
$settings.settings.name = $appveyorProjectName
Invoke-RestMethod -Uri "$AppveyorApiUrl/projects" -Headers $AppveyorRestHeaders -Body ($settings.settings | ConvertTo-Json -Depth 10) -Method Put

很好,它正在工作。我不知道为什么我没有从API文档中得到它