none
Erro busca as licenças atribuídas aos usuários cadastrados usando o MSOnline e o Get-MsolUser RRS feed

  • Pergunta

  •  Olá, pessoal.

    Preciso de uma ajuda.

    Tenho uma aplicação (C#) que busca as licenças atribuídas aos usuários cadastrados usando o MSOnline e o Get-MsolUser. O problema que essa aplicação SÓ funciona para Windows form, dá erro quando tento buscar as licenças usando um Web form.

    O erro é o seguinte:

    O termo 'Connect-MsolService' não é reconhecido como nome de cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído, veja se o caminho está correto e tente novamente.

    Como posso resolver esse problema? Muito obrigado.

    Abraços,

    Ricardo.

    sexta-feira, 18 de setembro de 2015 20:00

Respostas

  • Olá, Marcos Roberto!

    Como não consegui fazer para Web-form, fiz a implementação para windows form mesmo e funcionou corretamente.

    Mas meu objetivo era fazer para Web-form. Mas muito obrigado.

    abraços,

    Ricardo.

    • Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 16:01
    terça-feira, 27 de outubro de 2015 10:52

Todas as Respostas

  • Olá Machado,

    Poderia dar mais detalhes a respeito deste erro?

    Esta é a mensagem de erro completa que aparece no momento da interrupção?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 21 de setembro de 2015 13:55
  • Olá, Marcos.

    Sim, esta é a mensagem de erro completa que aparece no momento da interrupção.

    Esse erro só aparece quando tento ver as informações numa página web (gridView), quando executo no windows form (dataGridView) as informações aparecem corretamente.

    Abraços,

    Ricardo.

    segunda-feira, 21 de setembro de 2015 14:25
  • O método a seguir é o que faz a consulta:

     public Collection<PSObject> ExcutePowershellCommands(String usuario, SecureString senha)
            {
                try
                {
                    Collection<PSObject> userList = null;

                    // Create Initial Session State for runspace.
                    InitialSessionState initialSession = InitialSessionState.CreateDefault();

                    initialSession.ImportPSModule(new[] { "MSOnline" });

                    // Create credential object.
                    PSCredential credential = new PSCredential(usuario, senha);

                    // Create command to connect office 365.
                    Command connectCommand = new Command("Connect-MsolService");

                    connectCommand.Parameters.Add((new CommandParameter("Credential", credential)));

                    // Create command to get office 365 users.
                    Command getUserCommand = new Command("Get-MsolUser");

                    using (Runspace psRunSpace = RunspaceFactory.CreateRunspace(initialSession))
                    {
                        // Open runspace.
                        psRunSpace.Open();

                        //Iterate through each command and executes it.
                        foreach (var com in new Command[] { connectCommand, getUserCommand })
                        {
                            var pipe = psRunSpace.CreatePipeline();

                            pipe.Commands.Add(com);

                            // Execute command and generate results and errors (if any).
                            Collection<PSObject> results = pipe.Invoke();

                            var error = pipe.Error.ReadToEnd();

                            if (error.Count > 0 && com == connectCommand)
                            {
                                MessageBox.Show(error[0].ToString(), "Problem in login");
                                return null;
                            }
                            if (error.Count > 0 && com == getUserCommand)
                            {
                                MessageBox.Show(error[0].ToString(), "Problem in getting users");
                                return null;
                            }
                            else
                            {
                                userList = results;
                            }
                        }
                        // Close the runspace.
                        psRunSpace.Close();
                    }
                    return userList;
                }
                catch (Exception)
                {
                    throw;
                }
            }

                                                                                                                                                                                                                 
    segunda-feira, 21 de setembro de 2015 14:31
  • Olá Machado,

    Poderia por gentileza verificar as informações desta documentação para assegurar-se de que não cometeu erro algum em sua codificação?

    Informações adicionais

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ segunda-feira, 21 de setembro de 2015 20:07
    segunda-feira, 21 de setembro de 2015 20:06
  • Olá, Marcos.

    Já verifiquei sim as informações da documentação, mas o problema continua.

    É estranho porque o código funciona para windows form mas não para o web form. Sempre mostra aquela mensagem de erro quando tento executar numa página web.

    Muito obrigado pela ajuda, Marcos.

    abraços,

    Ricardo.

    terça-feira, 22 de setembro de 2015 12:30
  • Olá Ricardo,

    Peço que por gentileza verifique e considere as informações desta documentação.

    Informações adicionais.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 22 de setembro de 2015 14:02
  • Olá, Marcos.

    Eu sei a plataforma que quero desenvolver (web form), não estou na dúvida entre web form e windows form.

    Meu problema que a aplicação funciona normalmente para windows form, mas para web form dá o erro, embora eu utilize o mesmo método.

    abraços,

    Ricardo.

    terça-feira, 22 de setembro de 2015 17:03
  • Você já havia feito um código idêntico para duas plataformas diferentes anteriormente?


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 22 de setembro de 2015 17:33
  • Olá, Marcos.

    Não, é a primeira vez que faço.

    abraços,

    Ricardo.

    terça-feira, 22 de setembro de 2015 17:45
  • Olá, pessoal.

    Preciso de uma ajuda.

    Tenho uma aplicação (C#) que busca as licenças atribuídas aos usuários cadastrados usando o MSOnline e o Get-MsolUser. O problema que essa aplicação SÓ funciona para Windows form, dá erro quando tento buscar as licenças usando um Web form.

    O erro é o seguinte:

    O termo 'Connect-MsolService' não é reconhecido como nome de cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído, veja se o caminho está correto e tente novamente.

    Esse erro só aparece quando tento ver as informações numa página web (gridView), quando executo no windows form (dataGridView) as informações aparecem corretamente.

    O método a seguir é o que faz a consulta:

     public Collection<PSObject> ExcutePowershellCommands(String usuario, SecureString senha)
            {
                try
                {
                    Collection<PSObject> userList = null;

                    // Create Initial Session State for runspace.
                    InitialSessionState initialSession = InitialSessionState.CreateDefault();

                    initialSession.ImportPSModule(new[] { "MSOnline" });

                    // Create credential object.
                    PSCredential credential = new PSCredential(usuario, senha);

                    // Create command to connect office 365.
                    Command connectCommand = new Command("Connect-MsolService");

                    connectCommand.Parameters.Add((new CommandParameter("Credential", credential)));

                    // Create command to get office 365 users.
                    Command getUserCommand = new Command("Get-MsolUser");

                    using (Runspace psRunSpace = RunspaceFactory.CreateRunspace(initialSession))
                    {
                        // Open runspace.
                        psRunSpace.Open();

                        //Iterate through each command and executes it.
                        foreach (var com in new Command[] { connectCommand, getUserCommand })
                        {
                            var pipe = psRunSpace.CreatePipeline();

                            pipe.Commands.Add(com);

                            // Execute command and generate results and errors (if any).
                            Collection<PSObject> results = pipe.Invoke();

                            var error = pipe.Error.ReadToEnd();

                            if (error.Count > 0 && com == connectCommand)
                            {
                                MessageBox.Show(error[0].ToString(), "Problem in login");
                                return null;
                            }
                            if (error.Count > 0 && com == getUserCommand)
                            {
                                MessageBox.Show(error[0].ToString(), "Problem in getting users");
                                return null;
                            }
                            else
                            {
                                userList = results;
                            }
                        }
                        // Close the runspace.
                        psRunSpace.Close();
                    }
                    return userList;
                }
                catch (Exception)
                {
                    throw;
                }
            }

    Como posso resolver esse problema, pessoal?

    Muito obrigado.

    Abraços,

    Ricardo.

    quinta-feira, 24 de setembro de 2015 17:22
  • Olá MachadoRicardo,

    Tudo bem?

    Você analisou seu código por completo para poder ter certeza de que não está chamando algo que você não criou?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ segunda-feira, 28 de setembro de 2015 14:35
    sexta-feira, 25 de setembro de 2015 18:57
  • Olá, Marcos Roberto.

    Sim, já analisei e fiz o debug. O código vai direto para a exceção, mas não sei o motivo pois no windows form funciona normalmente, só não funciona para o Web form.

    abraço,

    Ricardo.

    segunda-feira, 28 de setembro de 2015 14:21
  • Olá MachadoRicardo,

    Tudo bem?

    Por gentileza, poderia informar se esta thread refere-se ao mesmo problema que você está enfrentando?

    Obrigado.


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 1 de outubro de 2015 13:26
  • Olá, Marcos Roberto!

    Infelizmente não refere-se ao mesmo problema que eu estou enfrentando!

    Mas muito obrigado!

    abraços,

    Ricardo.

    quinta-feira, 8 de outubro de 2015 20:32
  • Olá MachadoRicardo,

    tudo bem?

    Já conseguiu resolver seu problema?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 23 de outubro de 2015 13:03
  • Olá MachadoRicardo,

    Conseguiu encontrar uma solução para o problema?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 23 de outubro de 2015 13:13
  • Olá, Marcos Roberto!

    Como não consegui fazer para Web-form, fiz a implementação para windows form mesmo e funcionou corretamente.

    Mas meu objetivo era fazer para Web-form. Mas muito obrigado.

    abraços,

    Ricardo.

    • Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 16:01
    terça-feira, 27 de outubro de 2015 10:52