Hobby Chef
This is my first attempt to write a Powershell sample to my readers. In this sample we will give Send-As, Receive-As, ms-Exch-Store-Admin rights to an active directory user. We will be piping two commands here… Get-MailboxServer and the result will go to Add-AdPermission.
You may give same permissions using Exchange Power Shell Window
Here is the sample…
using System; using System.Collections.Generic; using System.Text; using System.Management.Automation.Runspaces; using System.Collections.ObjectModel; namespace PowershellSample { class Program { static void Main(string[] args) { RunspaceConfiguration config = RunspaceConfiguration.Create(); PSSnapInException warning; // Load Exchange PowerShell snap-in. config.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out warning); if (warning != null) throw warning; using (Runspace thisRunspace = RunspaceFactory.CreateRunspace(config)) { try { thisRunspace.Open(); using (Pipeline thisPipeline = thisRunspace.CreatePipeline()) { //Please change parameter values. Command cmdGetMailbox = new Command("Get-MailboxServer"); Command cmdAddAdPermission = new Command("Add-AdPermission"); cmdGetMailbox.Parameters.Add("Identity", @"MSGEX07"); cmdAddAdPermission.Parameters.Add("User", "UserA"); cmdAddAdPermission.Parameters.Add("AccessRights", new string[] { "GenericRead", "GenericWrite" }); cmdAddAdPermission.Parameters.Add("ExtendedRights", new string[] { "Send-As", "Receive-As", "ms-Exch-Store-Admin" }); thisPipeline.Commands.Add(cmdGetMailbox); thisPipeline.Commands.Add(cmdAddAdPermission); try { thisPipeline.Invoke(); } catch (Exception exx) { Console.Write("Error: " + exx.ToString()); } // Check for errors in the pipeline and throw an exception if necessary. if (thisPipeline.Error != null && thisPipeline.Error.Count > 0) { StringBuilder pipelineError = new StringBuilder(); pipelineError.AppendFormat("Error calling cmdLets..."); foreach (object item in thisPipeline.Error.ReadToEnd()) { pipelineError.AppendFormat("{0}\n", item.ToString()); } throw new Exception(pipelineError.ToString()); } } } finally { thisRunspace.Close(); } } } } }