При использовании Invoke-Restmethod с Azure я получаю ошибку InvalidOperation: (System. Net .HttpWebRequest: HttpWebRequest) [Invoke-RestMethod], WebException - PullRequest
0 голосов
/ 02 апреля 2020

Я работал над этим несколько дней. Мне нужно изменить категорию устройства в Intune через Powershell. Мне удалось собрать этот код, который я могу запустить:

if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback = @"
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class ServerCertificateValidationCallback
{
    public static void Ignore()
    {
        if(ServicePointManager.ServerCertificateValidationCallback ==null)
        {
            ServicePointManager.ServerCertificateValidationCallback += 
                delegate
                (
                    Object obj, 
                    X509Certificate certificate, 
                    X509Chain chain, 
                    SslPolicyErrors errors
                )
                {
                    return true;
                };
        }
    }
}
"@
Add-Type $certCallback
}
[ServerCertificateValidationCallback]::Ignore()



[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$TENANTID=""
$APPID=""
$PASSWORD=""
$result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://graph.microsoft.com"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" }
$token = $result.access_token

$Headers=@{
    'authorization'="Bearer $token"
    'host'="management.azure.com"
    'contentype'='application/json'
}

Я, очевидно, заполнил переменные. Затем я могу выполнить команду, как это:

Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$deviceid/deviceCategory" -Headers $Headers -Method Get

(Очевидно, Я объявил переменную deviceid) Я получаю это сообщение об ошибке:

Invoke-RestMethod : {
  "error": {
    "code": "UnknownError",
    "message": "{\"ErrorCode\":\"Forbidden\",\"Message\":\"{\\r\\n  \\\"_version\\\": 3,\\r\\n  
\\\"Message\\\": \\\"An error has occurred - Operation ID (for customer support): 
00000000-0000-0000-0000-000000000000 - Activity ID: a906420f-86a9-49b6-8e28-c10777edf019 - Url: https:
//fef.amsub0102.manage.microsoft.com/DeviceFE/StatelessDeviceFEService/deviceManagement/managedDevices
%28%27XXXDEVICEIDXXX%27%29/deviceCategory?api-version=5020-02-20\\\",\\r\\n  
\\\"CustomApiErrorPhrase\\\": \\\"\\\",\\r\\n  \\\"RetryAfter\\\": null,\\r\\n  
\\\"ErrorSourceService\\\": \\\"\\\",\\r\\n  \\\"HttpHeaders\\\": 
\\\"{\\\\\\\"WWW-Authenticate\\\\\\\":\\\\\\\"Bearer realm=\\\\\\\\\\\\\\\"urn:intune:service,c3998d6e
-2e37-4c56-87b5-7b444ee1cb26,f0f3c450-59bf-4f0d-b1b2-0ef84ddfe3c7\\\\\\\\\\\\\\\"\\\\\\\"}\\\"\\r\\n}\
",\"Target\":null,\"Details\":null,\"InnerError\":null,\"InstanceAnnotations\":[]}",
    "innerError": {
      "request-id": "a906420f-86a9-49b6-8e28-c10777edf019",
      "date": "2020-04-02T06:41:21"
    }
  }
}
At line:5 char:1
+ Invoke-RestMethod -Uri "https://graph.microsoft.com/beta/deviceManage ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-Re 
   stMethod], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestM 
   ethodCommand

Я заменил идентификатор устройства в этом сообщении об ошибке. Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...