none
Buscar as licenças atribuídas aos usuários cadastrados usando o MSOnline e o Get-MsolUse no Web form 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."

    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 19:42