2017-02-09 6 views
0

私は、PowerShellを使用してOffice 365グループのカレンダーにイベントを作成しようとしています。エラーMicrosoft Graph APIを使用してpowershellでグループカレンダーイベントを作成すると400の不正要求が発生する

これは私の質問は

まず、非常に基本的な:-)になる場合、私はシンプルなJSONファイル(calendar.json)

{ 
    "start": 
{ 
"dateTime":"2017-03-12T17:00:00.0000000", 
"timeZone":"UTC" 
}, 
"end": 
{ 
"dateTime":"2017-03-12T17:30:00.0000000", 
"timeZone":"UTC" 
}, 
    "responseStatus": { 
    "response": "None" 
    }, 
    "iCalUId": "null", 
    "isReminderOn": false, 
    "subject": "Test Event created from API" 
} 
を作成したので、申し訳ありませんが、このタイプのプログラミングを行うには、私の初めての経験であります

それから私は、これらの手順でイベントを作成します。

は私にトークン このコードでヘッダーを追加を与えるテストPowerShellの機能を使用します

私は今から始めているので、オブジェクトのjsonファイルとjsonのオブジェクトを変換します(私はそれがかなり愚かだと知っていますが、私はjsonを知らず、返された何PowerShellのコードのエラー)

$json = ConvertFrom-Json -InputObject (Gc 'C:\Users\mmangiante\OneDrive - Interactive Media S.p.A\Office 365\calendar.json'-Raw) 
$body = ConvertTo-Json $json 

コールを呼び出し、RestMethod

response = Invoke-RestMethod 'https://graph.microsoft.com/v1.0/groups/768afb0c-bafd-4272-b855-6b317a3a9953/calendar/events' -Method Post -Headers $headers -Body $json 

は400不正な要求です。

try{$restp=Invoke-RestMethod 'https://graph.microsoft.com/v1.0/groups/768afb0c-bafd-4272-b855-6b317a3a9953/calendar/events' -Method Post -Headers $headers -Body $json 
} catch {$err=$_} 
$err 

などがHow do I get the body of a web request that returned 400 Bad Request from Invoke-RestMethodで提案されているが、私は興味の何も見つかりませんでした。

それは私がエラーを返すように自分のコードを変更し、その質問に与えられた答えを考えるSending Microsoft Graph request events returns 400

の同じエラーです。私が見つけた 唯一のものは、「私は私のJSONは「整形」されていないと仮定し、私はドンこれhttps://github.com/PowerShell/PowerShell/issues/2193

のように書いている時点で、起動-RestMethodは、完全な応答を返さない、ということです理由を知りません。

誰かに提案がありますか?

答えて

0

この書式設定は過去に私にとってはうまくいきました。これはあなたの問題を解決するかどうか、私に教えてください:

$headers = @{ 
    "Authorization" = ("Bearer {0}" -f $token); 
    "Content-Type" = "application/json"; 
} 

$body = @{ 
    Name1 = 'Value1'; 
    Name2 = 'Value2'; 
} 

$bodyJSON = $body | ConvertTo-Json 

Invoke-RestMethod -Method Post -Uri <API HERE> -Headers $headers -Body $bodyJSON -OutFile $output 
0

おかげショーン、

私はあなたの提案を試みたが、運なし。私は他の2つのAPIを使って他のテストを行い、不一致な結果を見つけました。 最初のテストは、私は、サンプルJSONのPowerShellの表現作成https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_post_contacts

のように連絡先を作成、連絡に関連するグラフAPIを使用することである:次いで

$contactbody = @{ 
    givenName = 'Ciccio'; 
    surname = 'Patacca'; 
    emailAddresses = @(
     @{ 
      address = '[email protected]' 
      name = 'Ciccio Patacca' 
     } 
    ) 
    businessPhones = (
     '+39 555 123 4567' 
    ) 
} 

とJSONに変換し

$contactbody = $contactbody | ConvertTo-Json 

私の会社の私のユーザーに関連するオブジェクトIDをAzure Portalから取得しましたので、私は残りの方法を呼び出します:

$response = Invoke-RestMethod 'https://graph.microsoft.com/v1.0/users/e37d2dbe-bdaf-4098-9bb0-03be8c653f7d/contact' -Method Post -Headers $headers -Body $contactbody 

最終的な結果は、400の不正なリクエストエラーです。 私は別の例を試して、Google検索から取得したコードを再利用しました。 私はサンプルのようにPowerShellのJSON表現をコピーして変換し、この時間:

$body = @{"displayName"="ps-blog"; "mailEnabled"=$false; "groupTypes"[email protected]("Unified"); "securityEnabled"=$false; "mailNickname"="ps1" } | ConvertTo-Json 

と、https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/group_post_groupsに述べたように、私は残りの方法

$response = Invoke-RestMethod 'https://graph.microsoft.com/v1.0/groups' -Method Post -Headers $headers -Body $body 

と呼ばれ、これが働いていました。 私は、以前のpowershellの表現は、エラーのあるサンプルが正しく形成されていないと考えました(たとえ印刷したとしても、グラフのapiのサンプルと同じです)。テストのために、私はこのように、本体の最後のPowerShellの書き換え:

$body = @{ 
    displayName = 'TestGraphGroup'; 
    mailEnabled = $true; 
    groupTypes = @('Unified') 
    securityEnabled = $false; 
    mailNickname = 'TestGraphGroup' 
} 

$body = $body | ConvertTo-Json 

を、最後のメソッドを呼び出し:それは再び働きました。

だから私は間違っていますか?

関連する問題