“Número máximo de itens que podem ser serializados ou desserializados em um gráfico de objeto” ao executar GetMsolUser -All

1

Eu tenho um locatário do Office 365 no qual executo o seguinte comando

Get-MsolUser -All

no servidor A recebo

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

No servidor b falando com o mesmo inquilino, funciona bem. Ambas possuem as mesmas versões dos commandlets powershell do diretório ativo azure.

De googling eu vejo que você pode definir o MaxItemsInObjectGraph para um valor mais alto, mas eu não sei onde encontrar o arquivo de configuração adequado para fazer isso por powershell. Ou até mesmo o que mudou para causar isso como até algumas semanas atrás, o servidor do problema também funcionou bem.

    
por zu1b 13.05.2015 / 11:41

2 respostas

1

Adicionar

<dataContractSerializer maxItemsInObjectGraph="2147483646" /> 

para o seu machine.config em C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config
ou para .NET mais antigo em:
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG

(Use a pasta framework64 para 64 bits, caso contrário use a pasta framework )

O texto deve ser adicionado no elemento endpointBehaviours . Então, meu é assim:

<endpointBehaviors>
  <dataContractSerializer maxItemsInObjectGraph="2147483646" />    
  <Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior/>  
</endpointBehaviors>
    
por 26.05.2015 / 14:03
0

Uma resposta mais completa para aqueles que usam arquivos machine.config não modificados.

1) Verifique sua versão do powershell com $ psversiontable.psversion.tostring ()

2) Mover para a pasta que corresponde à sua versão do powershell C: \ Windows \ Microsoft.NET \ Framework * \ * \ CONFIG

3) Modifique o machine.config.

Entre as seguintes linhas:

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

Adicionar:

<system.serviceModel>
    <commonBehaviors>
        <endpointBehaviors>
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </endpointBehaviors>
    </commonBehaviors>
</system.serviceModel>
    
por 29.07.2015 / 14:45