2012-04-26 10 views
0

Итак, у меня возникла проблема с получением моей функции для создания собственных данных после второго запуска. В первый раз, когда я создаю команду GetUsers, при условии, что мое имя пользователя и пароль верны, он вернет arraylist с моими пользователями. Если я запустил его снова, независимо от того, какое имя пользователя или пароль я использую, он вернет тех же пользователей. Я уверен, что мой код довольно беспорядок, но я возился с ним, пытаясь его очистить.Почему не очистка Powershell?

Что касается небольшого фона, я считаю себя программистом-новичком, поэтому проблема очень хорошо может быть чем-то действительно основным.

Спасибо!

public ArrayList GetUsers(string user, string pass) 
     { 
      InitialSessionState iss = InitialSessionState.CreateDefault(); 

      iss.ImportPSModule(new[] { "MSOnline" }); 
      using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(iss)) 
      { 
       myRunSpace.Open(); 
       using (System.Management.Automation.PowerShell powershell = System.Management.Automation.PowerShell.Create()) 
       { 
        ArrayList available_users = new ArrayList(); 

        //create Powershell runspace 

        powershell.Runspace = myRunSpace; 

        Command connect = new Command("Connect-MsolService"); 
        System.Security.SecureString secureString = new System.Security.SecureString(); 
        string myPassword = pass; 
        foreach (char c in myPassword) 
         secureString.AppendChar(c); 

        connect.Parameters.Add("Credential", new PSCredential(user, secureString)); 
        powershell.Commands.AddCommand(connect); 

        Collection<PSObject> results = null; 
        results = powershell.Invoke(); 
        powershell.Commands.Clear(); 

        Command getuser = new Command("Get-MsolUser"); 
        powershell.Commands.AddCommand(getuser); 
        results = null; 

        powershell.Stop(); 

        results = powershell.Invoke(); 

        foreach (PSObject item in results) 
        { 
         string userprincipalname = item.Properties["UserPrincipalName"].Value as string; 
         available_users.Add(userprincipalname); 
        } 

        powershell.Dispose(); 
        myRunSpace.Dispose(); 

        powershell.Runspace.Dispose(); 
        powershell.Runspace.Close(); 
        myRunSpace.Close(); 
        return available_users; 
       } 
      } 
     } 
+0

любое окончательное решение с полным исходным кодом об этом? – Kiquenet

ответ

0

Вы пытались явно удалить или обнулить тип доступных_пользователей? Я не думаю, что это было бы необходимо, но ...