Назад | Перейти на главную страницу

«Максимальное количество элементов, которые могут быть сериализованы или десериализованы в графе объектов» при выполнении GetMsolUser -All

У меня есть клиент Office 365, на котором я выполняю следующую команду

Get-MsolUser -All

на сервере А я получаю

get-msoluser : The formatter threw an exception while trying to deserialize the message: There was an error while
trying to deserialize parameter http://provisioning.microsoftonline.com/:ListUsersResult. The InnerException message
was 'Maximum number of items that can be serialized or deserialized in an object graph is '65536'. Change the object
graph or increase the MaxItemsInObjectGraph quota. '.  Please see InnerException for more details.
At line:1 char:1
+ get-msoluser -All
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [Get-MsolUser], NetDispatcherFaultException
    + FullyQualifiedErrorId : System.ServiceModel.Dispatcher.NetDispatcherFaultException,Microsoft.Online.Administrati
   on.Automation.GetUser

На сервере b, разговаривающем с тем же клиентом, он работает нормально. Оба имеют одинаковые версии командлетов Azure Active Directory PowerShell.

Погуглив, я вижу, что вы можете установить MaxItemsInObjectGraph на более высокое значение, но я не знаю, где найти подходящий файл конфигурации для этого для PowerShell. Или даже что изменилось, чтобы вызвать это, поскольку несколько недель назад проблемный сервер также работал нормально.

Добавить

<dataContractSerializer maxItemsInObjectGraph="2147483646" /> 

на ваш machine.config в
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config
или для более старого .NET в:
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG

(Использовать framework64 папка для 64bit, иначе используйте фреймворк папка)

Текст необходимо добавить в endpointBehaviours элемент. Итак, мои выглядят так:

<endpointBehaviors>
  <dataContractSerializer maxItemsInObjectGraph="2147483646" />    
  <Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior/>  
</endpointBehaviors>

Более полный ответ для тех, кто использует неизмененные файлы machine.config.

1) Проверьте свою версию PowerShell с помощью $ psversiontable.psversion.tostring ()

2) Перейдите в папку, соответствующую вашей версии PowerShell. C: \ Windows \ Microsoft.NET \ Framework * \ * \ CONFIG

3) Измените machine.config.

Между следующими строками:

</configSections>
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">

Добавить:

<system.serviceModel>
    <commonBehaviors>
        <endpointBehaviors>
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </endpointBehaviors>
    </commonBehaviors>
</system.serviceModel>