如何通过PowerShell从AppVeyor API获取构建作业jobid属性?

如何通过PowerShell从AppVeyor API获取构建作业jobid属性?,powershell,Powershell,我已从AppVeyor API获得此JSON: $build = Invoke-WebRequest -Uri https://ci.appveyor.com/api/projects/XXX/XXX/branch/master | ConvertFrom-Json 我需要看看这个阵列: $build.build.jobs 返回: jobId : jgc1moa0o1tjdkyq name : Environme

我已从AppVeyor API获得此JSON:

 $build = Invoke-WebRequest -Uri https://ci.appveyor.com/api/projects/XXX/XXX/branch/master | ConvertFrom-Json
我需要看看这个阵列:

$build.build.jobs
返回:

jobId                    : jgc1moa0o1tjdkyq
name                     : Environment: PYTHON=C:\Python35, PYTHON_VERSION=3.5.x, PYTHON_ARCH=32
allowFailure             : False
messagesCount            : 0
compilationMessagesCount : 0
compilationErrorsCount   : 0
compilationWarningsCount : 0
testsCount               : 0
passedTestsCount         : 0
failedTestsCount         : 0
artifactsCount           : 1
status                   : success
started                  : 2017-03-23T08:34:59.2087897+00:00
finished                 : 2017-03-23T08:37:03.7539463+00:00
created                  : 2017-03-23T08:34:52.1106626+00:00
updated                  : 2017-03-23T08:37:03.7539463+00:00

jobId                    : 3yqddtiapirm49ow
name                     : Environment: PYTHON=C:\Python35-x64, PYTHON_VERSION=3.5.x, PYTHON_ARCH=64
allowFailure             : False
messagesCount            : 0
compilationMessagesCount : 0
compilationErrorsCount   : 0
compilationWarningsCount : 0
testsCount               : 0
passedTestsCount         : 0
failedTestsCount         : 0
artifactsCount           : 1
status                   : success
started                  : 2017-03-23T08:37:08.5375578+00:00
finished                 : 2017-03-23T08:39:10.7684334+00:00
created                  : 2017-03-23T08:34:52.4856621+00:00
updated                  : 2017-03-23T08:39:10.7840711+00:00
我需要
jobId
其中名称包含
Python35-X64

下面的表达式不返回任何内容,我做错了什么

$job_id = $build.build.jobs | where { $_.name -like "*Python35-X64*" }

表达式不返回任何内容,因为结果被分配给变量
$job\u id
。本例中的变量不包含作业id,而是包含作业对象

$job = $build.build.jobs |? name -like "*Python35-X64*" | Select-Object -First 1;
$job;
$job_id = $job.jobId;
注意:如果不选择第一个结果,
$job
将包含一个作业数组,以防多个名称与where子句匹配

如果要直接选择
jobId
属性,可以按如下操作

$job_id = ($build.build.jobs |? name -like "*Python35-X64*" | Select-Object -First 1).jobId;

这应该行得通,那个属性是字符串吗?那个么为什么这是一个东西呢?如果我这样做
$job\u id=$build.build.jobs | where{$\u.name-比如“*Python35-X64*”}
它返回一个包含“Python35-X64”的对象数组@4c74356b41,我不确定我是否正确理解了你的评论。我在回答中写了警告,因为变量名为
$job\u id
,如果该变量包含多个id,我会将该变量重命名为
$job\u id
,这样就不会有其他程序员意外地暗示始终只分配了一个id。