2016-10-18 1 views
0

J'essaie d'envoyer un tableau de nombres dans un en-tête de message de repos à Servicenow, mais je n'ai pas de chance d'obtenir une bonne réponse. Si je code dur les nombres dans l'en-tête au lieu d'utiliser une variable de tableau, j'obtiens l'information que je recherche, mais je dois pouvoir passer le tableau qui est généré d'une étape précédente.Envoyer un tableau dans Obtenir l'en-tête du message de reprise dans Powershell

Dans l'en-tête, vous pouvez voir où j'essaye d'envoyer un en-tête "ritm". Si j'envoie la ligne qui a été commentée, cela fonctionnera, mais la ligne avec la variable tableau listée ne fonctionne pas. Voici ce que j'ai:

$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 

Répondre

1

La sérialisation par défaut d'un tableau à un [string] est de séparer chaque élément avec des espaces. Si vous avez besoin d'un séparateur différent, utilisez the -join operator:

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

J'aurais dû ajouter que j'ai déjà séparé le tableau $ reqitems par des virgules. – tlock

+0

Les tableaux @tlock n'ont pas de séparateurs. Avez-vous un '[array]', ou un '[string]'? Si vous lancez 'gm -i $ reqitems', quel type est affiché en haut? – briantist

+0

TypeName: System.Object [] – tlock

0

têtes REST dans Powershell ne se convertissent pas automatiquement des objets imbriqués au bon format, vous aurez donc besoin de créer une chaîne plutôt qu'un tableau.

Votre ritm = $ reqitems est probablement créé à l'aide

$ reqitems = 'blah', 'blah2'

Cela crée un tableau qui l'en-tête n'aime pas

Si vous n » t veulent un tableau que vous pouvez faire

$ reqitems = « blah1, blah2 »

Cela va créer vos valeurs en tant que chaîne, qui fonctionnera mieux.

+0

Je déconseillerais de créer la chaîne directement de cette façon. Outre le fait que ce n'est pas si simple lorsque vos articles ne sont pas définis comme du temps de conception, cela peut entraîner des erreurs, et il faut des conditions supplémentaires pour gérer le premier/dernier objet afin de ne pas avoir une virgule supplémentaire. C'est la situation "-join" a été faite pour. Personnellement, je vais souvent créer un tableau et le joindre même si je définis statiquement les éléments, car il a tendance à être plus clair et plus facile à éditer. – briantist

+0

Oui, si je suis en train de changer ou d'ajouter une chaîne, je serais d'accord et ferais un tableau puis convertir en utilisant join, mais ce n'était pas clair à partir de la publication originale. Cela ne me dérange pas la méthode de chaîne si c'est seulement 1 ou 2 éléments et vous pouvez vous assurer que c'est clair. –