“Максимальное количество объектов, которые могут быть сериализированы или десериализованы в графе объектов” при выполнении GetMsolUser - Все

У меня есть арендатор 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 говорящий с тем же арендатором это хорошо работает. У обоих есть те же версии голубого активного каталога powershell commandlets.

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

1
задан 12 November 2016 в 20:19
2 ответа

Добавьте

<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 для 64 бит, в противном случае используйте папку framework)

Текст должен быть добавлен в элемент endpointBehaviours. Так что мой выглядит следующим образом:

<endpointBehaviors>
  <dataContractSerializer maxItemsInObjectGraph="2147483646" />    
  <Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior/>  
</endpointBehaviors>
1
ответ дан 4 December 2019 в 00:07

Более полный ответ для тех, кто использует немодифицированные файлы 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>
0
ответ дан 4 December 2019 в 00:07

Теги

Похожие вопросы