У меня есть арендатор 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. Или даже что изменило на причину это как несколько недель назад, проблемный сервер также хорошо работал.
Добавьте
<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>
Более полный ответ для тех, кто использует немодифицированные файлы 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>