在 Powershell 中的 Get rest message header 中发送一个数组

Send an array in Get rest message header in Powershell

我正尝试在休息消息 header 中向 Servicenow 发送一组数字,但我没有得到很好的回复。如果我将数字硬编码到 header 而不是使用数组变量,我会得到我正在寻找的信息,但我需要能够传递从上一步生成的数组。

在 header 中,您可以看到我试图发送 "ritm" header 的位置。如果我发送被注释掉的行,它将起作用,但列出数组变量的行不起作用。这是我拥有的:

$headers = @{
  Authorization=("Basic {0}" -f $base64AuthInfo)
  Accept = "application/json"
  #ritm = "REQITEM0096138,REQITEM0096137"  ## If I send this line it works
  ritm = $reqitems
}

# Specify endpoint uri
$uri = "https://service-now.com/api/"

# Specify HTTP method
$method = "get"

# Send HTTP request
$response = Invoke-RestMethod -Headers $headers -Method $method -Uri $uri
$response.result | fl

数组到 [string] 的默认序列化是用空格分隔每个元素。如果您需要不同的分隔符,请使用 the -join operator:

$headers = @{
    ritm = $reqitems -join ','
}

Powershell 中的 REST headers 不会自动将嵌套的 objects 转换为正确的格式,因此您需要创建字符串而不是数组。

您的 ritm = $reqitems 可能是使用

创建的

$reqitems = 'blah', 'blah2'

这会创建一个 header 不喜欢的数组

如果你不想要一个数组,你可以这样做

$reqitems = 'blah1, blah2'

这会将您的值创建为字符串,这样效果会更好。