Попытка заставить Powershell работать с API - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь написать скрипт Powershell для работы с API-интерфейсом Microsoft, и, будучи новичком в этом, я столкнулся с ошибкой, которую, похоже, не могу пройти.

Ошибка:

Cannot find an overload for "UpdateDeviceValues" and the argument count: "3".
At C:\PowerShellScripts\API-UpdateDeviceValues-ICC.ps1:13 char:37
+ $accounts = $pmws.UpdateDeviceValues <<<< ('18B81F1FD790','DisableICC','True');
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Судя по моим поискам, API требует, чтобы ему было отправлено три значения, но это то, что я отправляю.

Мой код:

$pmws = New-Object PrincipalManagement;
$pmws.Credentials = $cred;

$pmws.url = "http://172.31.9.2/bss/PrincipalManagement.asmx";

$accounts = $pmws.UpdateDeviceValues('18B81F1FD790','DisableICC','True');

$accounts

Любая помощь с этой ошибкой будет принята с благодарностью. Я довольно новичок в этом, заставляя Powershell работать с API.

Это пример SOAP 1.1 для API.

POST /bss/PrincipalManagement.asmx HTTP/1.1
Host: 172.31.9.2
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.microsoft.com/iptv/bss/UpdateDeviceValues"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
  <soap:Body>
    <UpdateDeviceValues xmlns="http://www.microsoft.com/iptv/bss">
      <deviceExternalID>string</deviceExternalID>
      <deviceValues>
        <DeviceValue Key="string" Value="string" />
        <DeviceValue Key="string" Value="string" />
      </deviceValues>
    </UpdateDeviceValues>
  </soap:Body>
</soap:Envelope>

Я могу запустить это в PowerShell:

> $pmws | Get-Member

Я получаю длинный список API, и в этом списке я пытаюсь использовать ...

TypeName: PrincipalManagement Имя - MemberType - Определение
UpdateDeviceValues ​​- Метод - System.Void UpdateDeviceValues ​​(строка deviceExternalID, DeviceValue [] deviceValues)

Большое спасибо Chamele0n! Ответ найден! Мне не хватало как правильно отформатировать параметры при вызове метода. Это работает!

$Account = "18B81F1FD790"

$deviceValue = New-Object ($ns + ".DeviceValue") 
$deviceValue.Key = "DisableICC" 
$deviceValue.Value = "True" 

$accounts = $pmws.UpdateDeviceValues($Account, $deviceValue)

Спасибо, Джейсон ...

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