Polecenia Exchange PowerShell przez C #
Używam C # do wysyłania poleceń PowerShell współdziałających z Exchange. Mam metodę zwanąinitconnection
który ustawia moje połączenie z Exchange.
Mam inną metodę, którą dzwonię po kliknięciu przycisku, który wyśle polecenie do PowerShell po nawiązaniu połączenia. Nie mogę jednak kontynuować utworzonego połączenia. Gdy próbuję uruchomić polecenie, mówi, że polecenie nie zostało znalezione. Więcej niż prawdopodobne, ponieważ nie ma cmdletów wymiany.
<code>Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.AddScript("Set-ExecutionPolicy Unrestricted -Scope process -Force;$password = ConvertTo-SecureString -AsPlainText -Force " + password + ";$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist " + username + ",$password;$LiveCred = Get-Credential -Credential $mycred; $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic –AllowRedirection; Import-PSSession $Session"); // pipeline.Commands.Add("Out-String"); pipeline.Invoke(); mpeAdd.Hide(); </code>
Jest to metoda łączenia, która tworzy połączenie.
<code>protected void Get_Mailboxes(object sender, EventArgs e) { PowerShell powershell = PowerShell.Create(); PSCommand command = new PSCommand(); command = new PSCommand(); command.AddCommand("Get-Mailbox"); powershell.Commands = command; powershell.Runspace = runspace; //Also it says runsapce doesn't exist in this context. Collection<PSObject> commandResults = powershell.Invoke(); StringBuilder sb = new StringBuilder(); ArrayList boxesarray = new ArrayList(); foreach (PSObject ps in commandResults) { boxesarray.Add(ps.Properties["Alias"].Value.ToString()); } boxes.DataSource = boxesarray; boxes.DataBind(); } </code>
To jest moja metoda, którą dzwonię, gdy klikam przycisk po utworzeniu połączenia, ale nie działa.